flowable 监听事件获取流程节点信息

本文档内容为解决通过 flowable 全局监听器监听到事件后获取流程相关数据时遇到的问题和解决办法,如有错误,请指正。

如何使用全局监听器监听事件请查阅 flowable6.3官方文档

TASK_CREATED

如果是发起流程触发的 TASK_CREATED 事件,则在事件触发过程完成前去查询流程实例时查询不到,

流程实例在首个 TASK_CREATED 事件完成后生成数据库记录。

如需在此事件中获取流程定义信息,推荐使用如下方式获取

获取 UserTask 节点中的 flowable:category 和 flowable:candidateGroups 属性,方式不唯一,选择适合自己的方式即可

方式一

BpmnModel bpmnModel = flowListener.getRepositoryService().getBpmnModel(taskEntity.getProcessDefinitionId());
// 获取节点定义id
String taskDefinitionKey = taskEntity.getTaskDefinitionKey();
// 根据节点定义id获取节点元素
FlowElement flowElement = bpmnModel.getFlowElement(taskDefinitionKey);
if (flowElement instanceof UserTask) {
    UserTask userTask = (UserTask) flowElement;
    String category = userTask.getCategory();
    List<String> candidateGroups = userTask.getCandidateGroups();
}

方式二

if (eventType == FlowableEngineEventType.TASK_CREATED) {
   	// 任务创建事件
    if (event instanceof FlowableEntityEventImpl) {
        FlowableEntityEventImpl eventImpl = (FlowableEntityEventImpl) event;
        TaskEntity taskEntity = (TaskEntity) eventImpl.getEntity();
        Set<IdentityLink> candidates = taskEntity.getCandidates();
        for (IdentityLink candidate : candidates) {
            String groupId = candidate.getGroupId();
        }
        String category = taskEntity.getCategory();
    }

TASK_COMPLETED & ACTIVITY_COMPLETED

这两个事件代表节点执行完毕准备流向下一节点;

执行顺序 TASK_COMPLETED 》ACTIVITY_COMPLETED;

监听到这两个事件执行异步操作时,如果需要对流转前的任务数据进行查询(即对 act_ru_task 这张表进行查询),需在进入异步操作前进行查询,TASK_COMPLETED 事件结束会删除任务实体,ACTIVITY_COMPLETED 表示事件最终完成。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值