运行原理

流程运行时由两部分组成:流程组件和流程引擎。

  • 流程组件

流程组件是一个界面组件,它使用在业务表单中,为业务表单提供流程操作和流程事件;流程组件的操作负责调用流程引擎的流程接口实现具体的流程功能。

  • 流程引擎

流程引擎是流程的核心部分,它是基于 PetriNet 原理实现的。流程引擎对外提供流程动作接口,例如“启动”、“流转查询”、“流转”、“回退查询”、“回退”、“暂停查询”、“暂停”、“终止查询”、“终止”、“加签查询”、“加签”等;流程引擎内部根据流程定义和具体的表单实例,生成相应的流程实例,并依据流程定义,驱动流程实例运行到相应的环节,为相应的流程参与者生成相应的待办任务;流程引擎在运行过程中,针对每个流程动作,都会触发相应的流程事件,可以在这些流程事件中调用相应的业务逻辑。

对于一个流程来说,主要的流程动作有“启动”、“流转”、“回退”、“暂停”、“终止”、“加签”等。流程引擎对于这些流程操作,一般分为两个接口:查询和执行,“查询”负责依据流程实例和流程定义计算出流程信息 ProcessControl,“执行”时依据流程信息 ProcessControl、流程定义和流程实例执行具体的流程逻辑。例如“流转”有两个接口对应:“流转查询”和“流转”。它的执行过程如下图:

图例说明:

  • 第一步,在界面中,调用流程组件的流转查询方法;
  • 第二步:流程组件的流程查询方法中,先触发流程组件的“流转查询前”事件,之后再调用流程引擎的流程查询接口;
  • 第三步:流程引擎在流程查询中,先触发流程定义中的“流转查询前”事件;之后再根据流程定义和流程实例信息,计算出目标环节及目标环节的处理人,形成流程信息 ProcessControl;触发流程定义中的“流转查询后”事件;返回计算出的流程信息 ProcessControl;
  • 第四步:流程组件接收到流程引擎返回的流程信息 ProcessControl 后,触发流程组件的“流转查询后”事件,并弹出流程对话框,供用户修改后续环节的执行人等信息;
  • 第五步:用户在流程对话框中修改完流程信息后,点确认时,将调用流程组件的流转方法;
  • 第六步:流程组件的流转方法中,先触发流程组件的“流转前”事件,之后将修改后的流程信息 ProcessControl 作为参数调用流程引擎的流转接口;
  • 第七步:流程引擎在流转中,先触发流程定义中的“流转前”事件;之后再根据流程定义、流程实例信息和流程信息 ProcessControl 执行流转逻辑,流转到目标环节,生成相应的待办任务;触发流程定义中的“流转后”事件;
  • 第八步:流程组件触发“流转后”事件。

results matching ""

    No results matching ""