根据以上的机制可以发现每一流程模型可以在引擎内激活多个流程实例(参考流程激活控制章节,了解流程激活控制的细节),每个流程实例被ExEngine核心引擎独立运行,因此对每个流程实例的独立变更不会影响其他流程实例,也不会影响应用流程模型本身;
这一特征使得Extraction平台可以自由的随时随地的修改运行中的应用流程实例,而不用停止服务器,修改应用流程实例的同时即不会影响其他应用流程的运行,也不会影响后续激活的相同流程的运行;
流程实例的生命状态周期
对于一个流程实例而言,可能处于以下几种状态之一(任何时候,实例只能处于一个状态):
ACTIVITING(运行)
当流程实例被ExEngine核心引擎加载后即处于运行状态,运行中的流程实例,依据定义的规则依次执行相关的动作;即使不执行任何操作或处于等待中的实例也处于运行状态(比如,等待用户交互);
PAUSE(暂停)
当ExEngine核心引擎接收到暂停流程实例的指令后,引擎将更新流程实例状态,并注销该实例所注册的所有事件,执行相关处理操作,并最终从内存中卸载流程实例到硬盘或数据库;暂停的流程实例保存所有运行状态,在再此激活后恢复到其运行时状态;
FINISHED(结束)
当流程依据规则执行完成,流程将进入结束状态,ExEngine核心引擎更新流程实例的状态,执行相关处理操作,并最终从内存中卸载流程实例或依据规则删除流程实例;所有正常执行的流程实例最终回到结束状态,并结束其生命周期;
ABORT(终止)
当流程被用户或管理员强行终止或流程本身执行发生重大异常时,流程进入终止状态;ExEngine核心引擎立即强行终止该运行实例并注销相关注册事件,执行后续处理,并立即从内存卸载流程实例;被强行终止的流程实例可能存在数据的不完整性;结束的流程实例和终止的流程实例不可以被再次激活;