在整个工作流里面,最主要的部分在工作流的核心API,Acitivity和Incatior的处理上。调用过程是:工作流服务包含2个主要的服务:Run和Do,Run方法是工作流启动时候需要调用的方法,工作流启动就会按照模板来实例化一个工作流Instance,然后选取该Instance的第一个节点,并把它设为running的状态,同时该instance的状态也是running。然后会根据activity的类型来控制指针的变化,如果是approve有2种指针:next和previous;如果是countersign的话也是有2种指针:next和previous,只是next的条件必须是所有角色都有审批动作;如果是condition的话,动作主要有goto和previous,goto是根据所传的条件来判断该审批动作该走哪个节点;如果是prallel的话,工作也是主要有goto和previous,goto是同时走几个并行的分支。因此,设计如下:
- API设计。主要负责工作流运行,包含5种不同的工作流形态。
- 移动指针设计。主要负责工作流运行状态,指示工作流的移动的方式。
- 5种不同形态的工作流处理方式。
在设计个过程中,原理如下:UI调用工作流的Run和Do方法,Run根据配置的工作流模板信息去调用API实例化一个Instance,然后设置Instance中某个节点为Running状态,接着会根据xml文件中配置的节点服务地址去创建一个Activity的服务,通过Activity服务去判断Incatior的指针方向,接着会修改某些节点的running状态