从(流)端口到 UML activity 图的模型数据流
Model data flow from (flow) port to UML activity diagram
我正在从事的一个项目使用流端口来模拟 classes 之间的数据流。我们现在开始使用 activity 图和状态图对动态行为进行建模,并正在寻找一种方法来表示 activity 图中使用的数据已在特定端口上接收到。基本上,我们想在流端口和例如流端口之间创建一个连接器。 activity 参数节点。
我认为使用端口对数据流进行建模非常普遍,尤其是在系统工程中,并且应该有一些方法可以将数据 link 用于活动。我可以想到两种方法:
- 将端口连接到属性(或部分)并使用
ReadStructuralFeatureAction
获取值
- 将端口连接到 属性(或部分)并向 class 添加一个操作,用
CallOperation
调用
- 创建一个与端口同名的属性并提供一个使用
CallOperation
操作调用的操作
第一个方案可以,但是我们的建模工具Rhapsody 8.1好像不支持ReadStructuralFeatureAction
s。其他两种方法的缺点是端口与模型中的activity之间没有直接连接器,并且在视觉上不明显,所以我想有一个更好的选择。
我想知道是否有人知道实现此目标的更好方法,例如使用 SysML (1.3).
UML 和 SysML 中静态视图和动态视图之间的联系 "hidden" 在模型的不太明显的部分。我想原因是 UML 的设计者想把它们分开。所以没有图形或其他非常明确的连接。
相反,连接很自然,所以你可以使用它。示例是状态图或 activity 图中转换的警卫、触发器或操作。此 ReadStructuralFeatureAction 是通过直接使用静态元素隐式实现的。你可以直接在那里建模。因此它们出现在代表状态转换或控制流的边缘旁边。另一种方法是使用 Receive Actions 并将接收的 属性 设置为事件或触发的操作。通过使用发送操作,您可以在同一结构元素或其他元素中触发事件。在 Rhapsody 中这样做时,您需要指定目标端口和目标部分。
无论是在 UML/SysML 还是 Rhapsody 中,当您提供 Class/Block 的接口时,都没有预料到您想知道调用来自哪个端口或属性已更改。但是您可以通过使用完整的端口并实现预期的行为来实现这一点(这应该是独特的 - 否则不需要知道来源)。因此每个完整端口都有一个状态图或 activity 并传递内部信号或事件 class 的对象。对于从动作调用操作,有两种方法,一种更隐蔽的方法是仅从动作(或进入或离开时的状态)调用,另一种方法是使用调用操作更可见。
最近的 UML 或 SysML 版本更改了这些连接的可见性。因此,当更新到更高的 Rhapsody 版本时,这将发生显着变化;尽管我真的建议更新到最新的 Rhapsody 版本,因为它带来了更好的 sysML 支持、更少的错误、一些新功能和更好的可用性。
我正在从事的一个项目使用流端口来模拟 classes 之间的数据流。我们现在开始使用 activity 图和状态图对动态行为进行建模,并正在寻找一种方法来表示 activity 图中使用的数据已在特定端口上接收到。基本上,我们想在流端口和例如流端口之间创建一个连接器。 activity 参数节点。
我认为使用端口对数据流进行建模非常普遍,尤其是在系统工程中,并且应该有一些方法可以将数据 link 用于活动。我可以想到两种方法:
- 将端口连接到属性(或部分)并使用
ReadStructuralFeatureAction
获取值 - 将端口连接到 属性(或部分)并向 class 添加一个操作,用
CallOperation
调用
- 创建一个与端口同名的属性并提供一个使用
CallOperation
操作调用的操作
第一个方案可以,但是我们的建模工具Rhapsody 8.1好像不支持ReadStructuralFeatureAction
s。其他两种方法的缺点是端口与模型中的activity之间没有直接连接器,并且在视觉上不明显,所以我想有一个更好的选择。
我想知道是否有人知道实现此目标的更好方法,例如使用 SysML (1.3).
UML 和 SysML 中静态视图和动态视图之间的联系 "hidden" 在模型的不太明显的部分。我想原因是 UML 的设计者想把它们分开。所以没有图形或其他非常明确的连接。
相反,连接很自然,所以你可以使用它。示例是状态图或 activity 图中转换的警卫、触发器或操作。此 ReadStructuralFeatureAction 是通过直接使用静态元素隐式实现的。你可以直接在那里建模。因此它们出现在代表状态转换或控制流的边缘旁边。另一种方法是使用 Receive Actions 并将接收的 属性 设置为事件或触发的操作。通过使用发送操作,您可以在同一结构元素或其他元素中触发事件。在 Rhapsody 中这样做时,您需要指定目标端口和目标部分。
无论是在 UML/SysML 还是 Rhapsody 中,当您提供 Class/Block 的接口时,都没有预料到您想知道调用来自哪个端口或属性已更改。但是您可以通过使用完整的端口并实现预期的行为来实现这一点(这应该是独特的 - 否则不需要知道来源)。因此每个完整端口都有一个状态图或 activity 并传递内部信号或事件 class 的对象。对于从动作调用操作,有两种方法,一种更隐蔽的方法是仅从动作(或进入或离开时的状态)调用,另一种方法是使用调用操作更可见。
最近的 UML 或 SysML 版本更改了这些连接的可见性。因此,当更新到更高的 Rhapsody 版本时,这将发生显着变化;尽管我真的建议更新到最新的 Rhapsody 版本,因为它带来了更好的 sysML 支持、更少的错误、一些新功能和更好的可用性。