我第一次处理业务,很难搞懂理解流程引擎是怎么回事,对业务了解最多的方面,也就是能看懂流程图,但是具体把业务和流程引擎关联起来,真的是做一步卡一步啊,我以一个初学的角度来给大家介绍一下我怎么理解Activiti。
采用流程引擎无非就是更加有条理的管理业务,通过流程图可以清楚地看清业务之间的关系。但是业务和流程怎么关联到一块呢?或者说怎么在业务中运用activiti流程引擎呢?
一、先来说一下activiti运行过程:
1.画一个流程图,通过Eclipse 插件:http://activiti.org/designer/update/ 。
2.部署一个流程:
3.启动一个流程:
在业务需要走哪个流程的时候,你就可以根据你的需要,在已经部署过的流程中找到你需要的流程,这个过程相当于java类的实例化,这时表act_ru_execution表中回多一条记录(就是你刚才启动的流程),在这条记录你可以找到关联act_ru_prodefin表中定义的流程。
4.流程启动后,这个流程就运行起来了,当你完成一个任务时,流程会自动往后执行。
二 、Activiti和 业务相关联:
每启动一个流程,都会在ac_ru_execution表中生成一条记录,一直到流程结束,才从表中消失。这样我们每次启动流程的时候可以获取流程的ID,在和业务关联的表中添加一个字段用来保存这个ID,这样业务和表就关联起来了。
三、任务的派发、接收、完成。
在启动流程的时候,activiti引擎会自动把获取的任务保存到表act_ru_task中,我们可以通过 实例化 activiti 给我们提供的TaskService对象(taskService)来获取任务。
把任务派发给某人可以使用Task 的assign()方法;
接收任务可以通过Task 的claim()方法;
完成任务可以调用Task 的complete()方法;当一个任务完成时,会自动从act_ru_task表中删除。