Pause Orchestration Processes for Events

Use a pause task to temporarily stop an orchestration process from running so it can wait for an event to happen.

Here are some examples.

Wait for a Check Payment Event

Pause processing when a web service sends an event that requests a payment check.

rule that Pauses According to Event

Note

  • Assume the application sets paymentTermId to 1 when it requires the orchestration process to pause and makes sure you received payment from your customer.

  • Most orchestration processes process one fulfillment line at a time when they pause according to time or an event. If you pause according to time or event, then, to filter fulfillment lines, use one of these codes.

    Code

    Description

    Header.childFLines

    Reference the fulfillment line that the orchestration process is processing.

    Header.allFLinesInTheOrder

    References all fulfillment lines in the sales order that the orchestration process is processing.

  • Use isn't null. If your rule examines an attribute that doesn't contain a value, then your rule might fail with results you can't predict.

  • Use Assign. If you use Assert New, then the rule creates more than one instance, and it might fail with results you can't predict.

  • If you use Assign New for a rule in a pause rule set, then you must set priority for the Assign New rule to Highest, and make sure no other rule in the set is Highest.

  • For brevity, this screen print doesn't assign the result from the rules dictionary and to the header, but you must assign that result. For details, see the Assign the Result subtopic in Guidelines for Pausing Orchestration Processes.

Wait for Large Sales Orders to Finish Processing

Use SAC_SYSTEM_EVENT_IPC_PAUSE and set reevaluateFlag to Y to cause the rule to examine every orchestration process instance that's in a wait state for the sales order each time an orchestration process step finishes. Assume a sales order includes 100 fulfillment lines, and 75 of them are in a wait state according to SAC_SYSTEM_EVENT_IPC_PAUSE. The rule will reevaluate each of the 75 lines every time it runs.

If a sales order includes a large number of fulfillment lines, and if you must pause according to a dependency, then don't use SAC_SYSTEM_EVENT_IPC_PAUSE. Instead, set up a rule that uses SAC_TYPE_TIMER, and that examines all fulfillment lines but only after some time elapses. Specify an appropriate interval. For example, if you determine that most fulfillment lines on a large sales order ship within six hours, and you only need to invoice one time every 12 hours, then use an interval of eight hours.

rule that Pauses Large Sales Orders

Send Covered Items and Coverage Items to Invoicing

Send the covered item and the coverage item that covers the covered item to invoicing together. You typically ship the covered item but not the coverage item. For example, you ship the AS54888 Desktop Computer covered item but not the 2 Year Warranty, which is the coverage item for the AS54888, so you pause sending the warranty to billing until order fulfillment finishes shipping the AS54888.

  • Use this set up in an orchestration process that does billing for your coverages where one orchestration process instance processes the covered item and another instance processes the coverage item.

  • Add this pause task on an orchestration process step before the step that does the invoicing task.

  • This rule automatically releases the pause for the coverage item when fulfillment ships the covered item.

Send the covered item and the coverage item that covers the covered item to invoicing together.

Here's the Then statement.

Send the covered item and the coverage item that covers the covered item to invoicing together.