activiti5.22 全局工作流节点监听器

本文介绍了一种在工作流引擎中实现节点监听的方法。通过配置监听器和监听类,可以实现在流程节点开始、结束及审批过程中的特定操作,如获取审批人信息等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

适合在每个节点处理特定的事项,包含获取审批人

 1、流程节点中配置监听器

2、配置监听类型,和监听类

说明:事件监听类型有三种,start、end、take,start表示任务刚流转到该节点,end表示节点审批完毕,take表示节点审批过程中。

3、监听类MyExecutionListener内容如下

package com.jeeplus.modules.act.listener;

import java.util.Set;

import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.ExecutionListener;
import org.activiti.engine.delegate.Expression;
import org.activiti.engine.delegate.TaskListener;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.impl.task.TaskDefinition;
/**
 * 工作流各节点监听器
 * @author Lenovo
 *
 */
public class MyExecutionListener implements ExecutionListener,TaskListener {
	private static final long serialVersionUID = 7960387497099642910L;
	@Override
	public void notify(DelegateTask delegateTask) {
		// TODO Auto-generated method stub
		String eventName = delegateTask.getEventName();
		if ("create".endsWith(eventName)) {
			System.out.println("create=========");
		}else if ("assignment".endsWith(eventName)) {
			System.out.println("assignment========");
		}else if ("complete".endsWith(eventName)) {
			System.out.println("complete===========");
		}else if ("delete".endsWith(eventName)) {
			System.out.println("delete=============");
		}
	}
	@Override
	public void notify(DelegateExecution execution) throws Exception {
		//获取审批人信息 start
		String activityId = execution.getCurrentActivityId();
		String processDefinitionId=execution.getProcessDefinitionId(); // 获取流程定义id 

		ProcessDefinitionEntity processDefinitionEntity=(ProcessDefinitionEntity) execution.getEngineServices().getRepositoryService()
				.getProcessDefinition(processDefinitionId); 

		ActivityImpl activityImpl=processDefinitionEntity.findActivity(activityId); // 根据活动id获取活动实例 
		TaskDefinition taskDef = (TaskDefinition)activityImpl.getProperties().get("taskDefinition");
		String zpr = taskDef.getAssigneeExpression()==null?"":taskDef.getAssigneeExpression().getExpressionText();//代理人
		Set<Expression> userCodes = taskDef.getCandidateUserIdExpressions();//候选人
		Set<Expression> roleCodes = taskDef.getCandidateGroupIdExpressions();//候选组
		//获取审批人信息 end

		String eventName = execution.getEventName();
		//start
		if ("start".equals(eventName)) {
			System.out.println("start=========");
		}else if ("end".equals(eventName)) {
			System.out.println("end=========");
		}
		else if ("take".equals(eventName)) {
			System.out.println("take=========");
		}
	}
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cesium vue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值