官术网_书友最值得收藏!

2.9 其他方式構造引擎實例

上文分析了ProcessEngines類中的靜態(tài)方法getDefaultProcessEngine實例化流程引擎的過程,但是這種創(chuàng)建方式存在如下兩個缺陷。

(1)activiti.cfg.xml或者activiti-context.xml文件必須位于項目的classpath根目錄中,否則加載不到。

(2)activiti.cfg.xml文件中流程引擎配置類的bean的id值必須是processEngine-Configuration(默認情況下)。

看到以上兩個問題,難免會有疑問:配置文件的路徑可以靈活變動嗎?配置文件的名稱可以修改嗎?配置文件中流程引擎配置類的bean的id值可以是任意值嗎?這也是接下來重點講解的地方。

2.9.1 ProcessEngineConfiguration類創(chuàng)建引擎

ProcessEngineConfiguration類中提供了一系列創(chuàng)建流程引擎配置類實例對象的靜態(tài)方法,從而方便客戶端獲取流程引擎實例對象,而無須關心其內(nèi)部實現(xiàn)細節(jié),這些方法的定義如代碼清單2-32所示。

代碼清單2-32 ProcessEngineConfiguration.java

Activiti在ProcessEngineConfiguration類中為開發(fā)者提供了豐富多彩的靜態(tài)方法,用于創(chuàng)建流程引擎配置類實例對象,下面對該類中的方法進行總結說明。

(1)第1行定義的createProcessEngineConfigurationFromResourceDefault方法:該方法直接調(diào)用第7行定義的方法進行處理,并傳入第7行定義的方法需要的兩個輸入?yún)?shù)值,通過分析傳入的參數(shù)值可以得知,該方式構造流程引擎配置類實例需要的配置文件名稱必須為activiti.cfg.xml并且位于classpath根目錄中,配置文件中流程引擎配置類的bean的id值必須是processEngineConfiguration。

(2)第4行定義的createProcessEngineConfigurationFromResource方法:該方法直接調(diào)用第7行定義的方法進行處理,并傳入第7行定義的方法需要的兩個輸入?yún)?shù)值,其中resource參數(shù)值客戶端可以自定義,beanName為processEngineConfiguration對應配置文件中流程引擎配置類的bean的id值。

(3)第7行定義的createProcessEngineConfigurationFromResource方法:該方法比較靈活,resource和beanName兩個輸入?yún)?shù)值客戶端均可自定義。

(4)第10行定義的createProcessEngineConfigurationFromInputStream方法:inputStream參數(shù)為配置文件的數(shù)據(jù)流,beanName必須是processEngineConfiguration(不需要傳遞)。

(5)第13行定義的createProcessEngineConfigurationFromInputStream方法:inputStream參數(shù)為配置文件的數(shù)據(jù)流,beanName對應配置文件中流程引擎配置類中bean的id值,兩者均可自定義。

(6)第16行定義的createStandaloneProcessEngineConfiguration方法:創(chuàng)建Standalone-ProcessEngineConfiguration實例對象。

(7)第19行定義的createStandaloneInMemProcessEngineConfiguration方法:該方法主要用于創(chuàng)建StandaloneInMemProcessEngineConfiguration實例對象。

看到上面一系列的方法,可能會有這樣的疑問:以上羅列的所有方法均是創(chuàng)建ProcessEngineConfiguration實例對象,并沒有提供構造ProcessEngine實例對象的方法。其實這樣的設計也不難理解,只要能夠獲取到ProcessEngineConfiguration實例對象,就可以直接調(diào)用該實例對象的buildProcessEngine方法創(chuàng)建ProcessEngine實例。

2.9.2 編程方式創(chuàng)建引擎

以上幾種方式均是通過配置文件創(chuàng)建ProcessEngineConfiguration實例對象,進而通過該實例對象創(chuàng)建ProcessEngine實例對象,接下來講解如何使用編程方式創(chuàng)建流程引擎實例,具體實現(xiàn)如代碼清單2-33所示。

代碼清單2-33 App.java

上面代碼的實現(xiàn)邏輯非常簡單,首先第2行創(chuàng)建ProcessEngineConfiguration實例對象,然后第4~10行為該實例對象填充屬性值,最終第11行調(diào)用該實例對象的buildProcessEngine方法完成引擎實例的創(chuàng)建工作。

主站蜘蛛池模板: 潮州市| 彭水| 天台县| 仙居县| 新乡县| 万州区| 那曲县| 泾阳县| 奎屯市| 承德县| 鸡泽县| 焉耆| 绵阳市| 黔南| 城市| 曲阳县| 乡宁县| 延边| 乐至县| 新龙县| 来宾市| 醴陵市| 嘉祥县| 凤台县| 白山市| 三河市| 盐源县| 隆化县| 咸丰县| 清涧县| 太原市| 苍溪县| 恭城| 邳州市| 尉犁县| 繁峙县| 泰宁县| 武功县| 巴里| 滦南县| 永嘉县|