To implement a trigger-based long-running workflow, first you define a trigger event that restarts the workflow, and then you bind the trigger event to a Waiting event element or a User interaction element in a workflow.
Create a trigger object
Trigger objects monitor event triggers that plug-ins define. For example, the vCenter plug-in defines these events as Task objects. When the task ends, the trigger sends a message to a waiting trigger-based long-running workflow element, to restart the workflow.
The time-consuming event for which a trigger-based long-running workflow waits must return a VC:Task object. For example, the startVM action to start a virtual machine returns a VC:Task object, so that subsequent elements in a workflow can monitor its progress. A trigger-based long-running workflow trigger event requires this VC:Task object as an input parameter.
You create a Trigger object in a JavaScript function in a Scriptable task element. The Scriptable task element can be part of the trigger-based long-running workflow that waits for the trigger event. Alternatively, it can be part of a different workflow that provides input parameters to the trigger-based long-running workflow. The trigger function must implement the createEndOfTaskTrigger() method from the Automation Orchestrator API.
Prerequisites
-
- Create a workflow.
- Open the workflow for editing in the workflow editor.
- Add some elements to the workflow schema.
- In the workflow, declare a VC:Task object as a variable or input parameter, such as a VC:Task object from a workflow or workflow element that starts or clones a virtual machine.
Procedure
Results
You defined a workflow element that creates a trigger event for a trigger-based long-running workflow. The trigger element generates a Trigger object as its output parameter, to which a Waiting Event element can bind.
What to do next
You must bind this trigger event to a Waiting Event element in a trigger-based long-running workflow.
Create a Trigger-Based Long-Running Workflow
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
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.