BPM "Fork" step question

Concerning  fork step : Here is the documentation :
You use a fork () when you want to continue a process in branches that are independent of each other, for example, to communicate with two systems that are independent of each other. The branches of the fork join in a union operator.
You can specify the required number of branches and then define whether the process must run through all branches, or just a particular number of branches. Furthermore, you can define an end condition for the fork (see also: Condition Editor).
As soon as a branch reaches the union operator at runtime, the system checks the following conditions in the specified order:
·        The process has run through the required number of branches
·        The specified end condition has returned true
The step is complete as soon as one of the conditions returns true.
I want to use it to do 3 different send process in parrallele with 3 different receivers.
Before Fork step I use a container to initialize varaiable count = 0
In each branch I do my send step and then a container that does count = count + 1
And finally I have defined my fork with following end conditions :
End condition : count = 3
Necessary branch : 3
But my BPM allways executes only one branch !!!
(Only one is in green in the graphical editor of monitoring for BPM)
Any idea ?
Do I use the right solution to do the following :
"You can specify the required number of branches and then define whether the process must run through all branches, or just a particular number of branches"

Hi Jean-Charles,
I agree with Michal. Is it really necessary to use a fork for different send steps.
The reason for your unexpected termination could be the condition. Each fork branch reaching the union operator checks here in this sequence:
Process has run through required branches (here: 3)
End condition is true (container = 3, you have the same container element for ALL branches? This should not work. You need one for each, I think.)
Step is complete as soon as ONE of the conditions return true.
So use three different container elements as counter and connect them in the end condition with AND.
Regards
Dirk
Message was edited by:
        Dirk Meinhard

Similar Messages

  • Fork Step in BPM scenario PI 7.1

    Hi All,
    I have a requirement where in i will have to collect 3 different messages coming from the source and then combine these 3 messages to a single message and sent it to Target System .
    To achieve this i came up with a BPM where in fork step was used and inside the fork step i added 3 branches with 3 receive steps to receive 3 different messages from the source .
    Problem i am facing here is , the source system might send all the 3 messages or it might send only 2 messages or 1 message as well depening on the scenario .
    So when we get only 2 messages frm the source system , fork step goes into waiting state since its waiting for the 3rd message also to come in . In this case i want the BPM to go ahead with 2 messages after a certain specified time (say 2 min) .
    I tried adding wait step, deadline branch . Nothing seems to be working .
    Please suggest what needs to be done here .
    Waiting for your inputs
    Regards
    Vinay P.

    Set Necessary Branches  to 1 in the Fork properties. Use the fork inside a block with time out. In timeout branch throw an exception. Define an exception branch for that exception. It should work..!!
    VJ

  • Isuue regarding Fork step in bpm

    Hi,
    I am doing a scenario, collecting different idoc types into a flat file using BPM.
    In the fork step while doing BPM , I am getting an error while adding more than two branches.
    The error is "Maximum limited value is 2".
    Please help me out.
    Thanks.

    Hi Sailatha,
    A fork step is used for parallel processing of a(single) message in N number of branches. For example, if you design a fork with 4 branches, each branch receives a msg and then the steps in each branch is carried out.
    Follow the below procedure:
    The fork by default comes with two branches when you first place it into your process. You need to insert another branch before it allows you to increase the max and so on.
    In ur case plz try to change the Default Value 2 which is in properties window to the no. of branches u desire.
    Regards,
    Vinod.

  • Fork Step in BPM

    Hi,
    When i am using more than one receive steps(each can start the process) in a fork then if i dont use the correlation it throws me a semantic error that "step does not use any correlation".
    according to me if i declare the necessary branches property in the fork step then the fork step will wait until that many branches completes, means it will proceed only after the branches receive the message.
    here i need not any correlation becuz the messages i am receiving are totally independent of each other.
    still it forces me to declare a dummy correlation.
    for what reason it is necessary?

    Hi
    A fork step is used for parallel processing of a(single) message in N number of branches. For example, if you design a fork with 4 branches, each branch receives a msg and then the steps in each branch is carried out.
    Follow the below procedure:
    The fork by default comes with two branches when you first place it into your process. You need to insert another branch before it allows you to increase the max and so on.
    Just check these links,
    http://help.sap.com/saphelp_nw04/helpdata/en/24/e2283f2bbad036e10000000a114084/content.htm
    Collecting and Bundling vendor records from different multiple interfaces (file system,Peoplesoft ) and sending to SAP-R/3 system.  part-1
    regards,
    Surya

  • Error with fork step in BPM

    Hey guys
    i m trying to collect three different IDoc's in a BPM and using fork for that,when i try to enter 3 in the Necessary branches property of Fork,its giving me and error sayin that maximum value permitted is 2.
    any idea why i m getting this error?
    thanx
    ahmad

    Hi,
    Are You the correlation
    This might Help you
    Fork and BPM
    Fork is not working - BPM
    Regards
    Agasthuri Doss

  • BPM Block step

    Hi everyone,
    In my scenario IDOC XI JDBC scenario I am using the BPM.
    My IDOC message type is Vendor master and needs to send to 4 Legacy systems.
    My BPM steps are:
    1)Receive step
    2)Transformation step.
    3)Fork step(4 branches).
    Inside the fork
    a)4 receiver determination steps.
    b)4 Send steps.
    My question is I need to monitor each and every step in BPM.
    So how many BLOCK steps can I have for my scenario?
    And in the BLOCK step properties can anyone explain me  what is Multiline element,Current Line element and End Condition?
    I have gone through the SAP BASIS BPM patterns in XI but it is very confusing for me.
    If any one can help me out that would be great and I appreciate your help.
    Thank you,
    Mili

    Hi Mili,
    imagine you have to a message that has a unknown number of order items. But your receiver wants to have messages separated by order items.
    Sample:
    You send a order IDOC from R/3 to your XI. The XI does not know how many order items are in the IDOC. So you do a transformation step. In this case a so called multi-mappping. the multi mapping splits your IDOC into several Messages.
    Imagine also that you BPM is generated coding! Now imagine a table (like in EXCEL) where these single messages (your order items) are. The multiline element is your excel.
    Now you want to send the EXCEL rows (=order items) step by step.
    So your send step has to take the actual message that should be processed.
    This is the SINGLE LINE.
    Take care: MULTILINE Container element and SINGLE Line Container element have to refer to the same message interface!
    But in your case you do not need a multi mapping as the number of receivers is known (=4).
    Also you do not need a end condition.
    You need only one send step!!!
    In Integration directory configure a receiver determination where your 4 receivers are!
    Also 4 interface determinations and 4 communication channels.
    One question:
    What do you mean by:
    >>>My question is I need to monitor each and every step in BPM.
    Thats all!
    Regards mario

  • ** Exception Throw in Fork Step - How to inform ?

    Hi Friends,
    Customer sends 2 IDoc DEBMAS, ADRMAS. The conditions is when both the IDocs is having the same customer no we need to send to the outside system.  (DEBMAS - E1KNA1M - KUNNR) equals to (ADRMAS - E1ADRMAS - OBJ_ID).
    I have designed BPM for this : Start --> Fork Step --> 2 Receive Step --> Correlation mentioned in 2 receive step --> Next Block --> Fork --> Transformation Step & Send Step (Two sets : 1 is for DEBMAS & 2nd is for ADRMAS)
    I have checked the design. It is semantcially correct. But, I have the following doubts.
    1) If no matching records found in first block (DEBMAS customer no is not equal to ADRMAS) how much time the fork will wait ?
    2) To effect this, 'Exception Branch' is inserted. After Fork which contains 2 receive steps, one control step is inserted to trigger an exception. Question here is, after how much time, this control step will trigger an exception
    3) What is the purpose of 'End Condition' Property in Fork Step ? Is it required.
    Could you kindly help me friends to clarify the above 3 points. If those clarified, my BPM will be complete.
    Thanking you.
    Kind regards,
    Jegathees P.

    >
    Jegatheeswaran Pitchaimuthu wrote:
    > Hi Friends,
    >
    > Customer sends 2 IDoc DEBMAS, ADRMAS. The conditions is when both the IDocs is having the same customer no we need to send to the outside system.  (DEBMAS - E1KNA1M - KUNNR) equals to (ADRMAS - E1ADRMAS - OBJ_ID).
    >
    > I have designed BPM for this : Start --> Fork Step --> 2 Receive Step --> Correlation mentioned in 2 receive step --> Next Block --> Fork --> Transformation Step & Send Step (Two sets : 1 is for DEBMAS & 2nd is for ADRMAS)
    >
    > I have checked the design. It is semantcially correct. But, I have the following doubts.
    >
    > 1) If no matching records found in first block (DEBMAS customer no is not equal to ADRMAS) how much time the fork will wait ?
    > 2) To effect this, 'Exception Branch' is inserted. After Fork which contains 2 receive steps, one control step is inserted to trigger an exception. Question here is, after how much time, this control step will trigger an exception
    > 3) What is the purpose of 'End Condition' Property in Fork Step ? Is it required.
    >
    > Could you kindly help me friends to clarify the above 3 points. If those clarified, my BPM will be complete.
    >
    > Thanking you.
    >
    > Kind regards,
    > Jegathees P.
    your design should be Fork with two receive steps and correlation should be the customer number field for both. This will ensure that only when the customer numbers are equal the BPM will process further.
    Now you need to handle the exception using a block step around the fork step. You can define a time of your choice until how long should the BPM process wait to receive the different idoc with the same customer num. If within the specified time it is not received then you can raise a exception, trigger alerts etc. as u need.

  • Fork Step problem

    Hi,
    I have a scenario in which my BPM expects two different idocs and uses a Multimapping Transformation step to merge it into one single file structure, that is N:1 mapping( 2Idocs ---> 1 File).I am using a Fork Step in which there are 2 recieve steps in order to recieve the two idocs and then a Transformation step and then a Send step.
    The problem is my BPM is waiting for both the IDOCS in order to complete the Fork and  get to the Transformation step, but in my case i want the transformation to happen if any of the two IDOCS is recieved.Is this possible..or is there anyother way to achieve this....I have Marked the start process for both the recieve steps....Wud appreciate ur thought on this.Thank You.

    > Hi,
    >
    > >>>>but in my case i want the transformation to
    > happen if any of the two IDOCS is recieved.Is this
    > possible
    >
    > so why do you need the fork if you want
    > only one idoc?
    >
    >
    > Regards,
    > michal
    > -
    > <a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI /
    > PI FAQ - Frequently Asked Questions</b></a>
    Hi Mike,
    Infact i am trying to derieve three different File structures from the Output of the Multi map(Which i havent mentioned...Sorry for that).
    If  the Transaction is R/3 generates these two idocs at a single shot then i would be generating Total of 3-final file structures which has fields from Both the idocs.
    Otherwise if the Transaction is used to generate only one IDOC (say IDOC1) the i would be generating only one file structure based on it.
    So the IDOC2 is optional It may or may not Occur.
    so my logic is something like this
    IDOC1               IDOC2
    Intermediate File Structure
    Check Condition (If IDOC2 is a reference of IDOC1)
    >IF Yes Generate Three Files
    >If No then generate Only one File based on IDOC1.
    Is this the right way to do it...need ur inputs.

  • Pitfallls of BPM - Individual Step Performance

    Hi Experts,
    I have some question regarding BPM steps.
    Pitfallls of BPM - Individual Step Performance
    can anyone guide me on this topic please?
    Thanx in advance.
    Regards,
    joel

    multiple recv node in fork
    if multiple recv step is waiting for a message from the same sender then only one recv step is processed at random. the remining rec steps are forced to wait.
    transformation step
    no value mapping within the transformation step
    Container Operation
    message cannot be changed with container operation

  • BPM Fork Processing without receiving all required messages

    Hi
    I  am developing a BPM which receives 5 different messages.
    I am putting a block with Local Correlation with Block Start = New Transaction and Block End = New Transaction.
    Inside this block, I am using Fork with Necessary Branches = 5  , using local correlation for each receive step with Use Correlation and Activate Correlation.
    When I am adding Receive Steps to Fork, there  is an extra branch getting added to the Fork. So now I have 5 Receive steps with Abstract Interfaces and one extra step without having anything. I couldn't figure out how to get rid of this extra step. I know there is way to get rid of this extra step in Fork...but not sure how
    Now, when I am testing, after receiving any 4 messages process is coming out of the Fork block and going to the next block.
    As in the next block I use all the 5 messages, I am getting error there.
    Can you please give your inputs what could cause this problem?
    How do we get rid of extra branch in Fork which we do not use..
    Thanks for your help in advance.
    Regads,
    Ramesh

    Hello  Ramesh,
    When you Drag-Drop any process step in the Fork, it will create a new branch and will sit inside that branch. If you want to put the step on some specific branch then Drag the process step and take it to the desired branch and only drop when [ ] appears on that branch. To insert new branch in fork you can use Right click on Fork->Insert->New Branch.
    Now for ur problem, you have set the necessary branches as 5, when u receive the 4 message(4 branches executed) and fifth branch(empty branch) will make total count to 5. Therefore, ur fork step will be executed and will not wait for the fifth msg.
    HTH,
    Regards,
    Sami.

  • End condition in FORK step

    HI Experts,
    I am working on BPM scenarios.Anybody plz explain about how end condition works in FORK step.
    Please provide examples for that end condition in FORK step.
    Regards,
    Bhuvan.

    Hi,
    Refer this links...
    http://help.sap.com/saphelp_nw04/helpdata/en/24/e2283f2bbad036e10000000a114084/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/77/0737133012b24b9d0a12c6df2b1054/content.htm
    /people/prasadbabu.nemalikanti3/blog/2006/02/24/collecting-and-bundling-vendor-records-from-different-multiple-interfaces-file-systempeoplesoft-and-sending-to-sap-r3-system-part-1
    Hope it helps..
    Thanks,
    Kumar.

  • Workflow error in fork step, process control, wait event

    I am using fork step in workflow which has 2 parallel branches. In 1st branch i have a user decision step followed by a task for posting PO document in case of approval. In the 2nd branch of fork step I have a wait step to wait for an event followed by the same task for posting document with a process control step after that in the end to cancel the workitem(workitem generated by user decision step in the 1st branch of fork). I created the event by using a custom BOR object.
    After the fork step is triggered, i have both a wait event running and workitem generated. When i raise the wait event from SWUE by entering the event, object key etc it works fine i.e., the workitem in the other branch is set of logically deleted and workflow ends.
    But if the wait event is triggered from the program i.e., using FM SWW_WI_CREATE_VIA_EVENT, both get an error message in workflow log(SWIA). The message is: Error when executing the binding between work item 000000XXXXXX and flow item 000000XXXXXX where workitem number is the workitem id of the posting document task and flow item id is the workflow parent id

    hi,
    message is self explanatory.
    Activate the event trace SWELS, then do the event with SWUE and within your program (als please use SAP_WAPI function modules).
    Now compare the 2 events in SWEL to see what the differences are .
    Kind regards, Rob Dielemans

  • Dynamic alert messages in BPM control step not getting created

    Hi All,
    in transaction ALRTCATDEF, i have specified dynamic text for my alert category...........
    in my BPM there are 3 control steps.....and i am using this alert category in all of my BPM 3 control steps..... but the alert messages in my 3 control steps are different.........But these alert messages(which i am giving in BPM) is not coming in the alert mail in alert inbox but it gives the common message in long text(which i gave in long text while defining the alert category)......
    <b>So can anybody suggest me why my BPM alert message is not coming in the alert generated by BPM control step in the alert inbox of runtime workbench.</b>
    Thanks,
    Rajeev Gupta

    Hi Rajeev,
    Please check if you have done the following steps:-
    check the dynamic text box available in alrtcatdef transaction, while creating the alert.
    In the bpm, create a variable of simple type in a container
    Included the container operation and the control step.
    For the container operation - give the right simple type variable container
    For the control step, specify the correct alert category (this should be the one for which the dynamic text is enabled)
    The alert message that you specify here should have text which will be seen when the alert raised
    *To capture the dynamic alert in the alert message, which is caught by the container step in the bpm....you will have to give the name of the simple type variable
    between two ampersands(&).
    "But these alert messages(which i am giving in BPM) is not coming in the alert mail in alert inbox but it gives the common message in long text(which i gave in long text while defining the alert category)......"
    On checking the dynamic text option in the alert category defined, you will not have the option of giving a message in the long text. So, there is no way that the long text can be seen - 'cuz you are not defining it in the first place! Hence, either you have given the wrong alert category in the bpm or have not cheked the dynamic text option.
    Regards,
    Sushumna

  • BPM Wait step!

    Friends,
    I have BPM which has the FOR-EACH Block in it. After the first message processed I have to wait for atleast 5 seconds to process the next message in FOR-EACH Block. The default BPM wait step has minimum of 1 Minute. Is there any other way we can make to wait for x seconds?
    Please let me know!
    Thanks,
    raj.

    The minimum BPM-wait duration is 1 min and cannot be decreased below that....

  • Which driver to use in the BPM Configuration Steps?

    Hi,
    I´m in the BPM configuration steps and we will use BPM on a Weblogic Server, I´m in the step when you need to create to JDBC Data Sources for the Enterprise and Directory Databases, do you know which driver shoul I use? should it be XA o Non-XA?
    Thanx in Advanced!
    Kind Regards,
    Gerardo J

    Since there are no drivers, you can create your own, request one, use the Instrument I/O Assistant, or hope someone has one and posts it here. For help on creating one or requesting one, see the main Instrument Driver Network page. As long as you are familiar with the instrument and have the manual, creating a driver is not that hard.

Maybe you are looking for

  • OC4J:home is not coming up after deployment of war file(i.e demantra war)

    Hi, The oc4j:home services is not coming up in OracleAS 10.1.3.2 Middle Tier after deplyment of war file(j2sdk 1.4.2_10) I tried so many times bouncing but oc4j:home is not coming up. Below is the status. Please guide me and help me. D:\product\10.1.

  • Public folder not showing up as mail enabled, but it's receiving email.

    I've got several mail-enabled public folders that are showing up as not being mail-enabled in the public folder console, but are receiving email. If I run get-publicfolder -identity "\folder\name" | fl it shows that the folder is mail-enabled and all

  • Panel vs Cursor Coordinate​s

    I'm having a problem understanding the relationship between cursor position and front panel object positioning. I'm using the "get cursor position" vi to give me the coordinates on a 1024x768 monitor. But, when I plug those numbers into the "position

  • [SOLVED] GNOME + play icon has changed

    After the latest gnome updates (gnome-icon-theme 3.2.1-1), i noticed my play button (in my uber-cool Goggles Music Manager) looked funny. The  play icon (shaped like an arrow) used to always point to the right, it now has changed directions and point

  • Update query returning in ResultSet

    Hi all, I have the following UPDATE SQL. begin update orders set price = price * 1.1 where origin = 'KY' returning product, price into ?, ?; end; Will the above SQL return the result in a ResultSet? If not, how do I make it return in a ResultSet? I'm