Zeta Components - high quality PHP components

Zeta Components Manual :: Docs For Class ezcWorkflowNodeSynchronizingMerge

Workflow::ezcWorkflowNodeSynchronizingMerge

Class ezcWorkflowNodeSynchronizingMerge

This node implements the Synchronizing Merge workflow pattern.

The Synchronizing Merge workflow pattern is to be used to synchronize multiple parallel threads of execution that are activated by a preceding Multi-Choice.

Incoming nodes: 2..* Outgoing nodes: 1

This example displays how you can use ezcWorkflowNodeMultiChoice to activate one or more branches depending on the input and how you can use a synchronizing merge to merge them together again. Execution will not contiue until all activated branches have been completed.

  1.  <?php
  2.  $workflow = new ezcWorkflow( 'Test' );
  3.  
  4.  // wait for input into the workflow variable value.
  5.  $input = new ezcWorkflowNodeInput( array( 'value' => new ezcWorkflowConditionIsInt ) );
  6.  $workflow->startNode->addOutNode( $input );
  7.  
  8.  // create the exclusive choice branching node
  9.  $choice = new ezcWorkflowNodeMultiChoice;
  10.  $input->addOutNode( $choice );
  11.  
  12.  $branch1 = ....; // create nodes for the first branch of execution here..
  13.  $branch2 = ....; // create nodes for the second branch of execution here..
  14.  
  15.  // add the outnodes and set the conditions on the exclusive choice
  16.  $choice->addConditionalOutNode( new ezcWorkflowConditionVariable( 'value',
  17.                                                                   new ezcWorkflowConditionGreaterThan( 1 ) ),
  18.                                 $branch1 );
  19.  $choice->addConditionalOutNode( new ezcWorkflowConditionVariable( 'value',
  20.                                                                   new ezcWorkflowConditionGreaterThan( 10 ) ),
  21.                                 $branch2 );
  22.  
  23.  // Merge the two branches together and continue execution.
  24.  $merge = new ezcWorkflowNodeSynchronizingMerge();
  25.  $merge->addInNode( $branch1 );
  26.  $merge->addInNode( $branch2 );
  27.  $merge->addOutNode( $workflow->endNode );
  28.  ?>

Source for this file: /Workflow/src/nodes/control_flow/synchronizing_merge.php

ezcWorkflowNode
   |
   --ezcWorkflowNodeMerge
      |
      --ezcWorkflowNodeSynchronization
         |
         --ezcWorkflowNodeSynchronizingMerge
Version:   //autogen//

Inherited Constants

From ezcWorkflowNode:
ezcWorkflowNode::WAITING_FOR_ACTIVATION    The node is waiting to be activated.
ezcWorkflowNode::WAITING_FOR_EXECUTION    The node is activated and waiting to be executed.

Inherited Member Variables

From ezcWorkflowNodeMerge
protected ezcWorkflowNodeMerge::$maxInNodes
protected ezcWorkflowNodeMerge::$minInNodes
protected ezcWorkflowNodeMerge::$state
From ezcWorkflowNode
protected ezcWorkflowNode::$activatedFrom
protected ezcWorkflowNode::$activationState
protected ezcWorkflowNode::$configuration
protected ezcWorkflowNode::$id
protected ezcWorkflowNode::$inNodes
protected ezcWorkflowNode::$internalCall
protected ezcWorkflowNode::$maxOutNodes
protected ezcWorkflowNode::$minOutNodes
protected ezcWorkflowNode::$numInNodes
protected ezcWorkflowNode::$numOutNodes
protected ezcWorkflowNode::$outNodes
protected ezcWorkflowNode::$threadId

Inherited Methods

From ezcWorkflowNodeMerge
protected boolean ezcWorkflowNodeMerge::doMerge()
Performs the merge by ending the incoming threads and activating the outgoing node.
protected void ezcWorkflowNodeMerge::prepareActivate()
Prepares this node for activation.
From ezcWorkflowNode
public ezcWorkflowNode ezcWorkflowNode::__construct()
Constructs a new node with the configuration $configuration.
public void ezcWorkflowNode::accept()
Reimplementation of accept() calls accept on all out nodes.
protected void ezcWorkflowNode::activateNode()
Convenience method for activating an (outgoing) node.
public ezcWorkflowNode ezcWorkflowNode::addInNode()
Adds a node to the incoming nodes of this node.
public ezcWorkflowNode ezcWorkflowNode::addOutNode()
Adds a node to the outgoing nodes of this node.
public mixed ezcWorkflowNode::getConfiguration()
Returns the configuration of this node.
public ezcWorkflowNode[] ezcWorkflowNode::getInNodes()
Returns the incoming nodes of this node.
public ezcWorkflowNode[] ezcWorkflowNode::getOutNodes()
Returns the outgoing nodes of this node.
public boolean ezcWorkflowNode::removeInNode()
Removes a node from the incoming nodes of this node.
public boolean ezcWorkflowNode::removeOutNode()
Removes a node from the outgoing nodes of this node.
public void ezcWorkflowNode::verify()
Checks this node's constraints.
Documentation generated by phpDocumentor 1.4.3