BPL <call> element with async='False'
Hello, we have a couple of BPL processes. This works with a limited amount of messages but we run into issues when we process thousands of messages in a session. One BPL calls a Validation BPL process with async='False' and there is a response defined. The timeout is two seconds and that seems to be plenty of time for the validation process. I expected the calling process to wait for a response but that is not happening. The documentation says: A <call> element with async='False' and a <response> block defined suspends execution of its business process thread until the called operation completes.
<request type='EnsLib.EDI.X12.Document' >
<assign property="callrequest" value="request" action="set" />
</request>
<response type='CREPOS.TXNSET999' >
<assign property="context.valStatus" value="$$$ISOK(callresponse.valStatus)" action="set" />
</response>
</call>
<if name='Check VAL Status' condition='context.valStatus' xpos='200' ypos='450' xend='200' yend='700' >
<true>
<call name='Good Transaction Handling' target='837 Good ST' async='1' xpos='335' ypos='600' >
<request type='EnsLib.EDI.X12.Document' >
<assign property="callrequest" value="request" action="set" />
</request>
<response type='Ens.Response' />
</call>
</true>
</if>
The Good Transaction Handling gets called later after another message had already invoked the calling process again that was not suspended as expected.
Validation process is unable to process the message in 2 seconds. Probably because of the queue.
There are several ways to remedy that:
1. Increase timeout.
2. Make the call ASYNC.
3. Increase pool size for Validation process
4. Make validation process work faster.