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 {
...
}
}