<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=OCUP_Activity_Diagram</id>
	<title>OCUP Activity Diagram - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=OCUP_Activity_Diagram"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=OCUP_Activity_Diagram&amp;action=history"/>
	<updated>2026-04-21T08:52:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://training-course-material.com/index.php?title=OCUP_Activity_Diagram&amp;diff=12160&amp;oldid=prev</id>
		<title>Filip Stachecki: /* Activity ⌘ */</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=OCUP_Activity_Diagram&amp;diff=12160&amp;oldid=prev"/>
		<updated>2013-08-20T15:09:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Activity ⌘&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Private]]&lt;br /&gt;
[[Category:OCUP]]&lt;br /&gt;
==Activity Diagram⌘==&lt;br /&gt;
*describe the workflow behavior of a system&lt;br /&gt;
*this diagram focuses on flows&lt;br /&gt;
===Activity, Action⌘===&lt;br /&gt;
[[File:ActivityAction.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Activity&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*describes a &amp;#039;&amp;#039;&amp;#039;sequence of actions&amp;#039;&amp;#039;&amp;#039; based on control models and object flow models&lt;br /&gt;
*contains edges and activity nodes (e.g. actions)&lt;br /&gt;
*represented by a rectangle with rounded corners&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Action&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* represents a &amp;#039;&amp;#039;&amp;#039;single step&amp;#039;&amp;#039;&amp;#039; within an activity, that is, one that is not further decomposed within the activity.&lt;br /&gt;
&lt;br /&gt;
===Activity ⌘===&lt;br /&gt;
[[File:ActivityNodeEdge.png]]&lt;br /&gt;
&lt;br /&gt;
Activity contains nodes and edges.&lt;br /&gt;
====Activity Node ⌘====&lt;br /&gt;
[[File:ActivityNodeMetamodel.png]]&lt;br /&gt;
&lt;br /&gt;
Subtypes of Activity Node&lt;br /&gt;
&lt;br /&gt;
[[File:ActivityNode.png]]&lt;br /&gt;
&lt;br /&gt;
====Activity Edge⌘====&lt;br /&gt;
[[File:ActivityEdge.png]]&lt;br /&gt;
* The edges of an activity&lt;br /&gt;
* Denoted by a straight line with an open arrowhead&lt;br /&gt;
=====Control Flow⌘=====&lt;br /&gt;
[[File:ActivityControlFlow.png]]&lt;br /&gt;
* A control flow is an edge that starts an activity node after the previous one is finished&lt;br /&gt;
=====Object Flow⌘=====&lt;br /&gt;
[[File:ObjectFlow.png|333px]] &amp;#039;&amp;#039;&amp;#039;OR&amp;#039;&amp;#039;&amp;#039; [[File:ObjectFlow2.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ObjectFlow3.png]]&lt;br /&gt;
* An object flow is an activity edge that can have objects or data passing along it&lt;br /&gt;
&lt;br /&gt;
===Objects⌘===&lt;br /&gt;
[[File:ActivityParameter.png]]&lt;br /&gt;
&lt;br /&gt;
*Incoming or outgoing objects are parameters&lt;br /&gt;
*Placed (as rectangles) on the border&lt;br /&gt;
[[File:ActionPin2.png]]&lt;br /&gt;
*Or as small rectangle, called a pin (&amp;#039;&amp;#039;&amp;#039;input&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;output&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
===Token⌘===&lt;br /&gt;
*The semantics of an activity is based on a token flow&lt;br /&gt;
*Control tokens and object tokens flow &amp;#039;&amp;#039;&amp;#039;between&amp;#039;&amp;#039;&amp;#039; nodes &amp;#039;&amp;#039;&amp;#039;over&amp;#039;&amp;#039;&amp;#039; edges&lt;br /&gt;
&lt;br /&gt;
===Activity Example⌘===&lt;br /&gt;
[[File:ActivityExample.png]]&lt;br /&gt;
&lt;br /&gt;
===Initial Node⌘===&lt;br /&gt;
[[File:ActivityInitialNode.png]]&lt;br /&gt;
&lt;br /&gt;
* It has outgoing edges but no incoming edges&lt;br /&gt;
* An activity may have more than one initial node&lt;br /&gt;
** Each generates a concurrent flow&lt;br /&gt;
* An initial node can have more than one outgoing edge&lt;br /&gt;
** Semantics: a control token at each outgoing edge&lt;br /&gt;
* Activity diagrams do not have to have initial nodes&lt;br /&gt;
* Notation: a filled circle&lt;br /&gt;
&lt;br /&gt;
===Final Node⌘===&lt;br /&gt;
[[File:ActivityFinalNode.png]]&lt;br /&gt;
&lt;br /&gt;
*An activity may have more than one activity final node&lt;br /&gt;
*The first one reached stops all flows in the activity&lt;br /&gt;
** Regardless of the number of tokens in activity&lt;br /&gt;
* At least one incoming edge and no outgoing edges&lt;br /&gt;
* If several incoming edges only one must carry a token&lt;br /&gt;
* Activity diagrams do not have to have final nodes&lt;br /&gt;
* Notation: a filled circle with an outer ring&lt;br /&gt;
&lt;br /&gt;
===Decision⌘===&lt;br /&gt;
[[File:ActivityDecision.png|350px]]&lt;br /&gt;
* is a control node that chooses between outgoing flows&lt;br /&gt;
* One incoming edge and several outgoing edges&lt;br /&gt;
* When a token is supplied guards on outgoing edges are evaluated&lt;br /&gt;
** Token goes to first true outgoing&lt;br /&gt;
* Notation: a rhombus&lt;br /&gt;
&lt;br /&gt;
====Decision Input⌘====&lt;br /&gt;
[[File:DecisionInput.png]]&lt;br /&gt;
&lt;br /&gt;
* A decision can also define a behavior&lt;br /&gt;
* Every token passed over the incoming edge is passed to the behavior before guards evaluated&lt;br /&gt;
* Result of the calculation accessed by the &amp;#039;&amp;#039;&amp;#039;guards&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Calculation doesn&amp;#039;t need to be repeated for each guard&lt;br /&gt;
* Notation: a note symbol with keyword  «decisionInput»&lt;br /&gt;
&lt;br /&gt;
====Decision Input Flow⌘====&lt;br /&gt;
[[File:DecisionInputFlow.png]]&lt;br /&gt;
&lt;br /&gt;
*An additional edge incoming to the decision node that provides a decision input value.&lt;br /&gt;
*Is a type of &amp;#039;&amp;#039;&amp;#039;ObjectFlow&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
===Merge⌘===&lt;br /&gt;
[[File:ActivityMerge.png|350px]]&lt;br /&gt;
* A merge node is a control node that brings together multiple alternate flows&lt;br /&gt;
**It is not used to synchronize concurrent flows&lt;br /&gt;
*Several incoming edges, one outgoing edge&lt;br /&gt;
*Nothing calculated, nothing expected&lt;br /&gt;
*Notation: an empty rhombus&lt;br /&gt;
&lt;br /&gt;
===Fork, Join⌘===&lt;br /&gt;
[[File:ActivityForkJoin.png|350px]]&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Fork&amp;#039;&amp;#039;&amp;#039; – one incoming edge and multiple outgoing edges&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Join&amp;#039;&amp;#039;&amp;#039; – multiple incoming edges and one outgoing edge&lt;br /&gt;
&lt;br /&gt;
===Implicit splitting⌘===&lt;br /&gt;
[[File:ImplicitSplitting.png]]&lt;br /&gt;
&lt;br /&gt;
Once action A terminates&lt;br /&gt;
* a control token is available at both outgoing edges&lt;br /&gt;
* actions B and C start concurrently&lt;br /&gt;
===Implicit synchronization⌘===&lt;br /&gt;
[[File:ImplicitSynchronization.png]]&lt;br /&gt;
&lt;br /&gt;
Action F doesn&amp;#039;t start until tokens are available at both incoming edges - actions D and E have to terminate&lt;br /&gt;
&lt;br /&gt;
===Implicit split/synchronization - object flow 1⌘===&lt;br /&gt;
[[File:ImplicitObjectFlow.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;AND&amp;#039;&amp;#039;&amp;#039; semantics for object flows&lt;br /&gt;
*Once action A terminates it provides two object nodes&lt;br /&gt;
*Action F doesn&amp;#039;t start until object tokens are available at both incoming edges - actions D and E have to terminate&lt;br /&gt;
&lt;br /&gt;
===Implicit split/synchronization - object flow 2⌘===&lt;br /&gt;
[[File:ObjectFlowORsemantics.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OR&amp;#039;&amp;#039;&amp;#039; semantics for object flows&lt;br /&gt;
*Once action A terminates it provides a single object&lt;br /&gt;
**Which edge the object will select is undefined&lt;br /&gt;
*Action F receives an object from both D and E&lt;br /&gt;
**It would be called twice&lt;br /&gt;
&lt;br /&gt;
===Questions⌘===&lt;br /&gt;
# What does an action represent?&lt;br /&gt;
# What are pins?&lt;br /&gt;
# What kinds of edge are there?&lt;br /&gt;
# What kinds of activity node are there?&lt;br /&gt;
# At which outgoing edges are tokens made available when an action terminates&lt;br /&gt;
# When does the OR semantics apply to object flow?&lt;br /&gt;
# How many incoming edges can an initial node have?&lt;br /&gt;
#What do several edges outgoing from one initial node signify?&lt;/div&gt;</summary>
		<author><name>Filip Stachecki</name></author>
	</entry>
</feed>