flowable 全局监听 监听流程的启动和流程的结束

文章目录

            • 1. Flowable全局监听配置
            • 2. 流程启动的监听器
            • 3. 流程结束的监听器

1. Flowable全局监听配置
package com.gblfy.flowable.config;import com.gblfy.flowable.listener.global.GlobalProcistEndListener;
import com.gblfy.flowable.listener.global.GlobalProcessStartedListener;
import com.gblfy.flowable.listener.global.GlobalTaskCompletedListener;
import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType;
import org.flowable.common.engine.api.delegate.event.FlowableEventDispatcher;
import org.flowable.spring.SpringProcessEngineConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;/*** Flowable全局监听配置* 用途:在任务特殊节点或者流程的特殊节点做一些自定义操作** @author gblfy* @Date 2022-06-21**/
@Configuration
public class FlowableGlobListenerConfig implements ApplicationListener<ContextRefreshedEvent> {@Autowiredprivate SpringProcessEngineConfiguration configuration;@Autowiredprivate GlobalTaskCompletedListener globalTaskCompletedListener;@Autowiredprivate GlobalProcessStartedListener globalProcessStartedListener;@Autowiredprivate GlobalProcistEndListener globalProcistEndListener;@Overridepublic void onApplicationEvent(ContextRefreshedEvent event) {FlowableEventDispatcher dispatcher = configuration.getEventDispatcher();//任务创建全局监听dispatcher.addEventListener(globalTaskCompletedListener, FlowableEngineEventType.TASK_COMPLETED);//流程开始全局监听dispatcher.addEventListener(globalProcessStartedListener, FlowableEngineEventType.PROCESS_STARTED);//流程结束全局监听dispatcher.addEventListener(globalProcistEndListener, FlowableEngineEventType.PROCESS_COMPLETED);}}
2. 流程启动的监听器
package com.gblfy.flowable.listener.global;import org.flowable.engine.delegate.event.impl.FlowableEntityEventImpl;
import org.flowable.engine.delegate.event.AbstractFlowableEngineEventListener;
import org.flowable.engine.delegate.event.FlowableProcessStartedEvent;
import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;import java.util.Date;/*** 全局的流程启动的监听器** @author: gblfy* @date 2022-06-21*/
@Component
public class GlobalProcessStartedListener extends AbstractFlowableEngineEventListener {protected Logger logger = LoggerFactory.getLogger(this.getClass());@Overrideprotected void processStarted(FlowableProcessStartedEvent event) {logger.info("进入流程开始监听器------------------------Start---------------------->");String eventName = event.getType().name();FlowableEntityEventImpl flowableEntityEvent = (FlowableEntityEventImpl) event;ExecutionEntityImpl processInstance = (ExecutionEntityImpl) flowableEntityEvent.getEntity();Date startTime = processInstance.getStartTime();String processDefinitionKey = processInstance.getProcessDefinitionKey();String processInstanceId = processInstance.getProcessInstanceId();String processInstanceBusinessKey = processInstance.getProcessInstanceBusinessKey();int suspensionState = processInstance.getSuspensionState();logger.info("流程事件类型->{}", eventName);logger.info("流程开始时间->{}", startTime);logger.info("流程定义Key->{}", processDefinitionKey);logger.info("流程实例ID->{}", processInstanceId);logger.info("流程业务key->{}", processInstanceBusinessKey);logger.info("流程是否挂起标志->{}", suspensionState);logger.info("流程开始监听器------------------------End---------------------->");}
}
3. 流程结束的监听器
package com.gblfy.flowable.listener.global;import org.flowable.common.engine.api.delegate.event.FlowableEngineEntityEvent;
import org.flowable.engine.delegate.event.AbstractFlowableEngineEventListener;
import org.flowable.engine.delegate.event.impl.FlowableEntityEventImpl;
import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;import java.util.Date;/*** 流程结束全局监听器** @author: gblfy* @date 2022-06-21*/
@Component
public class GlobalProcistEndListener extends AbstractFlowableEngineEventListener {protected Logger logger = LoggerFactory.getLogger(this.getClass());@Overrideprotected void processCompleted(FlowableEngineEntityEvent event) {logger.info("进入流程完成监听器------------------------Start---------------------->");String eventName = event.getType().name();FlowableEntityEventImpl flowableEntityEvent = (FlowableEntityEventImpl) event;ExecutionEntityImpl processInstance = (ExecutionEntityImpl) flowableEntityEvent.getEntity();Date startTime = processInstance.getStartTime();String processDefinitionKey = processInstance.getProcessDefinitionKey();String processInstanceId = processInstance.getProcessInstanceId();String processInstanceBusinessKey = processInstance.getProcessInstanceBusinessKey();int suspensionState = processInstance.getSuspensionState();logger.info("流程事件类型->{}", eventName);logger.info("流程开始时间->{}", startTime);logger.info("流程定义Key->{}", processDefinitionKey);logger.info("流程实例ID->{}", processInstanceId);logger.info("流程业务key->{}", processInstanceBusinessKey);logger.info("流程是否挂起标志->{}", suspensionState);logger.info("流程完成监听器------------------------End---------------------->");}}

注意:FlowableEntityEventImpl类的包路径
import org.flowable.engine.delegate.event.impl.FlowableEntityEventImpl;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

应用中心最佳实践之——使用应用组完成多集群一键部署

简介&#xff1a; 在现实中的应用交付实践中&#xff0c;常常需要将同一应用同时部署到多个集群中。应用中心支持将同一个数据源定义的应用&#xff0c;通过应用组的形式一键部署到多个集群中&#xff0c;实现统一管理。 作者&#xff1a;指北 背景 在现实中的应用交付实践中…

vue cil安装axios

Vue cil 安装axios1、安装axioscnpm install axios 如果没有安装cnpm的可能安装不成功&#xff0c;这里列出安装cnpm&#xff0c;使用淘宝镜像。 npm install -g cnpm --registryhttps://registry.npm.taobao.org2、使用方法 2.1、首先在main.js配 import axios from "…

抖音实战~MD5加密+盐值工具类

package com.gblfy.utils;import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.DigestUtils;import java.util.UUID;/*** MD5加密盐值工具类** author gblfy* Date 2022-06-22**/ Slf4j Component public cl…

从程序员到上市公司合伙人,怎么少踩坑?

‍‍‍‍科技发展日新月异&#xff0c;对于程序员来说&#xff0c;不断地自我修炼必须提上日程。某种程度上&#xff0c;阅读是一条通往成功的捷径。当你被技术难题卡住时&#xff0c;去读书吧&#xff0c;去书里寻找答案当你感到人生困顿迷茫时&#xff0c;去读书吧&#xff0…

读完《云原生架构白皮书》,我们来谈谈开放应用模型(OAM)

简介&#xff1a; 受阿里云邀请&#xff0c;我有幸在《云原生架构白皮书》发布前试读了该书&#xff0c;本文结合白皮书内容&#xff0c;谈谈开放应用模型&#xff08;OAM&#xff09; 前言 7月21日阿里云发布了《云原生架构白皮书》&#xff0c;该书由阿里云众多技术专家共同…

抖音实战~手机号密码一键注册登录流程(限制手机终端登录)

文章目录一、手机号密码二、前端2.1. 点击登陆流程2.2. 点击登录源码三、后端登录3.1. 登录流程图3.2. 流程简述3.3. 手机号验证码登录流程一、手机号密码 二、前端 2.1. 点击登陆流程 1.先校验手机号是否合法&#xff1f;不合法&#xff0c;则提示“请输入正确的手机号”2.再…

揭秘!信息检索技术高端玩法

《SIGIR 顶会论文解读》重磅发布 由 7 位阿里巴巴技术专家精心打造&#xff0c;内容覆盖推荐系统 、成交转化模型 、 回音室效应 、 全空间多任务转化率预估建模 、 DeepMatch 召回模型 、 跨领域冷启动用户推荐网络 、 表示学习模型等信息检索领域新技术。 精彩内容抢先看 1、…

VSCODE远程连接服务器,远程开发。

在开发中有时需要远程开发&#xff0c;需要远程连接服务器&#xff0c;所以需要学习一下如何远程连接。 1、安装vscode的插件&#xff1a;Remote-ssh 需要看清楚&#xff0c;是这个插件不要安装错了 2、安装好后打开命令行&#xff0c;快捷键 CtrlShiftp&#xff0c;输入ssh查…

【技术史】数据中台的前世今生

数据中台自14年至今&#xff0c;已然成为了2B、2G业务最热门的话题&#xff0c;政府机构、企事业单位、互联网公司等进行着数字化、数据化、智能化转型。市场普遍认为&#xff0c;阿里巴巴将自身数据中台建设能力对外赋能是拉起本轮数据中台浪潮的根本所在。 本文将带你全面了…

抖音实战~密码找回

文章目录1. 密码找回流程图2. 前端源码3. 后端1. 密码找回流程图 2. 前端源码 /*** 密码找回*/updatePassword() {var me this;var mobile me.mobile;// 提交前&#xff0c;手机号校验var reg /^1[0-9]{10,10}$/;if (!mobile || !reg.test(mobile)) {uni.showToast({title: …

排队五小时才能吃上一口的Popeyes,要借阿里云数据中台10年内开足1500家门店

几个月前&#xff0c;还没多少国人了解美国炸鸡品牌Popeyes&#xff0c;但现在&#xff0c;Popeyes却成为上海滩最火爆的网红店&#xff1a;5月在上海市淮海中路开出首家门店当天&#xff0c;早上7点半&#xff0c;第一条队伍就已排出了半条街。 面对良好的开局&#xff0c;Po…

关于Background-size的几个参数区别

background-size&#xff0c;大致有几种参数&#xff1a;cover、contain、100% cover会横向自适应&#xff0c;但是高度会被裁剪。 contain:会保持图片的比例&#xff0c;但是如果图片的比例与实际div的比例不对&#xff0c;会有缺失。 100%&#xff1a;会铺满屏幕但是图片会…

干货!Redis集群工作原理解析

作者 | 张小盼头图 | 下载于东方IC出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;Redis 缓存因其访问性能高、可靠性更高&#xff0c;作为缓存工具在各大互联网公司中广泛使用。今天我们就来看看Redis Cluster 的实现原理。集群建立Redis集群是由多个Redis…

让小程序在自有App中启动的技术来了:mPaaS小程序架构深度解析

本文将围绕支付宝在移动端架构的演进逐步展开&#xff0c;分享我们在“App 动态性”“提升研发效率”等方面所做的思考和具体实践。同时&#xff0c;针对 mPaaS 小程序能力的开放&#xff0c;也将展开介绍我们如何实现“小程序代码只写一次&#xff0c;多端投放”&#xff0c;而…

抖音实战~分布式文件存储~SpringBoot集成MinIO

文章目录1. 引入依赖2. yml配置3. 客户端配置4. 工具类5. 需求实战6. 效果图1. 引入依赖 <!-- MinIO --><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.1</version></dependency>…

axios如何设置baseUrl

1、在请求api时&#xff0c;有时要去访问其他服务端的数据&#xff0c;之前我在本地启动项目的时候用devServe来进行代理&#xff0c;但是当自己打包好后&#xff0c;如果没有服务端的配置&#xff0c;只是在本地打开index.html页面会api请求会带上本地路径。 如果你已经安装好…

笑联 x mPaaS | 12 个模块,全面小程序化,如何打造真正的一次开发复用多端?

这篇故事围绕着一款 App 基于 mPaaS 小程序进行改造娓娓展开。 作为国内校园服务场景最丰富的平台&#xff0c;笑联 App 已覆盖国内 130 所高校&#xff0c;服务近百万高校学生。 截止目前&#xff0c;笑联 App 内的 12 个业务模块目前已顺利实现小程序化。不仅获得媲美原生应用…

万字长文梳理:从0开始,步入Service Mesh微服务架构的世界

来源 | 无敌码农责编 |贾凯强头图 | 下载于视觉中国新一代微服务架构——Service Mesh已经引发了诸多关注。在微服务架构盛行的今天&#xff0c;像Spring Cloud这样的微服务框架大家已然耳熟能详 &#xff0c;因为大部分互联网公司都在此基础上构建过第一代微服务体系&#xff…

开放下载!《大促背后的前端核心业务实践》

《大促背后的前端核心业务实践》电子书重磅发布! 2020年618大促已经过去&#xff0c;作为淘系每年重要的大促活动&#xff0c;淘系前端在其中扮演着什么样的角色&#xff0c;如何保证大促的平稳进行&#xff1f;又在其中应用了哪些新技术&#xff1f;淘系技术联合阿里云开发者…

企业级~uni-app网络请求封装

目录结构(根目录开始) ├── api # 所有请求 │ └── user.js # 用户请求api ├── store # 全局store管理 │ └── modules # api模块 │ │ └── user.js # 用户请求模块…