cancel
Showing results for 
Search instead for 
Did you mean: 

Direct Process / Data Store / Transaction Handling

08-23-2022 8:43 AM
DLange Participant
1906 views 5 comments Go to solution
0 Likes
SAP Managed Tags
Subscribe

Hello folks,

currently I am fighting with an strange / non predictive behavior of the CPI. We have already implemented following flow / logic:

1. iFlow which is triggered by HTTPs with some header parameters. With these infos from header iFlow decide which next iFlow will be called via "DirectProcess" adapter. Insight this 1. iFlow the current information / message will be written to an data storage. Transaction handling is set to "Required for JDBC"

2. A second iFlow will be called via "DirectProcess" Adapter. First step in this second iFlow is to read the data from the previous created data storage. I tried already "GET" and "SELECT". When data is accessed the data storage should be deleted. ("Delete on completion") Transaction handling is set to "Required for JDBC". At the end if this iFLow message will be send to an queue via JMS adapter.

When we are testing the iFlow we see now different strange behaviors:

1. The data storage will not get deleted from the second iFlow independent if "GET" or "SELECT" is used ("Delete on completion" is switched on)

2. As soon we want to test the whole flow a second time the second iFlow get stuck "in process" for around 6 min and then failed. This depends if the data storage is empty or not. If data storage is empty flow is working if data storage was already filled with some data from previous testing the flow stucks.

Hopefully someone have ideas what could cause this behavior and how to fix it.

Thanks

Best regards

DL

0 Likes

Accepted Solutions (1)

Accepted Solutions (1)

DLange
Participant
0 Likes

Hi Sriprasad,

yeah thats also a good hint to move this logic into local integration part. Maybe I will try it also if its working.

In the meanwhile I was able to come over the "problem".

In the HTTP trigger call we have two "custom" header values. The header with those values will be passed over to the next iFlow which will be called via "DirectProcess" Adapter. Therefore I am able to access those parameters in the second iFlow. Benefit I am not anymore depended from the data store logic from the CPI.

Thanks

Best regards

Dominik

Answers (3)

Answers (3)

DLange
Participant

Hi Sriprasad,

yeah thats also a good hint to move this logic into local integration part. Maybe I will try it also if its working.

In the meanwhile I was able to come over the "problem".

In the HTTP trigger call we have two "custom" header values. The header with those values will be passed over to the next iFlow which will be called via "DirectProcess" Adapter. Therefore I am able to access those parameters in the second iFlow. Benefit I am not anymore depended from the data store logic from the CPI.

Thanks

Best regards

Dominik

Sriprasadsbhat
Active Contributor
0 Likes

Hello Dominic,

Quick suggestion here.Can you try adding the data store related steps inside Local Integration Process( Not in main integration process ) and capture the behavior.

Regards,

Sriprasad Shivaram Bhat

daviddasilva
Active Contributor
0 Likes

Hi Dominik,

I have noticed similar strange behavior around the Data Store.

What I noticed is that the Data Store only saves the data when the iFlow run status is complete. So if in your first iFlow you save something to a Data Store but the last step of that iFlow is to call a 2nd iFlow via DirectProcess, then the Data Store will wait until the second iFlow is complete running before actually saving the data.

It's not intuitive the way that it works in my opinion. You may need to find a way to decouple the first and second iFlows.

Kind regards,

David

DLange
Participant
0 Likes

Hi David,

ok thanks for the hint but how should I decouple the iflows ? I have a generic HTTP trigger handler which is taking the HTTP call and should call the specific iFlow.

So two tasks / questions:

1. How can I trigger one iFlow from another without usage of "DirectProcess" Adapter?

2. Or how can I share / send information's from one iFlow to a second one without usage of data storage?

Thanks

Best regards

DL