8.执行语义----cmmnV1.1

8.1Introduction

大多数执行语义是由重要CMMNElement实例的生命周期来描述的。特别是Task、Stage、Milestone、EventListener和CaseFileItem实例的生命周期描述了大部分的执行语义。除了生命周期之外,还有描述案例管理系统行为的行为属性规则。

这个子句首先描述与Case实例关联的整体语义。然后描述caseFileModel的语义,最后给出casePlanModel部分的语义。

8.2Case Instance

Case实例由caseFileModel表示的信息和casePlanModel表示的行为组成。此外,还有与期望参与Case的人类相对应的角色。

在创建Case实例时,caseFileModel、casePlanModel和caseRoles都被初始化。实现casePlanModel的Stage实例以Active状态开始执行(参见8.3),当Case实例不在Closed状态时,caseFileModel可以被修改,可以进行计划,并且人类参与者可以被分配到角色。

8.3 CaseFileItem Lifecycle

下图说明了CaseFileItem实例的生命周期。

CaseFileItem实例具有以下状态:

 CaseFileItem实例可以经历以下转换:

 

任务实例的输出可能会对指定为任务实例的输出CaseParameters的CaseFileItem实例产生影响。

8.3.1 CaseFileItem operations

任务实例的输出可能会对指定为任务实例的输出CaseParameters的CaseFileItem实例产生影响。为CaseFileItem实例定义了以下标准操作,以支持在CaseFile上导航

使用XPath作为表达式语言的实现(参见5.1.2)可能使用XPath扩展函数来实现这些操作 

 

8.4CasePlanModel Lifecycles

CMMN行为相关联的用例模型的结果相结合的业务构件的操作语义的变化管理基于guard-stage-milestone (GSM)概念与其他概念,如最值得注意的是,动态规划,应用有限状态机生命周期CaseFileItem, EventListener,里程碑、阶段和任务实例,以及所谓的行为属性规则的应用(参见8.6)。进一步的概括包括PlanItemDefinitions可能有多个同时发生的事件,以及里程碑与阶段的分离(在GSM中,每个里程碑都与一个阶段相关联,实现里程碑具有结束阶段的效果)。

阶段包含其他PlanItems(阶段、任务、里程碑和eventlistener)。本规范中使用的术语将Stage中的元素称为子元素,将容器Stage称为父元素。因此,Stage的子元素是包含在该Stage中的元素。元素的父元素是包含该元素的Stage。这个术语指的是单一级别的包容;第二个级别的遏制可以使用孙辈或祖父母来引用。例如一个舞台S1包含一个单级S2 T1本身包含一个任务,这个规范都会说S1的父母S2,和S2的父母T1, T1是S2的唯一的孩子,S1和S2的唯一的孩子。

这个子句描述了一些重要的CMMNElement实例的生命周期,包括Case和所有PlanItemDefinition派生类(Stage、Task、Milestone和EventListener)实例。

当我们讨论EventListener、Milestone、Stage或Task实例时,我们指的是来源于实例化PlanItemDefinition的实例,这个PlanItemDefinition引用自与相应的EventListener、Milestone、Stage或Task相关联的PlanItem或DiscretionaryItem。

在这些生命周期中使用了九种状态,它们在下表中进行了描述。

 就本规范的目的而言,半终端状态是一种从状态转换出来的状态,但在计算其父Stage实例的完成状态时,它被认为是终端。

 终端状态(关闭、完成和终止)和半终端状态(禁用和失败)用于计算其外围Stage实例的完成。半终结状态是一种过渡状态,但在计算其父Stage实例的完成状态时,它被认为是终结状态。

8.4.1Case Instance Lifecyle

8.4.2 Stage and Task Lifecycle

8.4.3 EventListener and Milestone Lifecycle

8.5Sentry

当使用多个输入条件(哨兵)时,只需要一个条件就可以触发Stage、Task或Milestone实例脱离可用状态。对于退出标准也是如此。当使用多个出口条件(哨兵)时,只需要一个条件就可以触发将Stage、Task或CasePlanModel实例从Active转换为Terminated。

哨兵的OnPart满足以下条件之一:

  • •对于PlanItemOnPart, sentryRef引用的Sentry已经发生。
  • •对于PlanItemOnPart或CaseFileItemOnPart,其sourceRef转换到由standarddevent (PlanItemTransition或CaseFileItemTransition)描述的转换。

满足以下条件之一,哨兵即满足:

  • •满足所有的OnParts,并且IfPart条件计算为TRUE。
  • •所有onpart都满足,没有IfPart。
  • •IfPart条件的计算结果为TRUE,并且没有OnParts。

当任务、阶段或里程碑处于可用状态时,进入标准岗哨被认为已准备好进行评估。当CasePlanModel、状态或任务处于活动状态时,出口标准岗哨被认为已准备好进行评估。当事件到达系统或事件由系统生成时,对哨兵进行评估。一个事件可以满足多个哨兵。没有OnPart的哨兵必须有一个IfPart,并且IfPart将对所有CaseFileItem事件进行计算,因为IfPart表达式是基于CaseFileItem属性的。

8.6Behavior Property Rule

动态计算的规则可用于派生可影响Case实例执行的布尔值。这些统称为行为财产规则。这些规则是:

  • 适用性规则(见5.4.9.3)
  • 阶段。自动完成(见5.4.8)
  • •ManualActivationRule(参见5.4.11.1)
  • •RequiredRule(参见5.4.11.2)
  • •RepetitionRule(参见5.4.11.3)

在这个子句中,我们考虑这些规则的语义是如何与EventListener、Milestone、Stage响应生命周期的转换相关的。任务实例。

8.6.1 Stage.autoComplete

下表描述了基于autoComplete属性的Stage实例的终止条件。

换句话说,如果用户不能选择进一步规划或使用Stage实例,那么Stage实例应该完成。

 

8.6.2 ManualActivationRule

ManualActivationRule决定Task或Stage实例应该移动到Enabled或Active状态。当满足Task或Stage实例的一个输入条件时,将评估并使用该规则。如果该规则的值为TRUE,则Task或Stage实例从Available转换为Enabled,否则从Available转换为Active。该规则影响处于“可用”状态的Stage或Task实例。

8.6.3 RequiredRule

RequiredRule确定具有此条件的里程碑、阶段或任务实例是否必须处于已完成、终止、失败或禁用状态,以便其父阶段实例转换为已完成状态。当里程碑、阶段或任务实例被实例化并转换为可用状态时,必须对该规则进行评估,并且在里程碑、阶段或任务实例的剩余生命周期中应该维护它们的布尔值。如果该规则不存在,则认为它为FALSE。如果该规则计算结果为TRUE,则父阶段实例必须不能转换为完成状态,除非该里程碑、阶段或任务实例处于完成、终止、失败或禁用状态。该规则影响状态为Available的Stage实例。

8.6.4 RepetitionRule

当里程碑、阶段或任务实例被实例化并转换到可用状态时,必须对该规则进行评估。当一个里程碑、阶段或任务实例第一次被实例化并转换到可用状态时,它不被认为是重复,但是必须对RepetitionRule进行评估并丢弃其结果。

使用RepetitionRule的Stage和Task实例将在每次满足OnPart的输入条件时尝试创建一个新实例。在这种情况下,重复执行规则被重新计算,如果表达式被计算为TRUE,则创建新的实例,因为条目条件满足,它将根据ManualActivationRule从Available状态移动到Active或Enabled状态。具有repeattionrule的Stage和Task实例没有任何输入条件,每次实例转换到Complete或Terminate状态时,都会尝试创建一个新的实例。在此条件下,将重新计算RepetitionRule,如果Expression的计算结果为TRUE,则创建一个新的实例

下面两个例子说明了repeattionrule在为TRUE时是如何工作的。

例1:任务B是可重复的,任务A是不可重复的,但是有一个哨兵依赖于B的一个标准事件。

 

在这种情况下任务B的第一个实例(在原计划)是被监视的OnPart(添加到计划同时比B)。重复规则评估当B是创建和维护产生的布尔值为当前的范围。所以,让我们假设它的值为TRUE,这意味着B在这个范围内是可重复的。

现在,B进入标准已经满足,最终B转换为Active。让我们假设B转换到A的OnPart正在等待的标准事件,因此A的哨兵被触发,A开始执行(假设进入标准阶段只有OnPart)。注意,在任何时候都可能创建B的第二个实例,因为B的入口条件第二次得到满足,我们称它为B'。假设B'立即转换为Enable或Active。同样,在任何时候B的进入标准第三次被满足,现在你有B”。让我们进一步假设,最终,B'和B'将转换为由任务A等待的标准事件。但是,注意任务A是不可重复的,因此对于B'或B'没有相应的A。在本例中,执行了三个任务B,但执行了一个任务a

在这种情况下,与前面类似,A依赖于B。A和B的重复规则是在进入范围并创建它们时计算的。请注意,如果B重复规则的值为TRUE,而A重复规则的值为FALSE,则会出现上述情况。但是让我们假设两个重复规则的值都为TRUE。

和之前一样,最终B转换的标准事件OnPart等待,随时,触发A B的进入标准满足一次,现在我们得到第二个B”,假设发生一次,所以我们得到第三个B”。最终B'和B"转换到A的OnPart正在等待的标准事件,在那一刻,A的入口条件再次得到满足,A的一个新实例被创建并转换到Enable或Active。我们称它为A',同样的情况也发生在A"在本例中,执行了三个任务B和A。

 

8.6.5 ApplicabilityRule

该规则被评估并用于规划。它影响HumanTask或Stage实例的规划。在规划过程中,必须向个案工作者显示(在授权的roleref中)的惟一酌情项是适用规则评估为TRUE的那些项。

8.7Planning

规划受限于Stage或HumanTask实例生命周期中的某些状态,如下表所示

如果一个Stage实例处于Active状态,那么计划完成后,计划的PlanItems将立即实例化。如果Stage实例处于另一种有效的规划状态,那么当Stage实例转换到Active状态时,已规划的PlanItems将被实例化。当一个Stage实例有一个规划表时,规划表中的TableItems可以用于规划。计划的结果实例必须添加到Stage实例。

 在特定HumanTask实例中进行计划的案例工作者被限制为使用该HumanTask实例的planingtable。计划的结果实例必须添加到HumanTask实例的父Stage实例。那些计划好的PlanFragments, Stages,或者Tasks在计划完成后立即被实例化(因为计划任务所在的父Stage实例处于Active状态)。

8.8Connector

连接器只是可选的可视元素,没有关联的执行语义。

备注:翻译过程借助有道同步完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值