Activiti 5.11发布,Java工作流引擎
1. 圣诞大礼包
这是我第一次为Activiti的发布撰文,因为这次的发布我觉得很有必要和大家分享,这其中包含了我期待的新特性和已知问题的修复;而且还有一个重量级的模块Activiti Modeler。
在5.8版本之前一直以每两个月一版的的频率发布,但是在5.8~5.10之间波动比较大,5.9和5.10都是5个月才发布一版,不过从5.11开始又开始恢复每两个月一版的频率了,我认为短周期的发布有利于占领市场,对于开发者来说能尽快修复比较严重的问题。
5.11版本在代码管理方面做了很大调整,首先把源码由原来的svn转移到了Github有利于引擎的发展,可以让更多的开源爱好者参与进来,大家一起捉虫,想Activiti Team提交自己的想法,Github可以很好的满足这些;通过Github的“Fork”我们可以很容易的做到这些。
2. 新特性及优化
-
新模块Activiti Modeler:添加了Web版本的流程定义设计器—Activiti Modeler到Activiti Explorer中,而且两者可以无缝结合;可以把Modeler设计的流程定义部署到Exploer中,也可以以已部署的流程定义为基础进行修改后重新部署。具体的使用可以参考这里。
-
汉化Activiti Explorer:本人有幸参与并完成了汉化工作,汉化介绍。
-
添加Native Query:允许通过本地SQL方法查询Activiti的对象;在这之前查询一直是一个比较头疼的事情,因为开发人员只能使用一些Query对象显示调用设置属性的方法过滤,如果想做到自定义条件查询没有这类接口提供;现在可以使用下面的方式灵活组装查询条件。参考手册的Query API部分。
-
历史变量查询功能增强:在5.11之前的版本中变量和表单属性(表单的字段,动态表单和外置表单)保存在同一张表中ACT_HI_DETAIL,以DETAIL的TYPE区分(FormProperty和VariableUpdate);在5.11中把两者做了分离,添加了一张表ACT_HI_VARINST专门用来存储变量(也就是在ACT_HI_DETAIL中类型为VariableUpdate类型的记录),这样表单的字段和变量就区分开来了(表单字段类型是字符型,变量有具体的类型);并且专门添加了一个变量实例接口HistoricVariableInstance,以及对应的变量实例查询对象HistoricVariableInstanceQuery。
-
运行时变量删除:允许通过API方式删除流程实例或者任务的相关变量,调用方式:runtimeService.removeVariable('foo')
-
改进挂起与激活状态:在5.9版本时我曾在JIRA提交了一个改进意见ACT-1228,不过最后被关闭了……在5.11中终于支持了这一特性,当挂起一个流程实例的时候同时也把相关的任务挂起;原来针对流程定义的挂起与激活功能也进行了优化,可以选择当挂起或者激活某个流程定义时是否挂起相关的流程实例,并且允许定时执行挂起与激活任务(利用Job,定时器)。如此,对于一些流程实例或者流程定义暂时不需要处理时就可以利用挂起功能,在待办任务列表仅显示处于激活状态的即可。
-
优化对DB2和MSSQL的支持:在SQL脚本方面做了优化。
-
允许在Java Delegate中调用引擎Service接口:当为某个活动添加了一个Java Service任务设置了Java Delegate时如果需要获取引擎的7个Service,只能通过自己写工具类的方式获取,或者用Spring代理监听或者Java Delegate类用注入的方式实现。现在可以通过DelegateExecution的对象获取,详细请参考这里。
-
结构调整:抽取独立的模块(jar包)activiti-explorer、activiti- rest,对应的activiti-webapp-explorer2依赖activiti-explorer,activiti-webapp- rest2依赖activiti-rest;如此我们可以很容的把这两个模块集成到现有系统中。创建新的模块:activiti-bpmn- converter、activiti-bpmn-model、activiti-json-converter作为基础的组件,提供bpmn文件的解析以及转换功能(稍后会写篇文章专门讲解如何使用这些基础组件)。
除了以上的改进和新特性之外还修复了大量的Bug,完整的Changlog请参考JIRA。
3. 下载新版本
5.11版本下载地址:https://github.com/downloads/Activiti/Activiti/activiti-5.11.zip
压缩包中的wars目录包含两个文件,activiti-rest模块可以单独部署了,修改数据库配置就可以作为自己的REST服务使用。
Github上的5.11分支:https://github.com/Activiti/Activiti/tree/activiti-5.11
4. 升级建议
5.11版本是一个改进版本,添加了很多有用的新特性,很值得升级;当然在升级产品环境之前做好充分的测试并备份数据。