12.11 Guard

guard是一个可以链接到状态机中一条Transition的表达式。做为transition的guard的OCL表达式对该transition进行了限制。做为guard值的OCL表达式的类型是布尔。该表达式在transition要触发时计算。

guard在UML元模型中的位置如图12.5所示。如下的良构规则必须要满足。为了声明该规则,还定义了一些额外的操作。该规则还定义了上下文分类符的值。

图12.5 An OCL expression used as a Guard expression

12.11.1 良构规则

[1] guard所出现的状态机必须有一个上下文(A),它是ygie分类符(B)。上下文分类符是该状态机的属主,且该OCL表达式的类型必须是布尔。

context ExpressionInOcl
inv: not self.guard.transition.getStateMachine().context.oclIsUndefined() -- A
    and
    self.guard.transition.getStateMachine().context.oclIsKindOf(Classifier) -- B
            implies
        contextualClassifier = self.guard.transition.getStateMachine().context.oclAsType(Classifier)
        and
        self.bodyExpression.type.name = ‘Boolean’

[2] @pre不允许在guard中使用。

context ExpressionInOcl
inv: --

results matching ""

    No results matching ""