Flowable3-配置

創(chuàng)建一個(gè)ProcessEngine

Flowable流程引擎通過名為的XML文件進(jìn)行配置flowable.cfg.xml.
獲得一個(gè)最簡單的方法ProcessEngine是使用這個(gè)org.flowable.engine.ProcessEngines類:

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

會在類路徑中查找文件flowable.cfg.xml, 并根據(jù)該文件中的配置構(gòu)建引擎. 以下片段顯示了一個(gè)示例配置. 以下部分將詳細(xì)介紹配置屬性.

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

  <bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration">

    <property name="jdbcUrl" value="jdbc:h2:mem:flowable;DB_CLOSE_DELAY=1000" />
    <property name="jdbcDriver" value="org.h2.Driver" />
    <property name="jdbcUsername" value="sa" />
    <property name="jdbcPassword" value="" />

    <property name="databaseSchemaUpdate" value="true" />

    <property name="asyncExecutorActivate" value="false" />

    <property name="mailServerHost" value="mail.my-corp.com" />
    <property name="mailServerPort" value="5025" />
  </bean>
</beans>

請注意, 配置的XML實(shí)際上是一個(gè)Spring配置. 這并不意味著Flowable只能在Spring環(huán)境中使用! 我們只是利用Spring內(nèi)部的解析和依賴注入功能來構(gòu)建引擎.

注意 在flowable.cfg.xml必須包含有ID processEngineConfiguration 的Bean


數(shù)據(jù)庫配置

有兩種方法來配置Flowable引擎將使用的數(shù)據(jù)庫. 第一個(gè)選項(xiàng)是定義數(shù)據(jù)庫的JDBC屬性:
jdbcUrl:數(shù)據(jù)庫的JDBC URL.
jdbcDriver:執(zhí)行特定數(shù)據(jù)庫類型的驅(qū)動(dòng)程序.
jdbcUsername:連接到數(shù)據(jù)庫的用戶名.
jdbcPassword:連接到數(shù)據(jù)庫的密碼.

基于提供的JDBC屬性構(gòu)建的數(shù)據(jù)源將具有默認(rèn)的MyBatis連接池設(shè)置. 可以選擇設(shè)置以下屬性來調(diào)整連接池(取自MyBatis文檔):
jdbcMaxActiveConnections:連接池在任何時(shí)間最多可以包含的活動(dòng)連接數(shù).默認(rèn)值是10.
jdbcMaxIdleConnections:連接池在任何時(shí)間最多可以包含的空閑連接數(shù).
jdbcMaxCheckoutTime:在強(qiáng)制返回連接之前, 可以從連接池中檢出連接的時(shí)間量(以毫秒為單位).默認(rèn)是20000(20秒).
jdbcMaxWaitTime:這是一個(gè)低級別的設(shè)置, 讓池有機(jī)會打印日志狀態(tài), 并重新嘗試獲取連接, 以防異常耗時(shí)(為了避免在池被錯(cuò)誤配置的情況下永遠(yuǎn)失敗)是20000(20秒).

示例數(shù)據(jù)庫配置:

<property name="jdbcUrl" value="jdbc:h2:mem:flowable;DB_CLOSE_DELAY=1000" />
<property name="jdbcDriver" value="org.h2.Driver" />
<property name="jdbcUsername" value="sa" />
<property name="jdbcPassword" value="" />

我們的基準(zhǔn)測試表明, 在處理大量的并發(fā)請求時(shí), MyBatis連接池并不是最高效或靈活的. 因此, 建議使用javax.sql.DataSource實(shí)現(xiàn), 并將其注入流程引擎配置(例如DBCP, C3P0, Hikari, Tomcat連接池等):

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  <property name="url" value="jdbc:mysql://localhost:3306/flowable" />
  <property name="username" value="flowable" />
  <property name="password" value="flowable" />
  <property name="defaultAutoCommit" value="false" />
</bean>

<bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration">

  <property name="dataSource" ref="dataSource" />
  ...

無論您使用JDBC還是數(shù)據(jù)源, 都可以設(shè)置以下屬性:
databaseType: 通常不需要指定該屬性, 因?yàn)樗梢詮哪愕臄?shù)據(jù)庫連接字符串中自動(dòng)檢測. 如果自動(dòng)檢測失敗時(shí)需要指定. 能選擇的值有{h2, mysql, oracle, postgres, mssql, db2}.
databaseSchemaUpdate: 設(shè)置策略來處理流程引擎啟動(dòng)和關(guān)閉時(shí)的數(shù)據(jù)庫模式.
false(默認(rèn)值):在創(chuàng)建流程引擎時(shí)檢查數(shù)據(jù)庫模式的版本,如果版本不匹配,則引發(fā)異常.
true: 在構(gòu)建流程引擎時(shí), 將執(zhí)行檢查, 并在必要時(shí)執(zhí)行架構(gòu)的更新. 如果架構(gòu)不存在, 則會創(chuàng)建該架構(gòu).
create-drop: 在創(chuàng)建流程引擎時(shí)創(chuàng)建模式, 并在流程引擎關(guān)閉時(shí)刪除模式.


支持的數(shù)據(jù)庫


MySQL用戶注意

低于5.6.4的MySQL版本不支持時(shí)間戳或毫秒級精度的日期. 更糟糕的是, 有些版本在創(chuàng)建這樣的列時(shí)會拋出異常, 而其他版本則不會.

具體來說, 以下適用于MySQL版本:
<5.6: 沒有可用的毫秒精度. DDL文件可用(查找包含mysql55的文件).可以直接使用自動(dòng)創(chuàng)建/更新.

5.6.0 - 5.6.3: 沒有可用的毫秒精度. 自動(dòng)創(chuàng)建/更新將不起作用. 建議無論如何升級到更新的數(shù)據(jù)庫版本. 如果不行, 可以使用mysql 5.5的 DDL文件.

5.6.4+: 可用的毫秒精度. 可用的DDL文件(包含mysql的默認(rèn)文件). 可直接使用自動(dòng)創(chuàng)建/更新.


數(shù)據(jù)庫表名解釋

Flowable的數(shù)據(jù)庫名稱都以ACT_開頭. 第二部分是表用例的兩字符識別. 這個(gè)用例也將大致匹配服務(wù)API.
ACT_RE_ *: RE代表repository. 帶有此前綴的表包含靜態(tài)信息, 如流程定義和流程資源(圖像, 規(guī)則等).

ACT_RU_ *: RU代表runtime. 這些是包含流程實(shí)例, 用戶任務(wù), 變量, 作業(yè)等的運(yùn)行時(shí)數(shù)據(jù)存儲表. Flowable僅在流程實(shí)例執(zhí)行期間存儲運(yùn)行時(shí)數(shù)據(jù), 并在流程實(shí)例結(jié)束時(shí)刪除記錄. 這使運(yùn)行時(shí)間小而快速.

ACT_HI_ *: HI代表history. 這些表格包含歷史數(shù)據(jù), 例如過去的流程實(shí)例, 變量, 任務(wù)等等.

ACT_GE_ *: general數(shù)據(jù), 用于各種用例.


數(shù)據(jù)庫升級

確保在運(yùn)行升級之前備份數(shù)據(jù)庫(使用數(shù)據(jù)庫備份功能).

默認(rèn)情況下, 每次創(chuàng)建流程引擎時(shí)都會執(zhí)行版本檢查. 這通常發(fā)生在您的應(yīng)用程序或Flowable Web應(yīng)用程序啟動(dòng)時(shí). 如果Flowable庫注意到庫版本和Flowable數(shù)據(jù)庫表版本之間存在差異, 則拋出異常.

要進(jìn)行升級, 您必須先將以下配置屬性放在flowable.cfg.xml配置文件中:

<beans >

  <bean id="processEngineConfiguration"
      class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration">
    <!-- ... -->
    <property name="databaseSchemaUpdate" value="true" />
    <!-- ... -->
  </bean>

</beans>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市韭畸,隨后出現(xiàn)的幾起案子卿捎,更是在濱河造成了極大的恐慌饼齿,老刑警劉巖拳话,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漫仆,死亡現(xiàn)場離奇詭異泊碑,居然都是意外死亡坤按,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門馒过,熙熙樓的掌柜王于貴愁眉苦臉地迎上來臭脓,“玉大人,你說我怎么就攤上這事腹忽±蠢郏” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵窘奏,是天一觀的道長嘹锁。 經(jīng)常有香客問我,道長着裹,這世上最難降的妖魔是什么领猾? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮骇扇,結(jié)果婚禮上摔竿,老公的妹妹穿的比我還像新娘。我一直安慰自己匠题,他們只是感情好拯坟,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著韭山,像睡著了一般郁季。 火紅的嫁衣襯著肌膚如雪冷溃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天梦裂,我揣著相機(jī)與錄音似枕,去河邊找鬼。 笑死年柠,一個(gè)胖子當(dāng)著我的面吹牛凿歼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冗恨,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼答憔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了掀抹?” 一聲冷哼從身側(cè)響起虐拓,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎傲武,沒想到半個(gè)月后蓉驹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揪利,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年态兴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疟位。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瞻润,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出献汗,到底是詐尸還是另有隱情敢订,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布罢吃,位于F島的核電站,受9級特大地震影響昭齐,放射性物質(zhì)發(fā)生泄漏尿招。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一阱驾、第九天 我趴在偏房一處隱蔽的房頂上張望就谜。 院中可真熱鬧,春花似錦里覆、人聲如沸丧荐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虹统。三九已至弓坞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間车荔,已是汗流浹背渡冻。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忧便,地道東北人族吻。 一個(gè)月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像珠增,于是被迫代替她去往敵國和親超歌。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

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