1.activiti部署xml时发现process的id属性实际部署到数据库中对应process的key字段。
2.主流程中使用service task,调用JavaDelegate实现类抛出BPMN异常来调用子流程中的错误开始事件报错。要求subprocess必须为event subprocess。
解决:选中subprocess构件,勾选triggered by event
如图
3.因为在actiBPM中没有找到事务子流程、取消结束事件、补偿事件等元素。因此重新下载了eclipse并安装了activiti插件。因为部门使用idea开发环境,因此我使用eclipse画完流程图之后,尝试把bpmn拷贝回idea运行。
使用idea打开bpmn文件,选择图上的取消结束事件,可以观察到actiBPM并不识别 EventType,从而显示Error getting value。并且之前一条连接补偿边界事件和补偿 service task之间的虚线也消失了。
此时运行程序提示如下
Compensation activity could not be found (or it is missing 'isForCompensation="true"'
即找不到对应的补偿事件或者没有在补偿事件上设置isForconsation属性,查看xml文件,属性已经设置,找不到补偿事件自然时虚线消失的问题,至于为什么消失还有待研究。//todo
4.在子流程设置了消息启动时间,启动不成功的问题,解决方案。
ProcessEngine engine= ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService=engine.getRuntimeService();
//不能使用如下命令启动,因为以下命令是启动一个新的流程实例 而非子流程
// runtimeService.startProcessInstanceByMessage("myMsg");
//应该先获取消息name设置为myMsg的所有execution,在根据executionID来向他发送消息
Execution execution=runtimeService.createExecutionQuery().messageEventSubscriptionName("myMsg").singleResult();
System.out.println(execution.toString());
runtimeService.messageEventReceived("myMsg",execution.getId());
5.service task启动其他事件后,主流程不能继续往下跑。但是如果使用中间抛出事件,并且设置为异步,那么主流程可以继续往下跑。
6.actiBPM存在变更bpmn图像后xml不跟随改变,即变更bpmn图像无效的情况。
7.actiBPM打开流程图,之前设置的属性存在全部不现实(但是有效)的情况。
7.actiBPM缺少的补偿边界事件,可以使用子流程中再包含一个子流程的方式来实现;
错误边界事件和取消边界事件可以起到类似的功能。