普适流自适应与面向服务的UML扩展技术解析
1 普适流内置上下文自适应
1.1 上下文处理程序
上下文处理程序与一个范围(包括流范围)相关联,它定义了一组上下文事件。每个上下文事件指定一个上下文条件(context - expr)和一个流片段(任何APFL活动),当相应的上下文条件被违反时,将执行该流片段。在主流程执行期间,会监控上下文条件,一旦其中一个条件被违反,就会执行对应的流片段。
上下文事件主要分为以下几种类型:
- 故障(fault) :当故障触发条件被违反时,处理过程如下:
1. 停止范围内所有活动。
2. 执行上下文处理程序中为该条件指定的流片段。
3. 该范围被视为未正常完成,且该执行不符合补偿条件。之后,正常流程可以从该范围的点继续执行。如果在流程级别发生这种情况,流程将正常完成,但不符合流程实例补偿条件。
- 阻塞事件(event - blocking) :当条件被违反时,范围的执行停止,执行上下文处理程序中指定的流片段,最后恢复范围的执行。
- 非阻塞事件(event) :范围的执行正常进行,上下文处理程序中指定的流片段并发执行。
1.2 上下文单选和跨上下文链接
1.2.1 上下文单选(Contextual One - of)
上下文单选允许在设计时指定一组替代流片段,每个片段处理特定上下文中的流执行,并允许在运行时,当上下文发生变化或对上下文的假设被证明错误时,从一个流片段跳转到另一个流片段。