Parallel Execution of Expressions
Two expression robots that set the value of variables can be executed simultaneously within the same workflow process. This is called parallel execution of expressions.
The given workflow displays an example of parallel execution. The robot ExprRobot1 modifies the value of variable 1 and ExprRobot2 modifies the value of variable 2. If ExprRobot1 executes first, variable 1 receives the defined value. When ExprRobot2 executes, variable 2 receives the defined value and the workflow process ends.
In the example, if both the expression robots, ExprRobot1 and ExprRobot2, are set to modify the same variable, the changes made by the robot that executes first is overwritten.
The parallel execution workflow is configured such that only those local variable values that are modified by an expression are propagated to the process level variables. So, the value assigned by an expression to the variable is not overwritten unless that variable is explicitly modified by another expression.
|
This check is applicable only to the expressions within expression robots, routing expressions in sync robots, connectors, and while expressions in a block. It does not affect the behavior of expressions in activities where the Initialize From and Copy Into settings determine the local variables that should be propagated to the process level.
|
If you want the variable to be propagated to process level, irrespective of whether its value is modified or not, use the method setDirty(self,variable_name) in your expression. This method takes two variables: a reference to the containing process and the name of the variable to be propagated.
|
Only newly created workflow templates support parallel execution of expressions. For templates that were created in earlier versions of Windchill, you need to regenerate the expression files. To do so, delete old expression files from the path Windchill\codebase\wt\workflow\expr and click Check Syntax on the Expression tab of the appropriate expression robot in the workflow template.
|