Workflow modifiers

Workflow modifiers define the behaviors of a workflow.

ConstructModifierDomainDescriptionDefault
Workflow  

Examples:

<Workflow  Limit="1" Live="1" Timeout="-1">...</Workflow>

<Workflow  Limit="5" Live="2" Timeout="PT3M">...</Workflow>

 
 Limit-1..nThe maximum number of workflow instances of the same model waiting at any given time (they are pre-created instances existing in the buffer)10
 Live-1..nThe maximum number of workflow instances of the same model allowed to run (in parallel) at the same time. (For example, a workflow receives inputs of X value and Y value and calculates X+Y=Z. When the first X and Y values are received, a workflow instance starts the process of calculation. While the calculation is taking 1 second to complete, a new set of X and Y values are received before the current instance is completed. Therefore a new workflow instance will start calculating X+Y from the new values. These two instances are running in parallel10
 Timeout-1..n

The period of time of inactivity after which a workflow instance is considered dead and removed from the buffer. Both XSD time period format and plain number of milliseconds are allowed.

Timeout = "-1" means the workflow will never time out.

PT1M
     
Task  

Examples:

<Task name="Main" while="true">...</Task>

 
 While

true, false

Logical expression for repeatable tasks (only true/false is currently supported) (if false use variable not streams)false
   

 

 

Invoke

  

Examples:

<Invoke name="InvokeSerialRead" waitFor="Argument" get="perif://">...</Invoke>

<Invoke name="SetState" Skipif="[%:[:AA:].State/no-value(Value):%]" WaitFor="ActionArgument" Delay="PT5S">...</Invoke>

 
 SkipIf (skip-if)true, false

A logical expression to skip the invoke execution (mutually exclusive with OnlyIf) - the output will be Null

<Invoke name="SetPreset" waitFor="Argument" skip-if="[%:[:AD:].Preset/no-value(Value):%]" delayAfter="PT5S"

   get="[%:[:AA:].URL.Value:%]/cgi-bin/decoder_control.cgi?[:UP:][%:amp:%]command=15[%:amp:%]sit=[%:[:AD:].Preset.Value:%]"/>
 
 OnlyIf (only-if)true, falseA logical expression to execute invoke conditionally (mutually exclusive with SkipIf) 
 DelayDuration

Synonym of DelayBefore (mutually exclusive with DelayUntil, Timeout)

<Invoke name="GetImage" waitFor="Argument" delay="PT1S"

     get="[%:[:AA:].URL.Value:%]/cgi-bin/video_snapshot.cgi?[:UP:]"/>
 
 DelayBeforeDurationInvoke execution delay interval (delay before invoke starts executing) - Mutually exclusive with Timeout and DelayUntil 
 DelayAfterDuration

Time to wait after invoke is completed before the next invoke in the same task starts

<Invoke name="SetPreset" waitFor="Argument" skip-if="[%:[:AD:].Preset/no-value(Value):%]" delayAfter="PT5S"

     get="[%:[:AA:].URL.Value:%]/cgi-bin/decoder_control.cgi?[:UP:][%:amp:%]command=15[%:amp:%]sit=[%:[:AD:].Preset.Value:%]"/>
 
 DelayUntilDateTimeAbsolute invoke execution time (Mutually exclusive with DelayBefore and Timeout) 
 WaitFor 

The output(s)/event(s) that will allow the Invoke to continue. Until the WaitFor is met, the Invoke will be suspended

<Invoke name="GetImage" waitFor="Argument" delay="PT1S"

     get="[%:[:AA:].URL.Value:%]/cgi-bin/video_snapshot.cgi?[:UP:]"/>
 
 Unless Usually used with delay. The output/event will terminate the delay and start the Invoke. This can be an event or the output from another task.