ecflow.Expression

class ecflow.Expression

Bases: instance

Expression holds trigger or complete expression. Also see 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:

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:

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’

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’

Expression.add((Expression)arg1, (PartExpression)arg2) None :

Add a part expression, the second and subsequent part expressions must have ‘and/or’ set

Expression.get_expression((Expression)arg1) str :

returns the complete expression as a string

property Expression.parts

Returns a list of PartExpression’s