石家庄网站建设团队,v电影主题 wordpress,查企业app,设计方案文本更多ruoyi-nbcio功能请看演示系统
gitee源代码地址
前后端代码#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio
演示地址#xff1a;RuoYi-Nbcio后台管理系统 上一节说到待办系统的监听器TaskCreateListener#xff0c;需要在flowable全局监听配置里加入配置 1、Glo… 更多ruoyi-nbcio功能请看演示系统
gitee源代码地址
前后端代码 https://gitee.com/nbacheng/ruoyi-nbcio
演示地址RuoYi-Nbcio后台管理系统 上一节说到待办系统的监听器TaskCreateListener需要在flowable全局监听配置里加入配置 1、GlobalEventListenerConfig.java文件如下
package com.ruoyi.flowable.config;import com.ruoyi.flowable.listener.GlobalEventListener;
import com.ruoyi.flowable.listener.ProcessCompleteListener;
import com.ruoyi.flowable.listener.TaskCreateListener;import lombok.AllArgsConstructor;
import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType;
import org.flowable.common.engine.api.delegate.event.FlowableEventDispatcher;
import org.flowable.engine.RuntimeService;
import org.flowable.spring.SpringProcessEngineConfiguration;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;/*** flowable全局监听配置** author ssc*/
Configuration
AllArgsConstructor
public class GlobalEventListenerConfig implements ApplicationListenerContextRefreshedEvent {private final GlobalEventListener globalEventListener;private final RuntimeService runtimeService;private final SpringProcessEngineConfiguration configuration;private final TaskCreateListener taskCreateListener;private final ProcessCompleteListener processCompleteListener;Overridepublic void onApplicationEvent(ContextRefreshedEvent event) {FlowableEventDispatcher dispatcher configuration.getEventDispatcher();// 任务创建全局监听-待办消息发送dispatcher.addEventListener(taskCreateListener, FlowableEngineEventType.TASK_CREATED, FlowableEngineEventType.TASK_ASSIGNED);//任务创建全局监听-完成消息发送dispatcher.addEventListener(processCompleteListener, FlowableEngineEventType.PROCESS_COMPLETED);// 流程正常结束runtimeService.addEventListener(globalEventListener, FlowableEngineEventType.PROCESS_COMPLETED);}
}
2、还增加了一个流程结束的通知监听如下
package com.ruoyi.flowable.listener;import java.util.List;import javax.annotation.Resource;import org.apache.commons.lang3.StringUtils;
import org.flowable.common.engine.api.delegate.event.FlowableEngineEntityEvent;
import org.flowable.common.engine.api.delegate.event.FlowableEvent;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.TaskService;
import org.flowable.engine.delegate.event.AbstractFlowableEngineEventListener;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl;
import org.flowable.task.api.Task;
import org.flowable.variable.api.persistence.entity.VariableInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import com.ruoyi.common.core.service.CommonService;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.model.LoginUser;import lombok.RequiredArgsConstructor;/*** 全局监听-工作流完成消息提醒** author nbacheng*///必须要用 AbstractFlowableEngineEventListener 用FlowableEventListener这个会出现问题应该是已经完成了
Component
RequiredArgsConstructor
public class ProcessCompleteListener extends AbstractFlowableEngineEventListener {private final TaskService taskService;Resourceprivate CommonService commonService;Autowiredprotected HistoryService historyService;Resourceprotected RepositoryService repositoryService;Overrideprotected void processCompleted(FlowableEngineEntityEvent event) {System.out.println(进入流程结束监听器……);String procInsId event.getProcessInstanceId();HistoricProcessInstance hi historyService.createHistoricProcessInstanceQuery().processInstanceId(procInsId).singleResult();ListTask listtask taskService.createTaskQuery().processInstanceId(procInsId).active().list();String taskId ;if(listtask !null) {taskId listtask.get(0).getId();}String startUserId hi.getStartUserId();String businessKey hi.getBusinessKey();String deployId hi.getDeploymentId();String category ;if (StringUtils.isNotEmpty(startUserId)) {// TODO: 发送提醒消息if(((ExecutionEntityImpl)event.getEntity()).getVariableInstances().get(category) !null) {category ((VariableInstance)((ExecutionEntityImpl)event.getEntity()).getVariableInstances().get(category)).getTextValue();}LoginUser loginUser commonService.getLoginUser();String taskMessageUrl;if(StringUtils.isNotBlank(businessKey)) {taskMessageUrl a href commonService.getBaseUrl() ?procInsId procInsId deployId deployId taskId taskId businessKey businessKey category category finishedfalse 点击这个进行查看/a ;}else {taskMessageUrl a href commonService.getBaseUrl() ?procInsId procInsId deployId deployId taskId taskId businessKey category category finishedfalse 点击这个进行查看/a ;}String msgContent 流程任务结束通知 taskMessageUrl; commonService.sendSysNotice(loginUser.getUsername(), startUserId, 流程任务结束通知, msgContent, Constants.MSG_CATEGORY_1);//setMsgCategory1是通知}super.processCompleted(event);}Overrideprotected void taskCompleted(FlowableEngineEntityEvent event) {System.out.println(进入taskCompleted监听器……);super.taskCompleted(event);}Overridepublic void onEvent(FlowableEvent flowableEvent) {System.out.println(进入taskCompleted监听器--onEvent……);super.onEvent(flowableEvent);}
}
当然这两个监听还需要根据实际进行个性化定制与修改。