If you know that a workflow has to wait for a response from an outside source during its run, but do not know how long that wait is, you can implement it as a trigger-based long-running workflow. A trigger-based long-running workflow waits for a defined trigger event to occur before resuming.

You implement a workflow as a trigger-based long-running workflow by using the Waiting event element. When the trigger-based long-running workflow arrives at the Waiting event element, it stops its run and waits in a passive state until it receives a message from the trigger. During the waiting period, the passive workflow does not consume a thread, but rather the long-running workflow element passes the workflow information to the single thread that monitors all long-running workflows in the server.

Prerequisites

  • Create a workflow.
  • Open the workflow for editing in the workflow editor.
  • Add some elements to the workflow schema.
  • Define a trigger event that is encapsulated in a Trigger object.

Procedure

  1. Drag a Waiting event element from the Generic menu in the left pane to the workflow schema, and place it where you want to suspend the workflow run.
    The scriptable task that declares the trigger must immediately precede the Waiting event element.
  2. Click the Waiting event element.
  3. Enter a name and description of the waiting event in the Details properties tab in the right pane.
  4. Click the Inputs tab.
    The trigger.ref parameter appears in the list of inputs.
  5. Click the Select variable text box to bind the input parameter to an appropriate Trigger object.
    The Trigger object represents a trigger event that another workflow or workflow element defines.
  6. Define any exception behavior in the Exception handling tab.
  7. Click Save and confirm your selection.

Results

You defined a workflow element that suspends a trigger-based long-running workflow, that waits for a specific trigger event before restarting.

What to do next

You can run a workflow.