OPD Error Handler
Overview
An OPD Error handler is a customer-implemented component used to manage the plan development failure in the orchestrator. During the fulfillment process, the orchestrator always calls out to a plan development provider.
The plan development provider designs a plan from the order. If a plan cannot be designed, then the fulfillment process cannot proceed and, if the enableOpdErrorHandling
flag is true, the order might be referred to the OPD Error handler for manual intervention.
Specification
The OPD Error handler must conform to the following requirements to be a valid implementation:
-
Receive event messages on a JMS or REST queue.
-
Interpret the PreQualificationFailedRequest event and determine the best way to route the failed order for further processing.
-
Create and send a response event on a JMS or REST queue.
-
In the response event, specify
RetryOPD
orWithdraw
as the possible actions that the orchestrator can take in response to the error.Note: For an amendment request, onlywithdraw
action is supported.
The actions that can be specified are as follows:
-
RetryOPD: The OPD Error handler confirms that the order can be processed further. In this case, the orchestrator sends an order plan generation request to AOPD and moves the order to the OPD state.
-
Withdraw: The order is withdrawn from the orchestrator and not fulfilled. It is deleted from the engine and Transient Data Store.
The details of the OPD Error handler are left as a customer-specific implementation. An example of a handler can be the following:
-
Receive a PreQualificationFailedRequest event message on a JMS queue or REST by a BusinessWorks process.
-
BusinessWorks starts a process instance in a customer build implementation.
-
The TIBCO iProcess® process model creates a manual task and displays a form in a work queue for operations support. The form displays the order and the details of the failure.
-
Operations support reviews the task and chooses one of the following options:
-
Make changes to the order that ensure that the order passes plan development. The plan development must be retried.
-
Update configurations in back-end systems or product catalog that ensure that the order passes plan development. The plan development must be retried.
-
Determine whether the order is invalid and withdraw the order.
The task is completed.
-
-
TIBCO iProcess® then invokes a BusinessWorks service that creates the PreQualificationFailedReply event, populates the event with the appropriate information, and flags the response to
retryopd
orwithdraw
as appropriate. This event is then sent on a JMS or REST queue to the orchestrator. The TIBCO iProcess® procedure then ends. -
Orchestrator receives the PreQualificationFailedReply and processes it accordingly.
PreQualificationFailedRequest Event
The PreQualificationFailedRequest event is sent by the orchestrator in case the plan fails to generate. The event is received by the OPD Error handler for manual processing. It is an asynchronous event sent to a JMS or REST queue.
Event | Destination Type | Destination | Event Type |
---|---|---|---|
PreQualificationFailedRequest | POST (REST) | /v1/pqf | Asynchronous |
PreQualificationFailedRequest | JMS Queue | tibco.aff.orchestrator.provider.order.prequal.failed.request | Asynchronous |
PreQualificationFailedReply Event
PreQualificationFailedReply event is sent by the OPD Error handler as a response to the failed plan generation. Orchestrator receives the result and interprets it accordingly.
Event | Destination Type | Destination | Event Type |
---|---|---|---|
PreQualificationFailedReply | POST (REST) | /v1/preQualificationFailedReply | Synchronous |
PreQualificationFailedReply | JMS Queue | tibco.aff.orchestrator.provider.order.prequal.failed.reply | Asynchronous |
You can set the following properties in the ConfigValues_OrchService.JSON
file as per your requirements:
-
com.tibco.fom.orch.retryFailedOPD
: Flag to enable retry of failed OPD request. -
com.tibco.fom.orch.OPDRetries
: Retry count for failed OPD request. -
com.tibco.fom.orch.opdRetryInterval
: Interval in millisecond to wait before retrying failed OPD Request.