Trigger objects monitor event triggers that plug-ins define. For example, the vCenter Server 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.

About this task

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's 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. This 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 Orchestrator API.

Important:

You must define a timeout period for all triggers, otherwise the workflow can wait indefinitely.

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 an attribute or input parameter, such as a VC:Task object from a workflow or workflow element that starts or clones a virtual machine.

Procedure

  1. Drag a Scriptable Task element from the Generic menu into the schema of a workflow.

    One of the elements that precedes the Scriptable Task must generate a VC:Task object as its output parameter.

  2. Click the Edit icon (Edit icon) of the Scriptable task element in the workflow schema.
  3. Provide a name and description for the trigger in Info properties tab.
  4. Click the IN properties tab.
  5. Click the Bind to workflow parameter/attribute icon (Bind to a workflow parameter or attribute).

    The input parameter selection dialog box opens.

  6. Select or create an input parameter of the type VC:Task.

    This VC:Task object represents the time-consuming event that another workflow or element launches.

  7. (Optional) : Select or create an input parameter of the Number type to define a timeout period in seconds.
  8. Click the OUT properties tab.
  9. Click the Bind to workflow parameter/attribute icon (Bind to a workflow parameter or attribute).

    The output parameter selection dialog box opens.

  10. Create an output parameter with the following properties.
    1. Create the Name property with the value trigger.
    2. Create the Type property with the value Trigger.
    3. Click Create ATTRIBUTE with same name to create the attribute.
    4. Leave the value as Not set.
  11. Define any exception behavior in the Exceptions properties tab.
  12. Define a function to generate a Trigger object in the Scripting tab.

    For example, you could create a Trigger object by implementing the following JavaScript function.

    trigger = task.createEndOfTaskTrigger(timeout);

    The createEndOfTaskTrigger() method returns a Trigger object that monitors a VC:Task object named task.

  13. Click Close.
  14. Click Save at the bottom of the workflow editor.

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.