uml - 具有多个初始节点的活动:是否必须启动所有节点才能开始活动?
问题描述
如果活动有一个初始节点和一个输入参数节点怎么办?活动是否可以在输入节点有可用对象之前开始?在来自https://de.wikipedia.org/wiki/Aktivit%C3%A4t_(UML)的示例中,“煮水 (Wasserkochen)”活动是否可以开始,而没有任何意大利面条可用?
解决方案
您的示例中的活动将在开始节点发出令牌后开始。意大利面条是否已经存在于对象节点是无关紧要的。仅当满足启动条件并且启动节点已发出令牌时,活动才会从第一个动作开始。只有这样,“Spaghetti einfüllen”动作才会等待意大利面条 - 或者如果已经存在则使用它们。
现在,为什么“Spaghetti einfüllen”动作会挂在不存在的意大利面上?简单地说,它有两个必须到达才能启动的令牌。一个是来自“Wasser kochen”,另一个是对象“Spaghetti [roh]”。只有当两者都存在时,动作才会开始。当然,如果只有意大利面,那么前一个动作“Wasser kochen”的第二个令牌也必须在那里。
您可以在 UML 2.5 第 441 页的第 16.3.2.1 段中阅读有关操作何时开始或不开始的所有血腥细节。
此外,正如@GeertBellekens 指出的那样,第 15.5.3.1 页有第 15.5.3.1 段。401 规定
在所有传入的 ControlFlow(如果有)都提供令牌之前,ExecutableNode 不应执行。也就是说,传入的控制流上有一个隐式连接。特定种类的 ExecutableNodes 可能有额外的先决条件,在节点可以执行之前必须满足这些先决条件。
推荐阅读
- javascript - 如何使用 expressJs 将 JS、CSS 和其他服务器端实用程序包含到 NodeJs 中的 HTML 页面中?
- python - 刮擦href不适用于python
- ios - 将坐标附加到 MapBox MGLPolyline
- python-3.x - 求素数的函数
- netsuite - SDF 部署错误:部分内容
- flutter - Dart 动画 MaterialApp 主屏幕
- ios - AutoLayout:需要 Y 位置或高度的约束(尝试使用具有动态高度内容的视图)
- angular - 如何在 angularListObservable 上使用异步
- java - 将 JSON 字符串从片段传递到适配器的问题
- javascript - ES6 groupBy、分区、排序对象列表