Activiti 5.12发布

3 minute read

1. 5.12版本重要改变

  1. 在Activiti Explorer中添加了基于Javascript的流程图查看功能,由Raphaël提供画图支持,支持全部浏览器;这个功能是我在5.11版本发布之后提出的,后来Tijs说让我帮忙做一个,最后用jQuery实现了(和kft-activiti-demo里面的跟踪效果一样,后来tijs告诉我有人在做了,所以我就取消了这个任务),效果图在下面。
  2. 统一了BPMN解析,可以应用于引擎、Activiti Designer、Activiti Modeler。
  3. 添加Activiti Kickstar到Activiti Explorer,让不懂BPMN规范的人也可以设计简单流程(设计的流程都是顺序流,设计的时候不要在assignee<办理人>字段填写值,否则会报错)。
  4. 简化并扩充了Activiti Camel模块。
  5. 在Activiti Explorer中添加了报表功能,可以以用户、任务、流程等维度生成图形报表。
  6. 添加auto-layout模块,可以应用与KickStart和Modeler(还未验证)。
  7. 添加了针对Script Task的Execution监听解析。
  8. 支持流程定义缓存,可以减少数据库读取。
  9. 一些其他的Bug修复。

2. 详细Release Notes

Sub-task

  • [ACT-1565] - activiti-bpmn-converter BaseBpmnXMLConverter ignores defaultFlow for Gateways

Bug

  • [ACT-863] - HistoricVariableUpdate#getValue() throws NPE for JPA entities
  • [ACT-995] - Not possible to update/overwrite a JPA entity in workflow
  • [ACT-1025] - Methods deleteDeployment(String deploymentId, ...) and deleteDeploymentCascade(String deploymentId, ...) do not throw an exception with passed a non-existent deployementId
  • [ACT-1026] - Inclusive gateway isn't properly joining sequence flows coming from call activities
  • [ACT-1040] - TaskManager.findTaskById does not utilize session cache
  • [ACT-1054] - Unable to complete user task coming from parallel gateway
  • [ACT-1196] - Invalid login screen localization on non-utf-8 based hosts
  • [ACT-1204] - InclusiveGateway with two subprocesses does not join correctly
  • [ACT-1317] - Wrong task event generated when setting assignee to null
  • [ACT-1345] - method name orderByHistoricActivityInstanceStartTime in class HistoricTaskInstanceQuery should be orderByHistoricTaskInstanceStartTime
  • [ACT-1372] - User Task with form: form will be not displayed if the value expression in next line used
  • [ACT-1377] - removeVariables() in VariableScopeImpl does not consider parent scopes
  • [ACT-1414] - ClassCastException when completing a referenced sub process after Boundary Event with cancelActivity = false
  • [ACT-1417] - Fix Explorer session serialization
  • [ACT-1418] - NullPointerException if throw a not catched exception/error
  • [ACT-1470] - Import definition type fails with CxfWSDLImporter when using complex data types
  • [ACT-1477] - In user guide error api for form property from history detail
  • [ACT-1479] - activiti-engine has invalid symbolic name
  • [ACT-1486] - The ability to add an attachment to a process instance is broken
  • [ACT-1494] - Get garbled string when render form in chines
  • [ACT-1499] - Form properties not initialized when null or empty
  • [ACT-1502] - Custom font name in the engine for diagram
  • [ACT-1504] - Cannot create new user and membership in JavaDelegate using identityService
  • [ACT-1512] - HistoricVariableUpdates no longer returned when using postgres
  • [ACT-1516] - BPMN Converter: Adding a listener to a script task produces erroneous XML content.
  • [ACT-1524] - Variable update detection does not work for byte[]
  • [ACT-1528] - All variables are deleted after delete a history processinstance
  • [ACT-1533] - Undeployment of old process versions deletes jobs for TimerStartEvents
  • [ACT-1540] - HistoricVariableInstance does not expose taskId, nor does HistoricVariableQuery expose querying based on taskId
  • [ACT-1546] - Impossible to assign default flow on exclusive gateways
  • [ACT-1553] - Refactor BpmnParse to use separate handlers for each bpmn element
  • [ACT-1555] - ProgrammaticBeanLookup doesn't regard alternatives
  • [ACT-1556] - BpmnDeployer creates duplicates identity links when deploying processes with initiation authorization active
  • [ACT-1579] - Process engine can be DoS'ed when deploying unsafe XML
  • [ACT-1586] - ExecutionQuery returns wrong results when using multi instance on a receive task
  • [ACT-1596] - Not generated boundary event in diagram created by Raphaël

Improvement

  • [ACT-1274] - Remove SEVERE level logging for expected exception in taskservice.claim()
  • [ACT-1324] - Add specific exceptions for common error scenarios (TaskNotFoundException if a task if not found etc)
  • [ACT-1463] - Review rest-response codes and error-body response
  • [ACT-1498] - IntermediateCatchEventActivitiBehaviour name does not match other ActivityBehavior's
  • [ACT-1505] - Should throw an exception if the picture is not generated
  • [ACT-1561] - Add the ability to register a TaskListener for all event types
  • [ACT-1568] - Query API documentation out of sync with codebase

New Feature

  • [ACT-432] - Terminate end event
  • [ACT-1164] - Add possibility to hook in own implementation of BusinessRuleTask
  • [ACT-1493] - Make DeploymentCache pluggable and allow to set cache limit
  • [ACT-1511] - Extract ActivityBehavior and Task/ExecutionListener instantiation in a pluggable factory
  • [ACT-1518] - Add generic simple workflow creator API to activiti
  • [ACT-1537] - Allow to configure whether script variables are stored as process variables
  • [ACT-1569] - Introduce process instance scope for signal events
  • [ACT-1571] - Auto layout for BPMN 2.0 processes
  • [ACT-1572] - Designer should generate XML with delegationExpression
  • [ACT-1574] - Loop type for subprocess in Modeler
  • [ACT-1580] - Add method to retrieve BpmnModel (Pojo version of BPMN 2.0 process) to RepositoryService
  • [ACT-1588] - Native query support paging
  • [ACT-1593] - Basic reporting for Explorer

Task

  • [ACT-1031] - Rename JobQuery methods
  • [ACT-1397] - Remove Account related service operations from IdentityService
  • [ACT-1465] - Document services in userguide
  • [ACT-1538] - Move BpmnParseListener to public API package
  • [ACT-1581] - Refactor ProcessDiagramGenerator to take BpmnModel as input instead of ProcessDefinitionEntity

Wish

  • [ACT-1362] - Extend JPAEntityMappings to support UUID as Id

3. 值得关注的重要Bug及新功能

  1. 移除了org.activiti.engine.impl.bpmn.parser.BpmnParseListener以及相关类,取而代之的是在引擎中配置实现监听器触发方式,在用户手册的第17章有详细介绍。
  2. 在5.11版本中最严重的一个Bug应该属于ACT-1528,当删除一个流程实例时这个Bug会导致整个ACT_HI_VARINST表被清空!!! 如果使用5.11的建议升级到5.12,或者自己打补丁。
  3. 自动生成的图片导致中文乱码,这个问题在5.12里面我已经彻底解决了,解决办法是在引擎里面配置属性activityFontName,配置成中文字体的文件名就可以了。
  4. 支持终止结束事件。
  5. Native Query是在5.11版本中添加的,很好的解决了固定API查询不够灵活的问题,但是不支持分页查询,只能自己在sql中添加分页语句与参数;在5.12版本发布之前我提交了支持分页查询的代码,代码也合并到了master分支,但是在发布之前又还原了(因为不支持db2与sqlserver分页),我又紧急修复提交,可惜最终没有合并到5.12中,不过5.12发布之后我发布了5.12.1版本用于弥补这一遗憾(后面公布地址)。

4. 我的Activiti分支5.12.1

4.1 Maven仓库

使用Maven的方式发布,托管在Github,在仓库中添加如下配置:

<repository>
	<id>henryyan-mavenrepo</id>
	<url>https://raw.github.com/henryyan/mavenrepo/master/releases</url>
</repository>

4.2 直接下载源码

  1. activiti-engine-5.12.1.jar
  2. activiti-bpmn-model-5.12.1.jar
  3. activiti-bpmn-converter-5.12.1.jar
  4. activiti-spring-5.12.1.jar

5. 对5.13版本的期待

支持更多BPMN2.0规范!!!

6. 附图

image image