0 votes
1.1k views
in Interview Questions by (21.5k points)

1 Answer

0 votes
by (30.6k points)

An Intermediate Message Event (IME) is a BPD node that makes a running instance wait for a message - an external event delivered through an undercover agent (UCA) - and continue when it arrives, optionally receiving data from the message. It is the BPMN "catch message" event, placed in the sequence flow (the token waits there) or attached to an activity as a boundary event (interrupting or not).

How a message reaches it: the IME is bound to a UCA; the UCA is fired by an incoming event; the UCA's service produces the correlation value and the payload; the engine finds every instance whose IME is waiting with a matching correlation key and delivers the payload into the mapped variables.

Ways to trigger it (fire the UCA):

  • Another process or service: the Message end event / Message intermediate throw event of a BPD, or a service flow's Invoke UCA step, with the UCA's input parameters.
  • REST: POST /rest/bpm/wle/v1/process?action=sendMessage&message=<url-encoded eventmsg XML> - the way external systems and IIB / ACE trigger it.
  • JMS / MQ: an <eventmsg> XML text message on the BPM event queue (the inbound JMS integration), or an inbound integration bound to the UCA.
  • Scheduled: a UCA on a schedule (time-based UCA) - fires without a message.
  • JavaScript API in a server-side script (8.5.x): tw.system.invokeUCA("UCAName", parameters); on BAW the modelled steps above are preferred.
BPD "Order": [Send to supplier] -> ( IME "Supplier confirmed" : UCA = OrderConfirmedUCA, correlation orderId ) -> [Ship]
                                       \ timer boundary 3 days -> [Chase supplier]
UCA "OrderConfirmedUCA": input parameters orderId, status; service maps them to the event's output; correlation on orderId
Trigger: POST /rest/bpm/wle/v1/process?action=sendMessage&message=%3Ceventmsg%3E%3Cevent%20processApp%3D%22ORD%22%20ucaname%3D%22OrderConfirmedUCA%22%3E...%3C%2Feventmsg%3E

Options: Consume message (one instance consumes it or every matching instance receives it), Durable subscription (BAW 8.6+: keep a message that arrives before the instance reaches the event), and the correlation expression on the event's Correlation tab. A start event bound to a UCA is the same mechanism for starting instances.

References

Related questions

+1 vote
2 answers 6.6k views
+1 vote
1 answer 2.3k views
0 votes
1 answer 2.1k views
0 votes
1 answer 1.2k views
0 votes
1 answer 3.3k views
+1 vote
2 answers 7.5k views
0 votes
1 answer 2.4k views
0 votes
1 answer 1.4k views
0 votes
1 answer 2.0k views
0 votes
1 answer 3.4k views
0 votes
1 answer 2.1k views
0 votes
1 answer 1.9k views

723 questions

807 answers

98 comments

4.9k users

Join BPM Community Discord Channel

Welcome to BPM Tips Q&A, Community wiki/forum where you can ask questions and receive answers from other IBM BPM experts and members of the community. Users with 2000 points will automatically be promoted to expert level.
Created by Dosvak LLC
Our Youtube Channel
...