前几篇文章都是讲的activiti的原理、用法。这些都能在activiti的手册中查到,本文就说说如何将activiti和项目进行整合并使用,这些经验都是自己在实际使用activiti中总结出的,希望能对大家有帮助。

 

  • 对每种业务状态定义相应的状态码

定义了业务状态码,就可以通过业务状态码来判断流程走到了何种状态。

  • activiti负责业务流程状态的变更

只让activiti负责业务流程状态变更,activiti不负责业务逻辑的具体实现。

  • 新建表t_workflow用来保存每个流程实例,同时也保存了关联的业务id。同时也方便业务数据和工作流级联查询

在实际操作中,我们经常需要使用流程实例的一些信息,例如当前业务流程是何种状态,流程是否已经结束,流程当前对应的表单是否可编辑等。另外,我们经常需要进行联合查询,例如我需要查询出于某个状态的所有业务信息。

t_workflow类似于“中间表”,它一方面关联了流程实例信息,另一方面关联了业务表单表信息。它还有一些字段,例如流程实例的创建时间、流程实例是否结束等。

  • 新建表t_workflow_node来保存每个流程实例的节点信息。

在实际操作中,我们经常需要知道某个业务的某一步审批完成后,它的审批结果,是通过还是驳回,以及相应的意见等。当然,这些信息可以保存在业务表中,但如果某一步审批被多次执行后(例如反复的驳回-->提交-->驳回),业务表中如何来存储这些信息就会变成一个问题,但有了此表后,我们就可以直接在数据库中检索我们需要的数据。

  • 在流程中通过流程变量来控制分支的流动

在activiti中有流程变量这个概念。一个流程实例类似于一个session会话,而变量就是只存在于当前流程实例中的变量。我们审批时,可以通过向activiti的流程引擎传入某个流程变量的值,而流程引擎会通过这个值(例如是true或者false)来判断流程分支该如何流动。