Camunda监听
书接上回Camunda工作流集成SpringBoot(二)
两种常用的监听方式
监听位置
start:启动监听 不能加在序列流上面
end:结束监听 不能加在序列流上面
take:执行监听 只能加在序列流上面
create:流程启动
assigment:流程部署
complete:流程完成
delete:流程结束
ExecutionListener
直接写js脚本的方式
1.选择lnline Script,则Script里面写javascript的实现方式

2.引用脚本路径的方式
Script Type选择External Resource,则Resource需要写js脚本的路径

这里的路径为classes下的路径

这种方式适用于WebSocket,或者node可以直接可以跑的js脚本
Java Class方式的监听
ExecutionListener

映射的java类实现ExecutionListener接口,一旦出发绑定的节点则会自动触发notify方法
package org.example.listener;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.ExecutionListener;
import org.camunda.bpm.engine.delegate.Expression;
public class MyTaskListener implements ExecutionListener {
//field injection
private Expression message;
@Override
public void notify(DelegateExecution delegateExecution) throws Exception {
System.out.println((String) message.getValue(delegateExecution));
}
}
另外Field injection用来给监听器传参

在java代码中需要定义成Expression的对象 名称和name保持一致
//获取变量
System.out.println((String) message.getValue(delegateExecution));
TaskListener

TaskListener可以监听流程创建销毁等等与业务无关的操作
java代码与ExepressionListener大体一致,不同的是TaskListener的java类实现的是TaskListener接口
public class MyTaskListener implements TaskListener {
@Overrids
public void notify(DelegateExecution delegateExecution) throws Exception {
...
}
}
本文详细介绍了如何在Camunda工作流中使用ExecutionListener和TaskListener进行任务监听,包括各种监听位置和JavaScript脚本、Java类实现的方法。涵盖了start, end, take等事件,以及Field Injection的使用。
4875

被折叠的 条评论
为什么被折叠?



