Introduction

  • The ForkList Instruction is the dynamic version of the JS7 - Fork-Join Instruction. Use of the ForkList Instruction with a JS7 - Agent Cluster is subject to the terms for clustering with the JS7 - License.
  • Technically it implements the Fork/Join operation, however, it allows a number of child orders and branches to be created dynamically in order to execute the same sequence of jobs on a number of Subagents: users can run the same jobs in parallel on a number of servers or containers operating Subagents. Use cases include for example to execute similar backup jobs on a larger number of servers.

    • The ForkList Instruction expects a Subagent Cluster to be assigned that can include any number of Subagents running on the same or different server nodes that execute the same jobs.
    • The ForkList Instruction is designed as a single branch when configuring the workflow with the Configuration View of the JOC Cockpit user interface. Depending on the number of Subagents provided with the assigned Subagent Cluster the Controller will dynamically create branches for each Subagent.

  • While child orders are running, the parent order waits for its child orders to be completed, i.e. to arrive at the Join Instruction. The parent order therefore is assigned the WAITING state, see JS7 - Order State Transitions.
  • A variant of this instruction is available with the JS7 - ForkList-Join Instruction for variable sets.

FEATURE AVAILABILITY STARTING FROM RELEASE 2.5.0

Workflow Instruction: ForkList

Static Assignment of Subagent Cluster

Download example (upload .json): pdfAgentClusterForkList.workflow.json

Assigning the Subagent Cluster to the ForkList Instruction

The workflow editor is used to add a ForkList Instruction as shown:

  • The ForkList Instruction is assigned a Subagent Cluster.
  • The ForkList Instruction includes a number of jobs that should be executed in parallel on all Subagents of the given Subagent Cluster.


Explanation:

  • The ForkList Instruction is assigned the Subagent Cluster active-active-all-agents from the AgentCluster001 cluster.
  • The jobs inside the ForkList Instruction are executed in parallel on all Subagents included with the active-active-all-agents Subagent Cluster.
    • Users are free to exempt individual jobs from being executed on Subagents of the cluster and instead to be executed for example on Standalone Agents. 

Assigning the Agent Cluster to a Job Instruction

Individual jobs inside the ForkList Instruction are assigned Subagents like this:

  • The Subagent Expression radio button is selected and the same AgentCluster001 cluster as for the ForkList Instruction is selected.
  • The Subagent Cluster ID Expression is specified: the $js7ForkListSubagentId variable is automatically available at run-time and holds the identification of the respective Subagent for execution of the job.


Explanation:

  • If the Subagent Cluster is modified later on to include fewer or more Subagents then this will be considered without modification of the jobs or workflow.

Dynamic Assignment of Subagent Cluster

The difference between dynamic and static assignment of the Subagent Cluster is about the fact that 

  • static assignment is performed by workflow configuration,
  • dynamic assignment is performed by order variables or workflow variables that are created on-the-fly or based on previous job results.

Download example (upload .json): pdfAgentClusterForkListVariable.workflow.json

Using a Workflow Variable to specify the Subagent Cluster

The example introduces two more levels of complexity:

  • The Subagent Cluster indicating the Subagents on which to execute jobs in parallel is dynamically specified from a workflow variable.
  • The ForkList Instruction is combined with a JS7 - Fork-Join Instruction that allows parallel execution of jobs with each Subagent.


Explanation:

  • The countries list variable specifies an array of elements holding the countryCode and countryName variables.
  • The subagent_cluster workflow variable is assigned a default value indicating the active-active-all-agents Subagent Cluster.
    • The default value can be overwritten by an order that specifies this variable.

Using a Subagent Expression to assign the Subagent Cluster to the ForkList Instruction

The workflow editor is used to add a ForkList Instruction as shown:

  • The ForkList Instruction is assigned a Subagent Expression.
    • This includes to select an Agent Cluster.
    • This includes to specify an expression, for this example the workflow variable $subagent_cluster, that carries the name of the Subagent Cluster.
  • The ForkList Instruction includes a number of jobs that should be executed in parallel on all Subagents of the given Subagent Cluster.

Using a Subagent Expression to assign the Subagent Cluster to the Job Instruction

The workflow editor is used to add a Job Instruction as shown:

  • The Job Instruction is assigned a Subagent Expression.
    • This includes to select an Agent Cluster.
    • This includes to specify an expression indicating the Subagent Cluster.

Delimitation

  • The ForkList Instruction requires a single job or other instruction to be used as the first node in the block instruction.
  • The JS7 - Fork-Join Instruction cannot be used as the first node within the ForkList Instruction. It can be used with any later node.

Error Handling

The same error handling applies as for the JS7 - ForkList-Join Instruction.

Resources


  • No labels