Activiti5工作主要流主要原始碼解析

2021-07-26 20:01:02 字數 3266 閱讀 5435

從整體結構來看processengineconfiguration很關鍵,其實現類為org.activiti

.engine

.impl

.cfg

.processengineconfigurationimpl,其中其初始化的方法為:

protectedvoidinit()

上面的各個初始化語句的作用如下:

1、inithistorylevel():初始化historylevel,主要內容如下:

publicvoidinithistorylevel()elseif(history_activity.equalsignorecase(history))elseif(history_audit.equalsignorecase(history))elseif(history_full.equalsignorecase(history))else

}2、initexpressionmanager():初始化expressionmanager,主要內容如下:

protectedvoidinitexpressionmanager()

}3、initvariabletypes():初始化variabletypes,主要內容如下:

protectedvoidinitvariabletypes()

}variabletypes.addtype(newnulltype());

variabletypes.addtype(newstringtype());

variabletypes.addtype(newbooleantype());

variabletypes.addtype(newshorttype());

variabletypes.addtype(newintegertype());

variabletypes.addtype(newlongtype());

variabletypes.addtype(newdatetype());

variabletypes.addtype(newdoubletype());

variabletypes.addtype(newbytearraytype());

variabletypes.addtype(newserializabletype());

variabletypes.addtype(newcustomobjecttype("item",iteminstance.class));

variabletypes.addtype(newcustomobjecttype("message",messageinstance.class));

if(custompostvariabletypes!=null)}}

}4、initformengines():初始化formengines,主要內容如下:

protectedvoidinitformengines()

if(customformengines!=null)}}

5、initformtypes():

6、initscriptingengines():

7、initbusinesscalendarmanager():

8、initcommandcontextfactory():初始化commandcontextfactory,主要內容如下:

protectedvoidinitcommandcontextfactory()

}9、inittransactioncontextfactory():

10、initcommandexecutors():初始化commandexecutors,主要內容如下:

protectedvoidinitcommandexecutors()

注意:從上面的四個方法的實現(源**不在這裡貼出)可以看出,「命令執行***」可以增加自定義的***,分別可以指定成預處理和後處理兩部分,具體的變數為customprecommandinterceptorstxrequired、custompostcommandinterceptorstxrequired、customprecommandinterceptorstxrequiresnew、custompostcommandinterceptorstxrequiresnew。這些都是集合型別的變數,另外「命令執行***」之所以要區分為「txrequired」和「txrequiresnew」還不是很清楚,從目前源**中可以看出initidgenerator()初始化的方法中採用了commandexecutortxrequiresnew的「命令執行***」的集合。***的類結構圖如下:

11、initservices():初始化工作流引擎的各個service,主要內容如下:

protectedvoidinitservices()

protectedvoidinitservice(objectservice)

}注意:此處初始化只是為各個service設定「命令執行***」,並且該「命令執行***」已經在initcommandexecutors()方法中初始化過了,另外從源**中可以看出,每個service的「命令執行者」都是由「loginterceptor-->commandcontextinterceptor-->commandexecutorimpl」組成的執行鏈狀結構。注意,其中commandcontextinterceptor方法中對資料庫操作的作用較大,要多關注。

12、initidgenerator():初始化自增長序列生成器。

13、initdeployers():初始化部署者,具體**如下:

protectedvoidinitdeployers()

deployers.addall(getdefaultdeployers());

if(custompostdeployers!=null)

}}注意:從**中可以看到部署者分為自定義的預部署者和後部署者,另外從**裡可以按到預設的部署者是bpmndeployer。至於自定義部署者的用途還需要繼續分析。

14、initjobexecutor():初始化定時任務執行器

15、initdatasource():初始化資料來源

16、inittransactionfactory():初始化事務工廠

17、initsqlsessionfactory():初始化sqlsessionfactory,主要是初始化ibatis的配置等相關資訊,**如下:

protectedvoidinitsqlsessionfactory()catch(exceptione)finally}}

18、initsessionfactories():初始化各個主要service的sessionfactory

19、initjpa():初始化jpa

Activiti5工作流引擎

1.1 1 pocessengine是activiti中最核心的類,其他的類都是由他而來 1.1 2 產生方式 processengine processengine processengines.getdefaultprocessengine 呼叫 processengine的getdefault...

activiti5 工作流的入門

activiti5 工作流的入門,最近工作需要,學習了一下工作流,使用的是activiti 它的前身是jbpm。在入門階段,我推薦可以看 接著可以結合activiti的文件pdf和咖啡兔的demo來檢視工作流的一些功能,比如流程圖匯出,任務完成,流程例項啟動等。總結一下activiti的幾個重點 1...

人工神經網路的研究工作,主要包括哪幾個方面?

1 人工神經網路模型的研究 人工神經網路模型的研究包括 神經網路原型研究,即大腦神經網路的生理結構 思維機制 對神經元生物特性的人工模擬 如時空特性 不應期 電化學性質等 神經網路計算模型與學習演算法 利用物理學的方法進行單元間相互作用理論的研究 如聯想記憶模型等 2 神經網路基本理論研究 神經網路...