UML是否允许端口和活动参数之间的连接(委派)?

UML是否允许端口和活动参数之间的连接(委派)?,uml,activity-diagram,Uml,Activity Diagram,我发现了一个让我困惑的示例UML图: 我不确定这是否对应于UML2.4.1,因为我没有尝试过任何建模工具来创建连接。我查阅了规范,我认为连接是无效的UML2.4.1,因为活动参数节点不是ConnectableElement,但我不确定。然而,这个例子来自OMG对UMLMarte1.1概要文件的规范,它说 请注意,连接器的这种用法是不正确的 与UML的抽象语法兼容,因为属性和参数都是可连接的元素 在上图中,输入类型为活动参数节点,是对象节点的特殊类型,与Pin类似但不同。它与活动拥有的参数相关联

我发现了一个让我困惑的示例UML图:

我不确定这是否对应于UML2.4.1,因为我没有尝试过任何建模工具来创建连接。我查阅了规范,我认为连接是无效的UML2.4.1,因为活动参数节点不是ConnectableElement,但我不确定。然而,这个例子来自OMG对UMLMarte1.1概要文件的规范,它说

请注意,连接器的这种用法是不正确的 与UML的抽象语法兼容,因为属性和参数都是可连接的元素

在上图中,
输入
类型为
活动参数节点
,是
对象节点
的特殊类型,与
Pin
类似但不同。它与活动拥有的参数相关联:

图中的连接是委派连接器。从上面的层次结构可以看出,ActivityParameterNode不是可连接元素,因此我认为UML MARTE规范中的语句是错误的

此连接是否为有效的UML 2.4.1,且应得到UML建模工具的支持?

这不是有效的UML(既不是2.4.1也不是2.5或任何先前版本)。它将行为与静态设计相结合。类上的端口是允许附加接口的静态构造。相反,
ActivityParameterNode
用于建模“数据流”(它可以通过
ObjectFlow
发送或接收对象到
Action
s内部的
Pin
s)

这(可能;我的知识在这里是不够的)在MARTE是有效的。通过引入定义此语言结构的概要文件,可以使其在您的域中有效。最有可能的是,您可以将MARTE概要文件用于UML或其扩展,或者(如前所述)您可以自己创建一个概要文件


附言:我在Enterprise Architect中尝试过,它让我在两者之间创建了一个
依赖关系
信息流

我不知道它无效的原因是否是它混合了结构和行为,尽管我同意这是UML的要点。UML2.4.1。spec说“然而,它并不排除混合不同类型的图,就像结合结构和行为元素(例如,显示嵌套在内部结构中的状态机)时所做的那样。因此,不同类型图之间的边界没有严格执行。”参数节点也不是活动pin,但不是ConnectableElement。在关系图中混合元素是有效的。您可以(几乎)将任何元素放在任何图表中,如附录A所示。然而,上述内容与图表无关。这是一个结构性问题。UML明确说明了哪些元素之间允许使用哪些连接器以及它们的语义是什么。如果不是
Pin
还有什么其他的吗?还有,既然连接器注定比类更简单,那么
Port
Pin
之间的连接器是什么类型的呢?它是一个活动参数节点(以与Pin相同的方式概括ObjectNode)它和包含活动的参数对象有关联。但这仍然没有太大变化,因为参数不是可连接元素。规范说它是一个委托连接器。我在问题中添加了一张ActivityNodeParameter定义的图片,以显示这种类型。我认为MARTE规范中的陈述是错误的。