Workflows have an internal hierarchical structure that constrain both flow of control and scope of variables. A Workflow (also called a Case or WFCase) contains a list of Workflow Activity. A Workflow Activity contains a list of Actions. A variable declared at the WFCase is visible to all Activity and Action elements. If a variable named ’color’ is declared at the WFCase level, and then again in an Action, there are effectively two different variables, such that changing the value of the ’color’ variable in the Action will not affect the value of the ’color’ variable from the WFCase. Workflow services are called from workflow actions. WorkflowServices provides a set of ’operations’ that are selected through the value of the ’op’ Argument. Each operation may have a different set of arguments, so the calling ’signature’ must match the service itself. The general form of a session workflow service action is shown in the following code example:
<Action class=’com.waveset.provision.WorkflowServices’> <Condition/> <Argument name=’op’ value=workflowServiceOp/> <Argument name=argname1> <expression>value1expression</expression> </Argument> <Argument name=argname2> <expression>value2expression</expression> </Argument> … <Argument name=argnameN> <expression>valueNexpression</expression> </Argument> </Action>
Each supported workflow services will have a variable number of required and optional arguments.