flowable可以在执行期间添加监听器,监听器主要分为三种,全局军监听器,执行监听器,任务监听器。其类型分别为:
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";
}
我们可以在创建流程时动态添加监听器,通过遍历节点,添加监听器
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)
{
}
}
}
}
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);
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 删除。