JBPM 7.31任务重分配后能否重发通知及实现方法咨询
JBPM任务重分配后重发通知的实现方案
JBPM默认不会在任务重分配时自动触发原有Task Evolution的通知逻辑,要让新的潜在所有者组收到通知,可通过以下几种方式实现:
1. 自定义任务事件监听器
通过监听任务重分配事件,手动触发通知发送:
- 实现
TaskEventListener接口,重写afterTaskAssignedEvent方法(该事件覆盖任务首次分配和重分配场景) - 在方法中获取重分配后的潜在所有者组,调用JBPM的通知服务发送消息
- 代码示例:
public class TaskReassignmentNotifier implements TaskEventListener { @Override public void afterTaskAssignedEvent(TaskEvent event) { Task targetTask = event.getTask(); List<OrganizationalEntity> newPotentialOwners = targetTask.getPeopleAssignments().getPotentialOwners(); // 获取JBPM邮件通知服务实例(需提前配置邮件参数) EmailNotificationService notificationService = ServiceRegistry.getService(EmailNotificationService.class); for (OrganizationalEntity entity : newPotentialOwners) { if (entity instanceof Group) { String groupId = ((Group) entity).getId(); notificationService.sendToGroup( groupId, "任务重分配通知", "您所在的组[" + groupId + "]已被分配新任务:" + targetTask.getName() ); } } } }
- 将监听器注册到TaskService:
TaskService taskService = RuntimeEngine.getRuntimeEngine(null).getTaskService(); taskService.addEventListener(new TaskReassignmentNotifier());
2. 扩展Task Evolution通知配置
在流程设计器中直接添加重分配触发的通知规则:
- 打开任务的Notifications配置页,新增一条通知规则
- 设置触发条件为
Task is reassigned,接收者选择Potential Owners - 确保流程引擎配置参数
org.jbpm.task.event.listeners.enabled已设为true(默认可能开启,若未生效需检查kie-server配置文件)
3. 通过BPMN事件触发通知
在流程中添加事件节点,监听重分配信号并调用通知服务:
- 插入一个Intermediate Catch Event,选择信号类型,信号ID设为
TaskReassigned - 连接该事件到一个服务任务,服务任务中实现通知发送逻辑(参考第一种方式的代码)
- 确保任务重分配时会抛出
TaskReassigned信号,可通过自定义代码或JBPM内置事件触发
验证方法
完成配置后,执行任务重分配操作,检查新组用户的收件箱或通知中心是否收到消息,同时查看JBPM服务器日志,确认通知服务是否被正确调用。
内容的提问来源于stack exchange,提问作者Francesco Motta
相关产品推荐
相关产品推荐

