16.11.3 语义

Structured Activity Nodes

SructuredActivityNode既是一个Action,也是一个ActivityGroup(参见16.6),其行为由其包含的ActivityNodes和ActivityEdges来决定。不同于其他类型的ActivityGroup,StructuredActivityNode拥有它所包含的ActivityNodes和ActivityEdges,因此一个节点或边只能由一个StructuredActivityNode所包含。StructuredActivityNodes可以被嵌套(作为一个StructuredActivityNode、Action,或ActivityNode),因此一个节点或边可以被一系列嵌套的StructuredActivityNodes所间接包含。

StructuredActivityNode还可以包括Variables的定义。除了(包括)在任意被包含的StructuredActivityNode或Activity中定义的Variables外,这些Variables只能被该StructuredActivityNode及其内嵌的StructuredActivityNodes中的VariableActions(参见16.9)来操作。当StructuredActivityNode开始执行时,它所有的Variables初始都是空的。

本小节所讨论的StructuredActivityNode不是任意特化类型的实例。特化类型StructuredActivityNodes的语义在后续的小节中(和16.12的ExpansionRegions)。

StructuredActivityNode的使能和开始执行遵循Action的一般规则(参见16.2.3)。只有包含它们的StructuredActivityNode开始执行时,其中的nodes才具备使能(包括InitialNodes和AcceptEventActions)。在这个点上,哪些nodes可以使能的决定方式与Activity开始执行时其中nodes的使能相同(参见15.2.3)。然后执行按照Activity模型的语义进行(15章中有介绍)。

StructuredActivityNode的InputPins可以是其中所包含的ActivityEdges的sources。这使得可以在这些InputPins上放置tokens,以用于StructuredActivityNode中的ActivityNodes。InputPins在StructuredActivityNode开始执行时向outgoing流提供tokens。

类似的,StructuredActivityNode的OutputPins可以是其中所包含的ActivityEdges的targets。这使得在StructuredActivityNode中产生的tokens可以作为输出。OutputPin按照ObjectNodes的一般性规则接受交付给它的tokens。

由StructuredActivityNode所包含的ActivityEdge的sourcetarget必须(直接或间接)包含在该StructuredActivityNode中或者是该StructuredActivityNode所拥有的一个Pin。

如果ActivityEdge的source在StructuredActivityNode内而target在外面,那么只有该StructuredActivityNode执行时,这个边才能使能。在StructuredActivityNode执行时,经由该边的(tokens)交付会立即扩散到StructuredActivityNode的外面,并有该边的target所处理,这遵循ActivityNodes的一般语义。

StructuredActivityNode遵照与Activity执行完成相同的规则来完成执行,包括通过ActivityFinalNode来终结执行(参见15.3.3)。然而,SturcturedActivityNode中包含的ActivityFinalNode只会立即终结直接包含它的StructuredActivityNode及其包含的内容,而不包含更加外层的Activity或StructuredActivityNodes。

当StructuredActivityNode完成执行时,其内部所有的执行都会终结,除了OutputPins上的tokens用于被提交给任何outgoing边外,内部所有的tokens都被销毁。在StructuredActivityNode执行过程中,OutputPins上的tokens可能会聚集,但它们只会在执行结束后被提交给outgoing边。没有持有任何tokens的OutputPins会向它们的outgoing边提交空tokens。

results matching ""

    No results matching ""