Flowable全局監(jiān)聽(tīng)配置

在Flowable工作流開(kāi)發(fā)中很常見(jiàn)問(wèn)題每個(gè)任務(wù)節(jié)點(diǎn)都有相同的操作或者一個(gè)流程結(jié)束后需要做什么操作此時(shí)都可以用到全局監(jiān)聽(tīng) 直接上代碼冠王!

// 全局監(jiān)聽(tīng)配置類
package com.tlsq.service.workflow.config;

import com.google.common.collect.Maps;
import com.tlsq.service.workflow.monitor.SequenceListener;
import com.tlsq.service.workflow.monitor.TaskBeforeListener;
import com.tlsq.service.workflow.monitor.TaskRearListener;
import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType;
import org.flowable.common.engine.api.delegate.event.FlowableEventListener;
import org.flowable.spring.SpringProcessEngineConfiguration;
import org.flowable.spring.boot.EngineConfigurationConfigurer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * flowable 全局監(jiān)聽(tīng)器配置類
 * @author: Lu Yang
 */
@Configuration
public class FlowableListenerConfig {

    // flowable監(jiān)聽(tīng)級(jí)別參照 {@link FlowableEngineEventType} org.flowable.common.engine.api.delegate.event
    /**
     * 任務(wù)節(jié)點(diǎn)前置監(jiān)聽(tīng)
     */
    private static final String FLOWABLE_TASK_NODE_REAR_LISTENER = "TASK_COMPLETED";

    // 自己建立監(jiān)聽(tīng)類實(shí)現(xiàn)FlowableEventListener接口
    /**
     * 任務(wù)節(jié)點(diǎn)前置監(jiān)聽(tīng)
     */
    private final TaskBeforeListener taskBeforeListener;


    @Autowired
    public FlowableListenerConfig(TaskBeforeListener taskBeforeListener) {
        this.taskBeforeListener = taskBeforeListener;
    }

    /**
     * 將自定義監(jiān)聽(tīng)器納入flowable監(jiān)聽(tīng)
     * @author: Lu Yang
     * @date: 2019/5/4 21:05
     * @param
     * @return org.flowable.spring.boot.EngineConfigurationConfigurer<org.flowable.spring.SpringProcessEngineConfiguration>
     */
    @Bean
    public EngineConfigurationConfigurer<SpringProcessEngineConfiguration> globalListenerConfigurer () {
        return engineConfiguration -> {
            engineConfiguration.setTypedEventListeners(this.customFlowableListeners());
        };
    }

    /**
     * 監(jiān)聽(tīng)類配置 {@link FlowableEngineEventType} flowable監(jiān)聽(tīng)器級(jí)別
     * @author: Lu Yang
     * @date: 2019/5/4 20:58
     * @param
     * @return java.util.Map<java.lang.String,java.util.List<org.flowable.common.engine.api.delegate.event.FlowableEventListener>>
     */
    private Map<String, List<FlowableEventListener>> customFlowableListeners () {
        Map<String, List<FlowableEventListener>> listenerMap = Maps.newHashMap();
        listenerMap.put(FLOWABLE_TASK_NODE_BEFORE_LISTENER, new ArrayList<>(Collections.singletonList(getTaskBeforeListener())));
    }

    public TaskBeforeListener getTaskBeforeListener() {
        return taskBeforeListener;
    }
}

package com.tlsq.service.workflow.monitor;

import org.flowable.common.engine.api.delegate.event.FlowableEvent;
import org.flowable.common.engine.api.delegate.event.FlowableEventListener;
import org.flowable.common.engine.impl.event.FlowableEntityEventImpl;
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
import org.springframework.stereotype.Component;

/**
 * 任務(wù)節(jié)點(diǎn)前置監(jiān)聽(tīng)處理類
 * @author: Lu Yang
 * @create: 2019-05-04 20:51
 **/
@Component
public class TaskBeforeListener implements FlowableEventListener {

    @Override
    public void onEvent(FlowableEvent event) {

        // 當(dāng)前節(jié)點(diǎn)任務(wù)實(shí)體
        TaskEntity taskEntity = (TaskEntity) ((FlowableEntityEventImpl) event).getEntity();
        // TODO 獲取到了taskEntity 自己做每個(gè)節(jié)點(diǎn)的前置操作

    }

    @Override
    public boolean isFailOnException() {
        return false;
    }

    @Override
    public boolean isFireOnTransactionLifecycleEvent() {
        return false;
    }

    @Override
    public String getOnTransaction() {
        return null;
    }
}

https://gitee.com/cn-luyang/luyang-cloud.git
自己整了個(gè)項(xiàng)目体谒,期待小伙伴一起玩
歡迎大佬們提交PR
朋友們幫忙點(diǎn)個(gè)starter偶器,感謝了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拔恰,一起剝皮案震驚了整個(gè)濱河市抑片,隨后出現(xiàn)的幾起案子仇味,更是在濱河造成了極大的恐慌照宝,老刑警劉巖蛇受,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異厕鹃,居然都是意外死亡兢仰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)剂碴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)把将,“玉大人,你說(shuō)我怎么就攤上這事忆矛〔於祝” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵催训,是天一觀的道長(zhǎng)洽议。 經(jīng)常有香客問(wèn)我,道長(zhǎng)瞳腌,這世上最難降的妖魔是什么绞铃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮嫂侍,結(jié)果婚禮上儿捧,老公的妹妹穿的比我還像新娘。我一直安慰自己挑宠,他們只是感情好菲盾,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著各淀,像睡著了一般懒鉴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碎浇,一...
    開(kāi)封第一講書(shū)人閱讀 49,806評(píng)論 1 290
  • 那天临谱,我揣著相機(jī)與錄音,去河邊找鬼奴璃。 笑死悉默,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苟穆。 我是一名探鬼主播抄课,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼唱星,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了跟磨?” 一聲冷哼從身側(cè)響起间聊,我...
    開(kāi)封第一講書(shū)人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抵拘,沒(méi)想到半個(gè)月后哎榴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仑濒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年叹话,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了偷遗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片墩瞳。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖氏豌,靈堂內(nèi)的尸體忽然破棺而出喉酌,到底是詐尸還是另有隱情,我是刑警寧澤泵喘,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布泪电,位于F島的核電站,受9級(jí)特大地震影響纪铺,放射性物質(zhì)發(fā)生泄漏相速。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一鲜锚、第九天 我趴在偏房一處隱蔽的房頂上張望突诬。 院中可真熱鬧,春花似錦芜繁、人聲如沸旺隙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蔬捷。三九已至,卻和暖如春榔袋,著一層夾襖步出監(jiān)牢的瞬間周拐,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工凰兑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留妥粟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓聪黎,卻偏偏與公主長(zhǎng)得像备恤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子露泊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • feisky云計(jì)算旅择、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,827評(píng)論 0 5
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,092評(píng)論 1 32
  • 兩戰(zhàn)皆負(fù)惭笑,0比4鄭城,0比1實(shí)小生真,滿滿的遺憾沉噩,宓梓童點(diǎn)球不進(jìn)柱蟀,宣告了爭(zhēng)五名徹底失敗川蒙。孩子們已經(jīng)盡力了长已,總結(jié)起來(lái)畜眨,...
    教數(shù)學(xué)的體育老師類閱讀 307評(píng)論 0 1
  • 大家好,不知不覺(jué)加入天使2.0已經(jīng)4周了术瓮,100天的大目標(biāo)我把它分為4個(gè)小目標(biāo)康聂,第一個(gè)小的目標(biāo)堅(jiān)持一個(gè)月已經(jīng)完成。...
    7組68號(hào)何幼祝閱讀 141評(píng)論 0 1
  • 妹子千姿百態(tài)睡姿辜伟,你們都是累壞了嗎氓侧!奇趣馬上跟大家看一下妹子的搞笑睡姿游昼! 1 你一定是洗累了 2 這一天上班辛苦的...
    萬(wàn)象視聽(tīng)閱讀 2,130評(píng)論 0 0