业务工作流引擎调度算法简析(一)

12年前

在工作流系统中,系统调度是核心,调度算法的生效程度和成熟性直接决定了工作流系统的可用性。本文章描述工作流如何推进和回退,并且描述在分之、合并、跳转等特殊情况下的流转规则处理。
 
基本概念
 
1.1 流程实例
 ?流程实例是根据流程定义所产生的,一个流程启动后自动产生一个流程实例;
 ?系统完成创建流程实例后,需要初始化流程实例(如:给流程全局变量赋值);
 ?流程实例创建并初始化完成后,流程迁移到流程启动节点上;
 
1.2 启动节点(Start-State)
 ?启动节点标识着一个流程的开始,一个流程实例包括一个或多个启动节点,本系统中只支持一个启动节点;
 ?启动节点没有前序节点,但拥有一个或多个后序节点;
 ?作为一个流程的开始,启动节点没有特定的凼义,只需要完成流程启动初始化操作(如:回调执行用户指定的流程创建过程的代码、回调执行用户指定的流程启动时的代码等等);
 ?当流程到达到启动节点以后,系统根据定义的规则(条件)寻找下一个活动节点(ESB节点),找到以后,自动迁移到活动节点上;
 
1.3 终止节点(End-State)
 ?终止节点标识着一个流程的结束,一个流程实例包括一个或多个终止节点,本系统可以支持多个终止节点;
 ?终止节点没有后序节点,但拥有一个或多个前序节;
 ?作为一个流程的结束,终止节点没有特定的凼义,只需要完成流程结束后的操作(如:回调执行用户指定的流程完成的代码、回调执行用户指定的流程归档的代码等等);
 ?流程终止后,系统自动归档流程实例并将其销毁(即流程处于非活动状态);
 
1.4 活动节点(Activety Node)
 
活动节点是流程中最主要的节点,也是最复杂的节点。系统执行到该节点时将根据规则定义产生任务项(Task Item),任务项是用户与工作流进行交换唯一途径。
 
在活动节点需要各种各样的规则,包括以下几个方面:
 
u 节点业务属性
 
? 业务功能定义,定义该节点所关联的业务
 
? 变量定义,包括本身节点变量定义和取公有变量节点定义
 
? 启动条件定义,定义该节点在什么条件下启动。
 
u 流程执行规则

? 执行者范围定义,定义该节点哪些部门或角色或个人可以执行。
 
? 是否可以终止,定义该节点是否可以终止流程。
 
? 生效条件定义,定义该节点执行生效表达式。
 
? 限时处理定义,定义该节点处理时限。
 
? 协作规则定义,定义该节点协作方式,包括任务分配方式、任务执行方式和任务抢占方式。
 
u 流程回退规则
 
? 能否回退标记,指示该节点是否可以执行回退操作
 
? 回退忽略标记,指示系统回退时,该节点是否忽略。
 
? 生效条件定义,定义该节点回退生效条件表达式。
 
? 回退模式定义,定义从该节点如何执行回退
 
? 回退环节定义,如果回退模式定义定义为指定环节,则需要定义回退环节。
 
? 回退确认标记,指示该节点回退时,是否需要进行提示。
 
u 流程合并规则
 
? 合并流程标记,指示该节点执行合并操作时,是否对流程进行合并。
 
? 生效条件定义,定义该节点合并生效条件表达式
 
u 流程跳转规则
 
? 生效条件定义,定义该节点跳转生效表达式
 
? 任务等待方式,定义跳转时,如何处理未完成任务的情况。
 
? 跳转条件定义,定义该节点在什么情况下进行跳转。
 
u 流程转发规则
 
? 能否转发定义,指示该节点是否可以执行转发操作。
 
? 转发范围定义,定义该节点可以转发给哪些人。
 
? 生效条件定义,定义该节点转发生效条件表达式。
 
? 转发确认标记,指示该节点转发时,是否需要进行提示
 
u 流程通知提醒规则
 
? 生效条件定义,定义该节点通知生效表达式
 
? 通知接收范围定义,定义该节点哪些人可以接收通知。
 
? 通知模式定义,定义何时进行通知。
 
? 通知内容定义,定义通知时发送的内容
 
1.5 条件节点(Condition Node)
 
条件节点用来用来定义流程流转条件,用来控制流程流转方向
 
条件节点需要定义以下内容:
 
u 条件表达式,用来计算条件值
 
1.6 事件节点(Event Node)
 
事件节点用来定义流程在流转过程进行外部交互的操作,如发送邮件、发送短信等等操作。
 
事件节点不需要用户介入操作,由系统自动完成,因此,也不需要生成工作任务项(Task Item)。
 
工作流系统提供抽象供用户实现事件节点逻辑,工作流在实例运行过程中,自动回调该接口完成操作。
 
事件节点需要定义以下内容:
 
u 生效条件定义,定义该节点有效条件,如果条件无效,则忽略该节点,自动流转到下一个节点。
 
1.7 子流程节点(Sub Process Node)
 
子流程节点用来用来定义在工作流程过程调用另外一个流程的功能,系统不在子流程产生定工作任务项(Task Item),但可以产生通知提示。
 
在子流程节点需要各种各样的规则,包括以下几个方面:
 
u 节点业务属性
 ?? 子流程定义,定义该节点所关联的子流程。
 ?? 变量定义,包括本身节点变量定义和取公有变量节点定义。
 ?? 业务数据定义,定义进入子流程的业务数据规则。
 ?? 生效条件定义,定义在什么情况下进入子流程。
 ?? 是否等待定义,定义执行子流程过程,主流程是否等待。
 ?? 限时处理定义,定义该子流程处理时限。
 
u 子流程回退规则
 ?? 能否回退标记,指示该子流程是否可以执行回退操作。
 ?? 回退忽略标记,指示系统回退时,该节点是否忽略。
 ?? 生效条件定义,定义该节点回退生效条件表达式。
 ?? 回退模式定义,定义从该节点如何执行回退。
 ?? 回退环节定义,如果回退模式定义定义为指定环节,则需要定义回退环节。
 ?? 回退确认标记,指示该节点回退时,是否需要进行提示。
 
1.8 外部系统调用节点
 
业务系统在运行过程中,需要与其它系统进行数据交换(即调用其它系统一些接口等),外部系统调用节点就是用来完成该项任务。
 
工作流系统提供一套抽象的业务接口,供工作流程开发人员实现,系统在运行该节点自动回调该接口,完成与其它系统交换的功能。
 
外部系统调用节点定义包括以下内容:
 ?u 回调接口定义,定义节点所关联的回调接口。
 ?u 变量定义,包括本身节点变量定义和取公有变量节点定义。
 ?u 业务数据定义,定义进入该节点的业务数据规则。
 ?u 生效条件定义,定义在什么情况下进入ESB。
 ?u 是否等待定义,定义执行ESB节点过程中,流程是否等待。
 ?u 限时处理定义,定义该ESB节点处理时限。
 ?u 回退条件定义,定义该节点回退生效条件表达式。
 ?u 能否回退标记,指示该子流程是否可以执行回退操作
 ?u 回退模式定义,定义从该节点如何执行回退
 ?u 回退环节定义,如果回退模式定义定义为指定环节,则需要定义回退环节。
 ?u 回退确认标记,指示该节点回退时,是否需要进行提示。
 ?u 回退忽略标记,指示系统回退时,该节点是否忽略。
 
1.9 分支条件节点(Split Node)
 
分支条件节点是业务流程定义过程中非常重要节点,用来控制流程流向。
 
分支条件节点有以下三种:
 ?与分支条件节点(AND Split Node):流程在流转过程中,只要符合条件的节点都需要流转。
 ?或分支条件节点(OR Split Node):流程在流转过程中,选择符合条件节点中的一个或多个节点进行流转。
 ?异或分支条件节点(XOR Split Node):流程在流转过程中,选择符合条件节点中一个进行流转。
 
分支条件节点不会产生工作任务项(Task Item),系统流转到该环节时自动处理,并流转到下个节点。
 
分支条件节点定义包括以下内容:
 ?u 条件定义(多个条件定义)
 ?? 条件表达式定义,定义如何来计算该条件
 ?? 条件满足时,下一个流程节点定义。
 
1.10 合并节点(Join Node)
 
合并节点是合并多个流入节点,控制任务流转。
 
合并节点不会产生工作任务项(Task Item),系统流转到该环节时自动处理,并流转到下个节点。
 
合并节点包括两种类型:
 1.与合并节点(AND Join Node):一直等到所有的流入节点完成任务,才流转到下一个节点。
 2.或合并节点(OR Join Node):不等待所有流入节点完成任务,任何一个流入节点都直接通过。
 
合并节点定义包括以下:
 
u 流程合并规则定义
 ?? 合并流程标记,指示该节点执行合并操作时,是否对流程进行合并。
 ?? 生效条件定义,定义该节点合并生效条件表达式
 
u 回退规则定义
 ?? 回退策略定义,定义回退时,是否取消未完成流入节点的任务。
 ?? 回退提醒定义,定义未完成流入节点的任务被取消时,是否提示客户。
 ?? 回退模式定义,定义从该节点如何执行回退
 ?? 回退环节定义,如果回退模式定义定义为指定环节,则需要定义回退环节。
 ?? 回退确认标记,指示该节点回退时,是否需要进行提示。
 ?? 回退忽略标记,指示系统回退时,该节点是否忽略。
 
1.11 逻辑节点(Logic Node)
 
逻辑节点是用来联合多个条件节点,以控制流程流向。
 
逻辑节点没有业务相关特性的定义,它包括多个流入条件(即:条件节点)和一个任务节点(包括:终止节点、活动节点、事件节点、子流程节点、外部系统调用节点)。
 
逻辑节点包括三种类型:
 ?与(AND):定义逻辑与的关系
 ?或(OR):定义逻辑或的关系
 ?异或(XOR):定义逻辑异或的关系