Activiti学习——踩坑和经验

1.activiti部署xml时发现process的id属性实际部署到数据库中对应process的key字段。数据库

2.主流程中使用service task,调用JavaDelegate实现类抛出BPMN异常来调用子流程中的错误开始事件报错。要求subprocess必须为event subprocess。eclipse

解决:选中subprocess构件,勾选triggered by event异步

如图ide

3.由于在actiBPM中没有找到事务子流程、取消结束事件、补偿事件等元素。所以从新下载了eclipse并安装了activiti插件。由于部门使用idea开发环境,所以我使用eclipse画完流程图以后,尝试把bpmn拷贝回idea运行。idea

使用idea打开bpmn文件,选择图上的取消结束事件,能够观察到actiBPM并不识别 EventType,从而显示Error  getting value。而且以前一条链接补偿边界事件和补偿 service task之间的虚线也消失了。插件

此时运行程序提示以下code

Compensation activity could not be found (or it is missing 'isForCompensation="true"'

即找不到对应的补偿事件或者没有在补偿事件上设置isForconsation属性,查看xml文件,属性已经设置,找不到补偿事件天然时虚线消失的问题,至于为何消失还有待研究。//todoxml

4.在子流程设置了消息启动时间,启动不成功的问题,解决方案。blog

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缺乏的补偿边界事件,可使用子流程中再包含一个子流程的方式来实现;

错误边界事件和取消边界事件能够起到相似的功能。

相关文章
相关标签/搜索