15.2.3 语义

活动

活动中一个活动节点的执行可能影响活动中其它活动节点的执行。这些边由ActivityEdges(活动边)来表示。一个活动节点对另一个的影响由经过这两个活动节点之间的活动边的tokens流来规定。

活动并不对tokens进行显式建模,但需要使用它们来描述活动的执行。一个对象token是一个值的容器,它流经ObjectFlow(对象流)边(一些对象tokens可以流经控制流边,由建模者来规定,参见15.4中的ObjectNode的isControlType)。不含值的对象token称为一个空(null)token。控制token影响活动节点的执行,但它们不携带数据,并且只流经ControlFlow(控制流)边。每个token都是不同的,即使它们包含相同的值。

活动边是有向的,tokens从源活动节点流向目标活动节点。然而,由源活动节点交付给活动边的tokens可能不会立即流经该边。tokens只有在该交付被活动边所接受时才能流动,这也得需要目标节点接受它们,这又有可能依赖于下游边和节点对相同tokens的级联交付的接受。如下所述,对象tokens应该只能被对象节点所接受,而控制tokens应该只能被可执行节点所接受(有一个建模者特定的例外,对象tokens可以被可执行节点接受,参见15.4中的ObjectNode的isControlType)。控制节点用于控制交付的路由以通过活动边网络,控制已接受tokens的流。

活动节点和活动边可以有名称,然而,在活动中,节点和边的名字不必唯一。这使得,举个例子,活动中类似的节点(对其它行为的多次调用)可以被赋予相同的名称。尽管活动是一个命名空间(行为是一个类,类是一个分类符,分类符是一个命名空间),并且命名空间的成员必须是可区分的(参见7.4),这条约束并不影响对活动中的顶点和边的命名,因为它们是活动拥有的元素(ownedElements),而非活动拥有的成员(ownedMembers)。

注意. 活动是类(参见13.2),可以拥有属性,例如该流程执行了多长时间、花费了多少;可以拥有规定对象链接的关联,例如执行者、执行完向谁汇报,或正在使用的资源;可以拥有管理实例执行的操作,例如启动、停止、终止,等等;以及可以拥有规定执行状态的状态机,例如已启动、已挂起,等等。Profiles可以包括带有标准类的类库以用作用户模型中活动的根类,提供商可以定义他们自己的库,或支持用户在活动类上定义特征。

results matching ""

    No results matching ""