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.

<call name='Validation' target='ST 837 Validation' async='0' timeout='2' xpos='200' ypos='350' >
<request type='EnsLib.EDI.X12.Document>
<assign property="callrequestvalue="requestaction="set" />
</request>
<response type='CREPOS.TXNSET999>
<assign property="context.valStatusvalue="$$$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="callrequestvalue="requestaction="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.

  • 0
  • 0
  • 80
  • 0
  • 1

Answers

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.