Path

ez components / documentation / api reference / 2008.2.3 / workflow


eZ Components 2008.2.3

Workflow: ezcWorkflowNodeExclusiveChoice

[ Tutorial ] [ Theoretical background ] [ Class tree ] [ Element index ] [ ChangeLog ] [ Credits ]

Class: ezcWorkflowNodeExclusiveChoice

This node implements the Exclusive Choice workflow pattern. [source]
The Exclusive Choice workflow pattern defines multiple possible paths for the workflow of which exactly one is chosen based on the conditions set for the out nodes.
Incoming nodes: 1 Outgoing nodes: 2..*
This example displays how you can use an exclusive choice to select one of two possible branches depending on the workflow variable 'value' which is read using an input node.
 1.  <?php
 2.  $workflow new ezcWorkflow'Test' );
 3.  
 4.  // wait for input into the workflow variable value.
 5.   $input new ezcWorkflowNodeInputarray'value' => new ezcWorkflowConditionIsInt ) );
 6.  $workflow->startNode->addOutNode$input );
 7.  
 8.  // create the exclusive choice branching node
 9.   $choice new ezcWorkflowNodeExclusiveChoice;
10.  $intput->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->addConditionalOutNodenew ezcWorkflowConditionVariable'value',
17.                                                                   new ezcWorkflowConditionGreaterThan10 ) ),
18.                                 $branch1 );
19.  $choice->addConditionalOutNodenew ezcWorkflowConditionVariable'value',
20.                                                                   new ezcWorkflowConditionLessThan11 ) ),
21.                                 $branch2 );
22.  
23.  // Merge the two branches together and continue execution.
24.   $merge new ezcWorkflowNodeSimpleMerge();
25.  $merge->addInNode$branch1 );
26.  $merge->addInNode$branch2 );
27.  $merge->addOutNode$workflow->endNode );
28.  ?>

Parents

ezcWorkflowNode
   |
   --ezcWorkflowNodeBranch
      |
      --ezcWorkflowNodeConditionalBranch
         |
         --ezcWorkflowNodeExclusiveChoice

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.

Member Variables

protected integer $maxActivatedConditionalOutNodes = 1
Constraint: The maximum number of conditional outgoing nodes this node may activate. Set to false to disable this constraint.
protected integer $minActivatedConditionalOutNodes = 1
Constraint: The minimum number of conditional outgoing nodes this node has to activate. Set to false to disable this constraint.
protected integer $minConditionalOutNodes = 2
Constraint: The minimum number of conditional outgoing nodes this node has to have. Set to false to disable this constraint.

Inherited Member Variables

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

Inherited Methods

From ezcWorkflowNodeConditionalBranch :
public ezcWorkflowNode ezcWorkflowNodeConditionalBranch::addConditionalOutNode()
Adds the conditional outgoing node $outNode to this node with the condition $condition. Optionally, an $else node can be specified that is activated when the $condition evaluates to false.
public void ezcWorkflowNodeConditionalBranch::verify()
Checks this node's constraints.
From ezcWorkflowNodeBranch :
protected boolean ezcWorkflowNodeBranch::activateOutgoingNodes()
Activates this node's outgoing nodes.
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.
Last updated: Mon, 11 May 2009