4.2

Table Of Contents
Developing Long-Running Workflows
A workflow in a waiting state consumes system resources because it constantly polls the object from which it
requires a response. If you know that a workflow will potentially wait for a long time before it receives the
response it requires, you can add long-running workflow elements to the workflow.
Every running workflow consumes a system thread. When a workflow reaches a long-running workflow
element, the long-running workflow element sets the workflow into a passive state. The long-running
workflow element then passes the workflow information to a single thread that polls the system for all long-
running workflow elements running in the server. Rather than each long-running workflow element constantly
attempting to retrieve information from the system, long-running workflow elements remain passive for a set
duration, while the long-running workflow thread polls the system on its behalf.
You set the duration of the wait in one of the following ways:
n
Set a timer, encapsulated in a Date object, that suspends the workflow until a certain time and date. You
implement long-running workflow elements that are based on a timer by including a Waiting Timer
element in the schema.
n
Define a trigger event, encapsulated in a Trigger object, that restarts the workflow after the trigger event
occurs. You implement long-running workflow elements that are based on a trigger by adding a Waiting
Event element or a User Interaction element in the schema.
Set a Relative Time and Date for Timer-Based Workflows
You can set the timer.date attribute of a Waiting Timer element to a relative time and date by binding it to a
Date object. You define the Date object in a scripted function.
When the time on the given date arrives, the long-running workflow that is based on a timer reactivates and
continues its run. For example, you can set the workflow to reactivate at midday on February 12. Alternatively,
you can create a workflow element that calculates and generates a relative Date object according to a function
that you define. For example, you can create a relative Date object that adds 24 hours to the current time.
Prerequisites
You created a workflow, opened it for editing in the workflow editor, and added some elements to the
workflow schema.
Procedure
1 Drag a Scriptable Task element from the Generic menu to the schema of a workflow, above the element
that requires the relative Date object for its timeout.date attribute.
2 Link the Scriptable Task element to the elements that precede and follow it in the workflow schema.
3 Click the Scriptable Task element to show its properties tabs in the bottom half of the Schema tab.
4 Provide a name and description for the scripted workflow element in the Info properties tab.
5 Right-click in the OUT properties tab, and select Bind to workflow parameter/attribute.
6 Click Create parameter/attribute in workflow to create a workflow attribute.
a Name the attribute timerDate.
b Select Date from the list of attribute types.
c Select Create workflow ATTRIBUTE with the same name.
d Leave the attribute value set to Not set, because a scripted function will provide this value.
e Click OK.
7 Click the Scripting tab for the scripted workflow element.
Developing with VMware vCenter Orchestrator
56 VMware, Inc.