What is the difference between Join and Merge in Unified Modeling Language Activity Diagram. Give an example to understand more clearly.
相关问题
- System sequence diagram - Can system request input
- Does Visual Studio 2010 Professional support UML m
- Can a [GoF]-ConcreteSubject override the notify me
- How to represent enumeration classes with methods
- How to specify “one at a time” in UML?
相关文章
- Code Iris plugin on Android Studio
- Designing a sequence diagram for an auction system
- Game engine design choice [closed]
- state transition with different guard condition
- Resources for learning how to better read code
- Relationships in a UML class diagram
- How do you convert a document in UML 1.3 - XMI 1.1
- UML help C# Design Principles
To elaborate on @Gholamali-Irani's answer: Activity diagrams are derived from Petri nets. In short you have to imagine a single "token" that starts at the one initial start point (that fat dot). The token travels along a path until it vanishes in one of those (circled dot) final terminals (or as UML allows in actions which have no outgoing path). The fork nodes will multiply that single token into as many tokens as it has outgoing paths (UML also has an implicit fork for actions with multiple outgoing paths which are not guarded). So these multiple tokens travel independently until they either vanish like described above or they reach a join (or action) with multiple ingoing paths. Here the token waits until all paths are fed with a single token. These multiple tokens are then merged into a single one which travels on as usual.
With this ruleset you can model any complex concurrent network.
Join Node (see reference 1):
Merge Node (see reference 2):
For example in below diagram:
A decision is used after a fork, the two flows coming out of the decision need to be merged into one before going to a join.
Why?: Otherwise, the join will wait for both flows.
So,
Activity 2
andActivity 3
are our alternate flows and only one of which will arrive. And they are not synchronize incoming.However, the
Concurrent_Activity
and result of decision betweenActivity 1
andActivity 2
(that merged into one output) are synchronize incoming concurrent flows. The join waits for both to perform and continue.