Execution unit population - modelint/xuml-populate GitHub Wiki

Execution Unit

This is where we start processing the Scrall parse of an Activity component.

It is parsed as an Execution_Unit_a named tuple and our first step is to figure out whether this is a single, stand alone statement or a group of staements that were in brackets.

process_method_statement_set(...)

We check the parse to see if we have a statement or a block of statements (these two choices are mutually exclusive).

Aos we initialize the boundary_actions to None. Not sure if we need this variable, but it represents the actions that begin and end a flow of data and control.

When a statement is broken down into one or more actions we will see certain actions that are inputs, they are immediately ready to run with available data and others as outputs. Output actions are fully downstream and run only when all updstream input has been produceds. Put differently, boundary actions exclude any intermediate actions that both consume and produce data or control somewhere in the middle of a statement.

It's an important distinction, but not clear if we care about it at this level of processing.

Assuming we have a single statement we go to populate it by invoking a method on the Statement class:

boundary_actions = Statement.populate(activity_data, single_statement)