首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Flowable动态添加监听器

Flowable动态添加监听器

原创
作者头像
用户3293499
发布2025-07-24 13:33:43
发布2025-07-24 13:33:43
2290
举报
文章被收录于专栏:Java杂谈Java杂谈

Flowable动态添加监听器

flowable可以在执行期间添加监听器,监听器主要分为三种,全局军监听器,执行监听器,任务监听器。其类型分别为:

代码语言:java
复制
public interface BaseTaskListener extends Serializable {

    String EVENTNAME_CREATE = "create";
    String EVENTNAME_ASSIGNMENT = "assignment";
    String EVENTNAME_COMPLETE = "complete";
    String EVENTNAME_DELETE = "delete";

    /**
     * Not an actual event, used as a marker-value for {@link BaseTaskListener}s that should be called for all events, including {@link #EVENTNAME_CREATE} , {@link #EVENTNAME_ASSIGNMENT} and
     * {@link #EVENTNAME_COMPLETE} and {@link #EVENTNAME_DELETE}.
     */
    String EVENTNAME_ALL_EVENTS = "all";
}

public interface BaseExecutionListener extends Serializable {

    String EVENTNAME_START = "start";
    String EVENTNAME_END = "end";
    String EVENTNAME_TAKE = "take";
}

我们可以在创建流程时动态添加监听器,通过遍历节点,添加监听器

代码语言:java
复制
BpmnModel model = this.processEngine.getRepositoryService().getBpmnModel(processDefinition.getId());
List<org.flowable.bpmn.model.Process> allProcess = model.getProcesses();
// 遍历节点,获取assgin信息
for(org.flowable.bpmn.model.Process process : allProcess)
{
    Collection<FlowElement> allFlowElement = process.getFlowElements();
    if(CollectionUtils.isNotEmpty(allFlowElement))
    {
        for(FlowElement flowElement : allFlowElement)
        {
            //org.flowable.bpmn.model.
            if(flowElement instanceof org.flowable.bpmn.model.UserTask)
            {
            }
        }
    }
}

动态添加执行监听器

代码语言:java
复制
UserTask taskNode = (UserTask) flowElement;
FlowableListener elistener = new FlowableListener();
listener.setEvent(ExecutionListener.EVENTNAME_START);
listener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
listener.setImplementation("${myExecutionListener}");
taskNode.getExecutionListeners().add(elistener);
allNextNodes.add(nodeInfo);

动态添加任务监听器

代码语言:java
复制
FlowableListener listener = new FlowableListener();
listener.setEvent(TaskListener.EVENTNAME_CREATE);
listener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
listener.setImplementation("${myTaskListener}");
taskNode.getTaskListeners().add(listener);
allNextNodes.add(nodeInfo);

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Flowable动态添加监听器
    • 动态添加执行监听器
    • 动态添加任务监听器
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档