Activiti学习——踩坑和经验

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

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

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

如图2934dcfba02557b16168a6524cc05ebc647.jpg

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

错误边界事件和取消边界事件可以起到类似的功能。

转载于:https://my.oschina.net/u/3786691/blog/3085283

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值