cancel
Showing results for 
Search instead for 
Did you mean: 

BPM pros and cons

Former Member
0 Kudos

Hi All,

I would like to pros and cons of BPM.

Performance point of view,

and Maintenance point of view.

Please give me suggestion, <u>when should i use/avoid BPM?</u>

Thanking you in advance.

Regards

Piyush

Accepted Solutions (1)

Accepted Solutions (1)

bhavesh_kantilal
Active Contributor
0 Kudos

Hi Piyush,

Simple message processing on the Integration Server is stateless. This means that the Integration Server does not know of any connections between various messages.

BPM, on the other hand, describe related processes, which can use the knowledge about messages that have already been processed to further control the process.

As for performance is concerned with BPM, it is a very important issue to be taken into account. BPM is proccessor intensive and I have heard that it can lead to various problems like queue and cache.

Hope this info helps,

Regards,

Bhavesh

bhavesh_kantilal
Active Contributor
0 Kudos

Hi Piyush,

As for your question on when to use / avoid BPM, <b>AVOID BPM if you can devise a solution with out a BPM.</b>

Normally, as BPM can cause performance issues, I have seen thaty it is avoided as much as possible and used, only if someother solution is not possible.

Regards,

Bhavesh

Former Member
0 Kudos

Hi Bhavesh

Thanks for your prompt reply.

You want to say that use BPM when you need statefule message processing.

In my view if we have to implement sequence of process we should go for BPM. This can be implemented individually also. But we can change the functional flow(Enhancement) easily in BPM.

What is your opinoin?

Regards

Piyush

Message was edited by: Piyush Gangwal

bhavesh_kantilal
Active Contributor
0 Kudos

Hi Piyush,

By Stateful Message processing , what is meant is that having some connection between 2 messages which would normally not happen.

Without a BPM, every message that is sent to your Integration Engine / XI is treated to be stateless as it cannot be related to anyother message.

But like u told, a BPM can help you in using multiple mesages together from different systems in a sequence of procceses.

This info on Stateful messages is available on this link,

http://help.sap.com/saphelp_nw04/helpdata/en/14/80243b4a66ae0ce10000000a11402f/frameset.htm

Regards,

Bahvesh

Answers (6)

Answers (6)

STALANKI
Active Contributor
0 Kudos

type third party

Former Member
0 Kudos

Hi

Thank you guys for instant reply.

Regards

Piyush

Former Member
0 Kudos

Hi Bhavesh and sravya,

In last week i am busy with Htp to Jdbc scenario.

I likes the Bhavesh proposal for not using BPM.

I am very thankful to you.

But in siva's blog, he has mentioned the storing variables in global container.

And one more thing, i want to know that where is staging table maintained.

Regards

Piyush

bhavesh_kantilal
Active Contributor
0 Kudos

Hi Piyush,

Just use Siva's blog as a template. If your DB look up is returning multiple values, then you can use an advanced user defined function, or like he mentions in his blog, use global variables to store the result, so on and so forth.

/people/sap.user72/blog/2005/10/01/xi-new-features-in-sp14 this blog for Global Variables in SP14.

Regards,

Bhavesh

Former Member
0 Kudos

Hi Bhavesh,

-->you can use an advanced user defined function, or

Can i know the way with advanced user defined function?

Regards

Piyush

Former Member
0 Kudos

Hi Bhavesh,

I am succesful in retriving the data from DB and passed to R-3.

But in R-3 i am getting java.lang.outof memory Exception.

Do you have any idea about this?

Regards

Piyush

STALANKI
Active Contributor
0 Kudos

/people/saravanakumar.kuppusamy2/blog/2005/01/19/rdbms-system-integration-using-xi-30-jdbc-senderreceiver-adapter

good one and i guess it gives you a good design decisions.

STALANKI
Active Contributor
0 Kudos

Are you talking abt JDBC lookup or RFC lookup?Can you elobrate or amil me at sravya.talanki@wipro.com for understanding better.

Former Member
0 Kudos

Hi,

I want to pull the data from DB at particular time.

And i have to push the data into R-3 using RFC.

DB -


> XI -


> R-3.

I am planning to send the whole set of records in one shot. Can i do this?

If not then I have to use RFC lookup as Bhavesh suggested.

I have dropped a mail to sravya in the same regard.

Let me know if you don't get a mail.

Thanking you in advance.

Regards

Piyush

bhavesh_kantilal
Active Contributor
0 Kudos

Hi Piysuh,

Just to summarize what I have ubndertood of your scenario.

You do not want the JDBC adapter to be connected to your Database always and so , you will be using a DUMMY file, and when the file is picked up, you want to perfrom your DB look up and then perfrom an RFC call.

This can be implemented as follows without a BPM.

1. File Adapter to Receive File.

2. A mapping such that the DB lookup is perfromed in the mapping program ( user defined function or java mapping ), there is a <a href="/people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler">Blog</a> available on how to perfrom DB lookup in your mapping on SDN.

3. map the data picked from your datbase to your RFC request message and use an RFC receiver adapter.

Think this might help. Do let us know if you need any further help.

Regards,

Bhavesh

Former Member
0 Kudos

Hi Bhavesh

You understood the requirement perfectly.

Thank you for your suggestion.

One more thing, I have to define a technical system for DataBase. What type of TS should i define.

Regards

Piyush

bhavesh_kantilal
Active Contributor
0 Kudos

Hi Piyush,

ASFAIK, for your DB, I think a 3 rd party system would be sufficient.

Regards,

Bhavesh

STALANKI
Active Contributor
0 Kudos

Piyush,

I donot reccomend to go for the BPM.

Follow the solution that I proposed and get back to me at sravya.talanki@wipro.com if you need further clarifications.

Former Member
0 Kudos

Hi Bhavesh & Sravya

Thanks for the ssuggestions.

But i have not got your idea of using RFC lookup in this scenario. Please elaborate on the the part of RFC look up.

Regards

Piyush

bhavesh_kantilal
Active Contributor
0 Kudos

Hi Piyush,

You can perform your RFC lookup even withing your mapping program. Sravya's blog deals with one such scenario where she is calling an RFC inside her java mapping. What I meant was, if you are going to call an RFC repeatedly inside a loop in a BPM, it can cause performance issues and so, just explore the probability of making those RFC calls in your Java Mapping.

Regards,

Bhavesh

STALANKI
Active Contributor
0 Kudos

You do not require any BPM for your case.

Donot write user-defined functions as they are hard to mantain and that may not be accessible in different mapping programs.

Instead write a java program for doing JDBC lookup which takes the input parameters from userdefined function.

In doing this you acheive re-usbaility from any mapping program for performing JDBC lookups..

Ex:

java program

myJDBC.jar

Class myJdbc

{

int p1;

int p2[];

//logic for JDBC look up

}

import the archive in the SWCV.

userdefined function

import myJDBC.jar;

myJdbc JDBC;

JDBC.p1=A;

RESULT.ADDVALUE(P[]);

I have given just algo..use java syntax and build the same and you find it useful..

udo_martens
Active Contributor
0 Kudos

Hi Piyush,

you can use BPM for many reasons. Usually you control your message flow with BPM. If you have special requirement, like this message should go only with that condition and so on. Its a very powerful tool.

Unfortunately i had (obvisiosly not only me) some bad experience with BPM performance. For expecting a lot traffic i wouldn't recommend BPM if you have alternatives.

Regards,

Udo

Former Member
0 Kudos

Hi Udo

Thanks for your views.

>>>For expecting a lot traffic i wouldn't recommend BPM if you have alternatives.

could you brief this further? (traffic?)

Regards

Piyush

udo_martens
Active Contributor
0 Kudos

Hi Piyush,

difficult to say. Of course no SAP infomartions about that. 20 messages per minute shouldn't be a problem. It is depending on message size, mapping programs, complexity of your processes and of course on the hardware. I would recommend to setup test system (q-system) quite similar to p-system (same running system!, same release). Avoid nested loops! BPM runs in ABAP stack, mappings are executed in Java stack. For connection is destination 'AI_RUNTIME_JCOSERVER' used, which (sometimes) temporary break down because of less memory. The corresponding configuration in not easy to handle (Profile Parameter, Dialog Work Processes).

Regards,

Udo

Former Member
0 Kudos

Hi Udo & Bhavesh

Thanks for your inputs.

I have one doubt that user is going to give some inputs.

These inputs are going to be updated to DB.

Depending on the inputs we have to trigger some scenarios.

This thing i can do independently. I want to say that i can use JDBC sender and get the data and depending on the data i can decide which receiver service should be triggered(Receiver determination).

And one option is i can do it in BPM also.

What is your opinion what should i prefer?

All independent scenarios or single BPM.

Regards

Piyush

udo_martens
Active Contributor
0 Kudos

Hi Piyush,

if you only want to route the message by condition (payload content determines the receiver) i would do it without BPM. I m not shure that i understood ur scenario...

Regards,

Udo

bhavesh_kantilal
Active Contributor
0 Kudos

Hi Piyush,

Just to add to what Udo has told.

A JDBC sender adapter will pick up tghe rows in your table and on the basis of the input of your rows, you want to send it to another system.

I think this is possible using CONDITIONAL RECEIVER DETERMINATION. While doing your Receiver Determination, you have an option of entering multiple receivers and also specifying the condition on which the receivers are to be choosen.

Also, the condition has to be only on the incoming source payload as Receiver Determiantion occurs before Interface Mapping.

Regards,

Bhavesh

Former Member
0 Kudos

Hi Bhavesh and Udo,

You both are right that if i have to route the message depending on the input payload then conditional recievers will serve the purpose.

But in the scenario i am facing, i don't have condition in input content.

I will explain my scenario once again.

dummy file ---> JDBC lookup with the help of "BPM" or "user defined function" -


> RFC.

Whenever the dummy file is there perform the operation.dummy file is <b>"delete mode"</b>

In this case dummy input has dummy payload.

So we will get important data after JDBC look up.

Now its clear or not?

Regards

Piyush

bhavesh_kantilal
Active Contributor
0 Kudos

Hi Piyush,

If you want to use the JDBC adapter only after that DUMMY FILE is picked up, then you will have to go for a BPM.

But, I would sugggest that instead of looking into a solution with a Dummy File, You can use your JDBC Sender adapter Directly. <b>Just make sure that the SELECT query is such that the ROWS are selected only when you want them to de selected.</b> and you use you UPDATE statement to update the rows of your table.

You might also have to add an additional field like FLAG in your Database, but it would be better solution to look at than the one using a DUMMY FILE and a BPM.

The addition of a FLAG field can help you avoid complexities of a BPM and have a simple JDBC -RFC scenario.

Hope this helps,

Regards,

Bhavesh

Former Member
0 Kudos

Hi Bhavesh,

The main requirement is pull the data from JDBC on particular time.

I.e. scheduling an adapter. But right now we don't have such arrangement.

We can do it with the help of Poll Interval but it is not the better option.

One more criterion is, we can't change DB table.

So no way of flag.

And importantly we have to set the connection with DB for minimum times.

Regards

Piyush

bhavesh_kantilal
Active Contributor
0 Kudos

Hi Piyush,

In your case, I guess BPM is the only soultion :-).

I have one question for you to ponder over here piyush.

Will you make the call to an RFC withing a loop for every row that is returned by your JDBC adapter??

If yes, then I think performance can be a major issue here as loops are to be avoided as much possible in your BPM.

one more solution would be to perform your RFC lookups in Java Mapping. I think there is a<a href="/people/sravya.talanki2/blog/2005/12/21/use-this-crazy-piece-for-any-rfc-mapping-lookups written by Sravya that can be helpful for the same.

Regards,

Bhavesh