Activiti学习心得

标签:
it |
工作流引擎Activiti用了一年左右,总该写点什么记录总结下吧。以下内容纯属个人瞎BB,欢迎各位看官拍砖。Activiti概念性的东西以及API的用法,我就不在此文中描述,请各位看官自行Google或者Baidu吧。
Activiti抽象出流程定义以及流程流转关系,流程的业务逻辑还是需要开发者开发,一个框架敢开源出来,必有过人之处。因个人能力以及时间有限,未能完全吃透整个Activiti框架。只能在遇到问题过程中,不断学习,解决问题,举一反三,挖出冰山一角。就从我在开发过程中遇到的以下问题或者学习心得中展开吧。注:以下Activiti均与Spring配合使用。
问题一:Activiti分为如下服务:RepositoryService(流程定义文件的管理)、RuntimeService(流程运行时)、TaskService(流程任务的管理)、HistoryService、ManagementService(流程引擎的管理维护)等,每种服务Activiti都规定好了其功能及作用,我们能否也扩展自定义的服务,但事务控制、异常控制等仍由Activiti帮我们控制,只开发业务逻辑即可?
解决方法:请看Activiti与Spring的配置。
http://s2/mw690/002tmE8Gzy78xDX2mlz91&690
虽然SpringProcessEngineConfi
http://s15/mw690/002tmE8Gzy78xDYW0lE8e&690
http://s16/mw690/002tmE8Gzy78xE0drPxbf&690
因此该问题的解决思维也很清晰了,先实例化自定义的服务类,调用initService方法进行变量的初始化。个人的解决法如下:
(1)自定义Spring配置的启动类CustomSpringProcessEngin
http://s2/mw690/002tmE8Gzy78xE2mlUJc1&690
(2)CustomSpringProcessEngin
http://s12/mw690/002tmE8Gzy78xE3TwaDcb&690
问题二:为了使同一个流程图可适用于多种业务流程,将流程的监听动态配置化?本来Activiti5.21.0提供了更方便的DynamicBpmnService.java,用于动态定义流程图。无奈生产环境仍用5.16.0版本无此新特性,只好看菜吃饭,看源码搞起。
解决方法:还是看ProcessEngineConfigurati
(1)初始化部署器时,会获取默认的部署器
http://s14/mw690/002tmE8Gzy78xDx5ckJ7d&690
(2)在获取默认部署器中,会获取默认的流程图解析处理器
http://s3/mw690/002tmE8Gzy78xDC8MUie2&690
(3)在获取默认流程图解析处理器时,当有自定义的流程图解析处理器时,会将默认的处理器替换掉。
http://s1/mw690/002tmE8Gzy78xDL7DwIa0&690
因为该问题的解决思路也很清晰了,自定义的解析处理器需继承默认的解析处理器,调用父类解析方法后,用强行加入我们的解析逻辑,个人的代码如下:
(1)Activiti与Spring的配置如下:
http://s15/mw690/002tmE8Gzy78xDOFDb07e&690
(2)只选取CustomSequenceFlowParseH
http://s2/mw690/002tmE8Gzy78xDQgvK1c1&690
学习心得一:每个开源框架因使用了设计模式,从而更加精彩,Activiti也不例外,用得最多的莫过于命令模式了,没心情写了,待定吧