Step | Description |
1 | Integration Server requests documents for the trigger from the messaging provider. |
2 | Integration Server receives documents for the trigger, including documentA and documentB. Both documentA and documentB have the same activation ID. |
3 | Integration Server places documentA and documentB in the trigger’s queue on Integration Server. |
4 | Integration Server pulls documentA from the trigger queue and evaluates the document against the conditions in the trigger. Integration Server determines that documentA satisfies an Only one (XOR) join condition. Integration Server moves documentA from trigger queue to the join manager. Integration Server starts the join time-out period. Note: If exactly-once processing is configured for the trigger, Integration Server first determines whether the document is a copy of one already processed by the trigger. Integration Server continues processing the document only if the document is new. |
5 | The join manager saves the state of the join for this activation in the ISInternal database. The state information includes a status of “complete”. |
6 | Integration Server completes the processing of documentA by executing the trigger service specified in the Only one (XOR) condition. |
7 | After the trigger service executes to completion (success or error), one of the following occurs: If the service executes successfully, Integration Server returns the server thread to the thread pool. If the documentA is guaranteed, Integration Server returns an acknowledgement to the messaging provider. Integration Server removes the copy of the document from the trigger queue. If a service exception occurs, the service ends in error and Integration Server rejects the document. If documentA is guaranteed, Integration Server returns an acknowledgement to the messaging provider. Integration Server removes the copy of the document from the trigger queue and sends the publisher an error document to indicate that an error has occurred. If the trigger service catches a transient error, wraps it, and re-throws it as an ISRuntimeException, Integration Server waits for the length of the retry interval and re-executes the service. If Integration Server reaches the maximum number of retries and the trigger service still fails because of a transient error, Integration Server treats the last failure as a service error. For more information about retrying a trigger service, see webMethods Service Development Help. Note: A transient error is an error that arises from a condition that might correct itself later, such as a network issue or an inability to connect to a database. |
8 | Integration Server pulls documentB from the trigger queue, and evaluates the document against the conditions in the trigger. Integration Server determines that documentB satisfies the Only one (XOR) join condition. Integration Server sends documentB from the trigger queue to the join manager. |
9 | The join manager determines that documentB has the same activation ID as documentA. Because the join time-out period has not elapsed, the Integration Server discards documentB. Integration Server returns an acknowledgement for documentB to the messaging provider. |