...
In TQL, each instance of a workflow (or process) can only be executed once. However, in many circumstances, you may want a workflow to be executed multiple times, for instance, the process to update an attribute value may needs to be repeated every time a sensor event comes in. Such "repeatable workflows" are represented as process streams where each process instance is a self-contained independent copy of the original workflow [definition] running with specific arguments.
Jira Legacy | ||||||
---|---|---|---|---|---|---|
|
Repeatable versus non-repeatable workflows
...
In such workflows, it is a good practice to have a Timeout modifier on the workflow.
...
title | unused notes |
---|
...
icon | false |
---|
Workflow instances run on top of pipelines, that is, they use pipelines to be instantiate, trigger or communicate. We call the pipeline that instantiate a workflow instance the originating pipeline. Based on the relationship between the workflow and its originating pipeline, workflow can be categorized into non-repeatable workflows and repeatable workflows.
...
.
Code Block | ||||
---|---|---|---|---|
| ||||
<ThingFacet Name="PhidgetRFID"> <Sid Name="RFIDId" /> <String Name="ReadTag" Update="auto" KnownBy="PhidgetReadRFIDTagAc" /> <String Name="WriteTag" KnownBy="PhidgetWriteRFIDTagAc" /> <String Name="RFIDURL" Default="phid://" /> <String Name="InterfaceType" /> <String Name="InterfaceIndex" /> <Unique Name="RFIDIndex" Value="InterfaceIndex" /> <DateTime Name="timestamp" Format="$SimpleDateFormat(yyyy-MM-dd'T'HH:mm:ss'Z')" /> <AA> [:#o#Output.ActionArgument:] </AA> <Action Name="PhidgetReadRFIDTagAc" Documentation="Read the Tag Automatically in the vicinity"> <Workflow Limit="1" Live="1" Timeout="-1"> <Task name="Main" while="true"> <Event name="Argument" as="ActionArgument" /> <Invoke name="ReadValue" waitFor="Argument" get="[%:Event.Argument.RFIDURL.Value:%]" SerialNumber="[%:Event.Argument.InterfaceIndex.Value:%]" DeviceType="[%:Event.Argument.InterfaceType.Value:%]" /> <Output name="Result" as="ActionResult"> <Value> <ReadTag> [%:[%:@Output:%]Invoke.ReadValue.Message.Value:%] </ReadTag> </Value> </Output> </Task> </Workflow> </Action> <Action Name="PhidgetWriteRFIDTagAc" Documentation="Write the Tag Value to RFID in the vicinity"> <Workflow Limit="1" Live="1" Timeout="-1"> <Task name="Main" while="true"> <Output name="ActionArgument" as="ActionArgument" /> <Invoke name="WriteValue" waitFor="ActionArgument" skip-if="[%:[:AA:].WriteTag/no-value(Value):%]" post="[%:[:AA:].RFIDURL.Value:%]" SerialNumber="[%:[:AA:].InterfaceIndex.Value:%]" SensorType="WriteTag" DeviceType="[%:[:AA:].InterfaceType.Value:%]"> <Message Type="text" Value="[%:[:AA:].WriteTag.Value:%]" /> </Invoke> <Output name="Result" as="ActionResult"> <Value> <WriteTag> [%:[%:@Output:%]Invoke.WriteValue.Message.Value:%] </WriteTag> </Value> </Output> </Task> </Workflow> </Action> </ThingFacet> |