cancel
Showing results for 
Search instead for 
Did you mean: 

How to make a BPM restartble at a specific point after error?

Former Member
0 Kudos

Hi,

I have a somewhat very simple question.

I have a BPM that works like this:

-


1. receive message A

2. transform message A to message B (using valuemapping)

3. switch with a condition determining if valuemapping was succesfull for all cases.

3.1. Branch 1

3.1.1. Send message B to R/3

3.2. Branch otherwise

3.2.1. Transform message B to errorMessage

3.2.2. Send errorMessage to R/3

-


This is all fine and works as intended.

Now what I would like is to somehow be able to "stop" the BPM after step 3.2.2. and somehow be able to reprocess the BPM starting from step 2..

The reason for this is that if the valuemapping was unsuccesfull it means a table needs to be updated. After updating the table it would be nice if the process could just be restarted and complete with success instead of having to send data through XI once again from sending system.

I've tried to experiment with exception handling in the BPM, but have not been successfull in finding a solution that works as intended.

Hope someone can help:-)

Best regards,

Daniel

Accepted Solutions (0)

Answers (4)

Answers (4)

Former Member
0 Kudos

Former Member
0 Kudos

Hi,

You got me correctly. Exception branch is just to come out of the block. So don't put any step in that. In control branch give the time for which you want to look for reference table updation. After that, raise exception. So that it will come out of the BPM if it will not found tables are getting updated in that time frame.

See if these things could help you out.

Regards,

Kavita Laddha

Former Member
0 Kudos

Hi again:-)

But this solution you speak of, seems to be not exactly what I look for, since it is still time dependant and I cannot restart the process at the specified point in the BPM afterwards - in the case where valuemapping was unsuccesfull. So I feaar we speak of different things now.

Best Regards,

Daniel

Former Member
0 Kudos

Hi Daniel,

If I have understood you correctly, You would like to reprocess message and try out value mapping(hoping that table is updated) but same time it should not be long time as we don't know when table will get updated. On the other hand if it is successful mapping you want to come out of BPM w/o any delays.

I this case, go one step ahead, after step 1, put one block with exception branch and control branch. In control branch define time for which you want to give try. After this put loop and then all other steps. Don't forget to raise exception if value mapping is successful, beacuse in this case you need to come out of block.

As you have mentioned you already tried exception... try it with control block and loop again. I hope it will work.

Regards,

Kavita

Former Member
0 Kudos

Hi Kavita,

What I want is this:

If valuemapping is unsuccesfull I want to send errorMessage to R/3. Afterwards the BPM should stop. At some point someone (or XI ifself) will try to reprocess the BPM. In this case the BPM should basically start from my previous step 2 (Transformation step with valuemapping) and then go through it all again.

I a litle unclear what exactly you want me to try - is it something like this you mean?: - but what exactly goes in the exception branch? The time part I guess can be left out in my case, since I just wanna stop right away - but still we the posibility of starting from valuemapping step when reprocessing the BPM after error.

1. receive message A

2. Block

2.1. Exception branch

2.2. Control branch

2.2.1. Loop

2.2.1.1. transform message A to message B (using valuemapping)

2.2.1.2. switch with a condition determining if valuemapping was succesfull for all cases.

2.2.1.2.1. Branch 1

2.2.1.2.1.1. Send message B to R/3

2.2.1.2.2. Branch otherwise

2.2.1.2.2.1. Transform message B to errorMessage

2.2.1.2.2.2. Send errorMessage to R/3

Best regards,

Daniel

Former Member
0 Kudos

Hi,

You can but put loop after step 1. In loop put the condition which will be satisfied if its a error message. So take one container variable and update it according to your successful/unsuccessful processing and use it in condition editor of loop.

Regards,

Kavita Laddha

Former Member
0 Kudos

Hi,

This is true - I have already thought of this solution, but in my specific case I condider it a bad one, since I don't know when business people have updated the table. This means I for an unknown amount of time will be "occupying" a dialog user in XI keeping the BPM alive.

Is there no other way?

Best Regards,

Daniel