1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
ecflow.Expression
/////////////////
.. py:class:: Expression
:module: ecflow
Bases: :py:class:`~Boost.Python.instance`
Expression holds :term:`trigger` or :term:`complete expression`. Also see :py:class:`ecflow.Trigger`
Expressions can contain references to events, meters, user variables,repeat variables and generated variables.
Expressions hold a list of part expressions. This allows us to split a large trigger or complete
expression into smaller ones.
Constructor::
Expression( expression )
string expression : This typically represents the complete expression
however part expression can still be added
Expression( part )
PartExpression part: The first part expression should have no 'and/or' set
Usage:
To add simple expression this class can be by passed, i.e. can use:
.. code-block:: python
task = Task('t1')
task.add_trigger( 't2 == active' )
task.add_complete( 't2 == complete' )
task = Task('t2')
task.add_trigger( 't1 == active' )
task.add_part_trigger( 't3 == active', True)
To store and add large expressions use a Expression with PartExpression:
.. code-block:: python
big_expr = Expression( PartExpression('t1 == complete or t4 == complete') )
big_expr.add( PartExpression('t5 == active',True) )
big_expr.add( PartExpression('t7 == active',False) )
task.add_trigger( big_expr)
In the example above the trigger for task is equivalent to
't1 == complete or t4 == complete and t5 == active or t7 == active'
.. code-block:: python
big_expr2 = Expression('t0 == complete'))
big_expr2.add( PartExpression('t1 == complete or t4 == complete',True) )
big_expr2.add( PartExpression('t5 == active',False) )
task2.add_trigger( big_expr2)
Here the trigger for task2 is equivalent to
't0 == complete and t1 == complete or t4 == complete or t5 == active'
.. py:method:: Expression.add( (Expression)arg1, (PartExpression)arg2) -> None :
:module: ecflow
Add a part expression, the second and subsequent part expressions must have 'and/or' set
.. py:method:: Expression.get_expression( (Expression)arg1) -> str :
:module: ecflow
returns the complete expression as a string
.. py:property:: Expression.parts
:module: ecflow
Returns a list of PartExpression's
|