activiti學(xué)習(xí)筆記(十五)事件日志

今天要分享的是activiti流程配置中的事件日志配置炫加,它起到的作用是當(dāng)工作流事件觸發(fā)時(shí)歧焦,保存事件的日志到數(shù)據(jù)庫(kù)中姨伤,記錄日志。
首先我們?cè)赼ctiviti.cfg.xml文件中添加屬性如下:

<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_activiti" />
        <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUsername" value="root" />
        <property name="jdbcPassword" value="abc123" />
        <property name="enableDatabaseEventLogging" value="true"></property>
</bean>

上述配置中增加的屬性就是enableDatabaseEventLogging界拦,value設(shè)置為true,表示流程啟動(dòng)后會(huì)自動(dòng)保存事件日志到數(shù)據(jù)庫(kù)中,默認(rèn)這個(gè)屬性值為false梗劫,即不保存日志享甸。雖然保存了事件日志,但是并不會(huì)直接打印到控制臺(tái)上梳侨,為此蛉威,需要我們?cè)诖a中獲取事件日志對(duì)象,并輸出走哺,下面是個(gè)示例:

// 1. 創(chuàng)建流程引擎 processEngine
// 2. 創(chuàng)建流程定義 processDefinition
// 3. 創(chuàng)建流程實(shí)例 processInstance
// 4. 獲取事件日志對(duì)象列表
List<EventLogEntry> eventLogEntries = processEngine.
                getManagementService().
                getEventLogEntriesByProcessInstanceId(processInstance.getProcessInstanceId());
for(EventLogEntry eventLogEntry : eventLogEntries){
            logger.info("eventLogEntries.type={},eventLogEntries.Data={}",eventLogEntry.getType(),eventLogEntry.getData());
}
logger.info("eventLogEntries.size={}",eventLogEntries.size());

上述代碼中使用getManagementService()方法獲取managerservice對(duì)象蚯嫌,并通過getEventLogEntriesByProcessInstanceId獲取事件日志對(duì)象列表,最后顯示這個(gè)List割坠,結(jié)果輸出如下:

[main] INFO com.activiti.HelloWorld - eventLogEntries.type=PROCESSINSTANCE_START,eventLogEntries.Data=[...]
[main] INFO com.activiti.HelloWorld - eventLogEntries.type=ACTIVITY_STARTED,eventLogEntries.Data=[...]
[main] INFO com.activiti.HelloWorld - eventLogEntries.type=ACTIVITY_COMPLETED,eventLogEntries.Data=[...]
[main] INFO com.activiti.HelloWorld - eventLogEntries.type=SEQUENCEFLOW_TAKEN,eventLogEntries.Data=[...]
[main] INFO com.activiti.HelloWorld - eventLogEntries.type=ACTIVITY_STARTED,eventLogEntries.Data=[...]
[main] INFO com.activiti.HelloWorld - eventLogEntries.type=TASK_CREATED,eventLogEntries.Data=[...]
[main] INFO com.activiti.HelloWorld - eventLogEntries.size=6

可以看到流程啟動(dòng)的過程中觸發(fā)了上述6個(gè)事件齐帚,由于日志是保存到數(shù)據(jù)庫(kù)中的,所以獲取事件日志這個(gè)操作實(shí)際上也是從數(shù)據(jù)庫(kù)讀數(shù)據(jù)的過程彼哼。
下面我們來(lái)看下這個(gè)配置的實(shí)現(xiàn)過程对妄。
首先,xml中添加這個(gè)屬性對(duì)應(yīng)于ProcessEngineConfigurationImpl類的方法:

public ProcessEngineConfigurationImpl setEnableDatabaseEventLogging(boolean enableDatabaseEventLogging) {
    this.enableDatabaseEventLogging = enableDatabaseEventLogging;
    return this;
  }

這個(gè)this.enableDatabaseEventLogging方法在哪里用到呢敢朱?

public void initDatabaseEventLogging() {
    if (enableDatabaseEventLogging) {
      // Database event logging uses the default logging mechanism and adds
      // a specific event listener to the list of event listeners
      getEventDispatcher().addEventListener(new EventLogger(clock, objectMapper));
    }
  }

這個(gè)初始化方法會(huì)在流程引擎創(chuàng)建后的初始化方法中被調(diào)用剪菱,因此enableDatabaseEventLogging為true時(shí)就會(huì)添加一個(gè)事件監(jiān)聽器,當(dāng)監(jiān)聽器監(jiān)聽到事件觸發(fā)后保存日志信息拴签。activiti內(nèi)部的監(jiān)聽器具體的實(shí)現(xiàn)細(xì)節(jié)此處不再深入孝常,后續(xù)將會(huì)有單獨(dú)一篇博客來(lái)學(xué)習(xí)。
今天是中秋節(jié)假期蚓哩,在家吹著涼風(fēng)构灸,寫下這篇博客,記錄一下學(xué)習(xí)過程岸梨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末喜颁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子曹阔,更是在濱河造成了極大的恐慌半开,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,423評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赃份,死亡現(xiàn)場(chǎng)離奇詭異寂拆,居然都是意外死亡奢米,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,147評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門纠永,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鬓长,“玉大人,你說(shuō)我怎么就攤上這事渺蒿×∈浚” “怎么了?”我有些...
    開封第一講書人閱讀 157,019評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵茂装,是天一觀的道長(zhǎng)怠蹂。 經(jīng)常有香客問我,道長(zhǎng)少态,這世上最難降的妖魔是什么城侧? 我笑而不...
    開封第一講書人閱讀 56,443評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮彼妻,結(jié)果婚禮上嫌佑,老公的妹妹穿的比我還像新娘。我一直安慰自己侨歉,他們只是感情好屋摇,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,535評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幽邓,像睡著了一般炮温。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上牵舵,一...
    開封第一講書人閱讀 49,798評(píng)論 1 290
  • 那天柒啤,我揣著相機(jī)與錄音,去河邊找鬼畸颅。 笑死担巩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的没炒。 我是一名探鬼主播涛癌,決...
    沈念sama閱讀 38,941評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼送火!你這毒婦竟也來(lái)了祖很?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,704評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤漾脂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后胚鸯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骨稿,經(jīng)...
    沈念sama閱讀 44,152評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,494評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坦冠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片形耗。...
    茶點(diǎn)故事閱讀 38,629評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖辙浑,靈堂內(nèi)的尸體忽然破棺而出激涤,到底是詐尸還是另有隱情,我是刑警寧澤判呕,帶...
    沈念sama閱讀 34,295評(píng)論 4 329
  • 正文 年R本政府宣布倦踢,位于F島的核電站,受9級(jí)特大地震影響侠草,放射性物質(zhì)發(fā)生泄漏辱挥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,901評(píng)論 3 313
  • 文/蒙蒙 一边涕、第九天 我趴在偏房一處隱蔽的房頂上張望晤碘。 院中可真熱鬧,春花似錦功蜓、人聲如沸园爷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)童社。三九已至,卻和暖如春端衰,著一層夾襖步出監(jiān)牢的瞬間叠洗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,978評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工旅东, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灭抑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,333評(píng)論 2 360
  • 正文 我出身青樓抵代,卻偏偏與公主長(zhǎng)得像腾节,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荤牍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,499評(píng)論 2 348

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理案腺,服務(wù)發(fā)現(xiàn),斷路器康吵,智...
    卡卡羅2017閱讀 134,631評(píng)論 18 139
  • 最近做了一次對(duì)企業(yè)/云平臺(tái)級(jí)工作流引擎Activiti的調(diào)查: TA劈榨,系出名門——由JBoss公司jBPM4引擎的...
    天空之誠(chéng)閱讀 25,385評(píng)論 7 93
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常晦嵌。 O...
    我想起個(gè)好名字閱讀 5,256評(píng)論 0 9
  • 我又回大北京實(shí)習(xí)啦同辣,這會(huì)兒的天好藍(lán)拷姿,上班的心情好很多的說(shuō)。畢業(yè)就要正式入職了旱函,感覺自己現(xiàn)在跟周圍的同事差距好大响巢,很...
    Candy_M閱讀 195評(píng)論 0 1
  • 成年人的生活沒有容易二字。 他是木匠棒妨,不是細(xì)木工人踪古,是那種要干體力活的木匠。工作房里很嘈雜券腔,是鋸木機(jī)器高速旋轉(zhuǎn)的聲...
    fuga閱讀 117評(píng)論 0 0