The activity diagram (and the EFFBD, its cousin in traditional representations) are the most complete representations of behavior. Part of the behavioral (logical architecture) representation set, they unambiguously represent the flow of control through sequencing of activities and constructs as well as the data interactions overlaid to present a more complete picture.
The activity diagram is available for elements in the Function class (as well as any other subclasses of ProcessingUnit).
The similarities between activity diagrams and EFFBDs are not coincidental. Not only are they working to address the same fundamental need (a more comprehensive representation of behavior) but the EFFBD notation was used for both guidance and verification by the SysML team during the development of the activity diagram. The net result is closely coupled representations that you can select from to best meet your analytical and communication needs. Activity diagrams classically appeal to the software community given their representational similarity to UML. EFFBDs are often more understandable by customers, domain specialists, and end users.
When drawn horizontally, the flow of control is left to right. Rounded rectangles represent functions. Diamonds and bars represent control constructs - the building blocks of behavior. As an activity completes, flow of control proceeds along the branch lines to the next activity or control construct. Each construct has a precise definition that prescribes how control will be passed within the construct and when the construct itself will end. This combination is fully executable (not just animated) by COREsim.
CORE supports the standard hierarchical features of logical architectures. When the decomposition of an element has been specified, the icon representing that element has a decomposition symbol in the upper-right corner as a visual cue.
The rectangles on an activity diagram represent the items or the data interaction aspect of behavior. Whereas most behavioral representations focus on either the control or the data, the activity diagram and EFFBD represent both to provide full context and understanding. The activity diagram distinguishes between the two primary roles that items play:
![]() |
Trigger and Input? It is not necessary to connect an item to a function as both a trigger and a data store. It is implicitly understood that a trigger is also an input to the function. |
A function begins execution when it has received all of its triggers and its necessary resources have been acquired. If the flow of control has reached a function but either the triggers or resources are not available, the function is said to be enabled but waiting. Obviously, this has notable impacts in the sequencing and synchronization of behavior as well as the overall performance (how quickly the process completes) and whether or not it can complete at all due to live-locks and deadlocks.
![]() |
A good reference for further information on activity diagrams is chapter 9 of A Practical Guide to SysML: The Systems Modeling Language by Sanford Friedenthal, Alan Moore, and Rick Steiner (2012). |
In addition to the classic diagram options, the activity diagram settings include:
Show Data Nodes - controls whether data stores will be shown by default. In cases where there is a large amount of data flow, it can be helpful to hide data stores to focus attention on triggering data.
Use Compact Placement - controls the default spacing between branches on the diagram. If compact placement is enabled, no additional space is reserved for item nodes. For diagrams with a large number of data nodes, disabling compact placement will simplify diagram layout.
The constructs and key entities tabs allow you to quickly develop your activity diagram, while the all entities tab enables you to relate your diagram elements to the remainder of your system definition.
Constructs
New Node - drop onto a branch to insert a new activity (function) as part of the diagram decomposition (decomposed by)
Nodes - drop onto the diagram background to insert an existing activity (function) as part of the diagram decomposition (decomposed by)
Parallel - drop onto a branch to insert a new parallel construct (concurrency) with two branches
Select - drop onto a branch to insert a new select construct (exclusive OR) with two branches
Branch - drop onto a parallel or select construct to add a new branch as the last branch
Loop - drop onto a branch to insert a new loop construct
Loop Exit - drop onto the end of a branch within a loop construct to insert a new exit from the enclosing loop
Iterate - drop onto a branch to insert a new iterate construct
Replicate - drop onto a branch to insert a new replicate construct
Exit - drop onto the end of a branch to insert a new exit from this decomposition
Exit Condition - drop onto a function node to add an exit branch
New Input - drop onto any function node to create a new item that is input to the node
Inputs - drop onto any function node to relate an existing item that is input to the node
New Trigger - drop onto any function node to create a new item that triggers the node
Triggers - drop onto any function node to relate an existing item that triggers the node
New Output - drop onto any function node to create a new item that is output from the node
Outputs - drop onto any function node to relate an existing item that is output from the node
New Information Block - drop onto the diagram to insert an information block (a mini property sheet)
New Note - drop onto the diagram to insert a new note (descriptive text in a note icon)
New Shape - drop onto the diagram to insert a new shape (a rectangle, rounded rectangle, circle, or ellipse with text, if desired)
New Graphic - drop onto the diagram to insert a new picture
Key Entities
Exit - drop an existing exit onto a function node to assign the exit as an exit condition (exits by)
Function - drop an existing function onto the diagram background to it as part of the diagram decomposition (decomposed by)
Item - drop an existing item onto a function node to relate it to the node using the input to, triggers, or output from relation
All Entities - all classes and elements in the system model, allowing you to drag any element on top of a diagram node to establish relationships with the balance of your system model
Insert
Data
Open Element view submenu
Double-clicking on constructs is a shortcut for editing their specific properties. Double-clicking on a branch allows you to edit the branch annotation. Double-clicking on an iterate or a replicate allows you to specify the corresponding domain set. Control+double-clicking is a shortcut for adding a branch to a parallel or select construct.
To enter a multi-line annotation for a branch or a loop, specify line breaks with a single backslash "\". If a backslash is desired, enter a double backslash "\\".
When using commands to manipulate the diagram (or when double-clicking a construct on the palette for quick insertion), first select the branch to insert and the end of the branch. To insert before a construct, have the construct selected.
When using drag-drop to manipulate the diagram, dropping a node or construct on the background adds the object to the end of the main branch. Dropping it on a branch inserts at the specific position on the branch.
You can use drag-drop to quickly move nodes and constructs positions, reallocate to a different branch, etc. If using the right mouse button to drag-drop, simply select "move" when you drop the construct. If using the left mouse button, release the control key after you have started your drag operation. The plus sign indicating a copy operation will disappear and the drop will be a move operation instead.
Once you have established an item on a diagram as an input, output or trigger, you can drag-drop that item node onto a function node within the diagram to quickly establish your data relationships.
When rearranging icons on your diagram, arrange the function nodes first. Items are positioned relative to their corresponding functions, by default, so items may shift as functions are repositioned.
Nested logic is used when determining the color for a constructs. Therefore, setting the color scheme for a parallel construct affects all constructs within that construct that are set to use the default color scheme. This allows you to quickly apply color schemes to nested constructs.
The activity diagram does not traditionally lend itself to the use of graphical images in place of geometric icons. For this reason, you can achieve great impact if you selectively use images that reflect movement and motion to highlight a critical aspect.
By default, the function icon displays the component the function is allocated to as the bottom line. Maintaining this representation complements the logical architecture with the physical allocation.
While most users think of dragging objects from the palette onto the diagram, you can also drag objects from the diagram onto palette elements to establish relationships. This is particularly useful when allocating functions. Shift-click to select the functions of interest and then drop them onto the performing component on the All Entities tab to allocate several functions at once.