執(zhí)行模式-jbpm4.0中文開發(fā)指南(2)
該過程在客戶端的線程中執(zhí)行。僅當(dāng)達(dá)到評估活動時,startProcessInstance方法才返回。換句話說,client process definition . startprocess instance和ClientExecution.signal方法將被阻止,直到下一個等待狀態(tài)到來。
13.2。持久實現(xiàn)模型
進(jìn)程虛擬機(jī)還包含Hibernate映射,用于保存進(jìn)程定義并在任何數(shù)據(jù)庫中執(zhí)行它們。在這樣一個持久的環(huán)境中,為進(jìn)程執(zhí)行提供了一個稱為ExecutionService的特定會話外觀。
兩個配置文件應(yīng)該放在類路徑下:一個環(huán)境配置文件和一個hibernate.properties文件。在標(biāo)準(zhǔn)的Java環(huán)境中,持久執(zhí)行模式的基本配置如下:
環(huán)境:
& ltjbpm-配置>
& lt流程-引擎-上下文>中。
& lt部署者-經(jīng)理>
& lt分配-文件類型>
& lt文件擴(kuò)展名=".jpdl.xml" type="jpdl" />。
& lt/assign-文件類型>。
& ltparse-jpdl />。
& lt檢查-流程/>。
& lt檢查-問題/>。
& lt保存/>。
& lt/deployer-manager>。
& lt流程服務(wù)/>。
& lt執(zhí)行-服務(wù)/>。
& lt管理-服務(wù)/>。
& lt命令服務(wù)>
& ltretry-interceptor />。
& lt環(huán)境攔截器/>
& ltstandard-transaction-interceptor/
& lt/command-service>。
& lt休眠-配置>
& ltproperties resource = " hibernate . properties "/& gt。
& lt映射資源= " jbpm . PVM . typedef . hbm . XML "/& gt。
& lt映射資源="jbpm.pvm.wire.hbm.xml" />。
& lt映射資源= " jbpm . PVM . definition . hbm . XML "/& gt。
& lt映射資源= " jbpm . PVM . execution . hbm . XML "/& gt。
& lt映射資源= " jbpm . PVM . variable . hbm . XML "/& gt。
& lt映射資源="jbpm.pvm.job.hbm.xml" />。
& lt映射資源="jbpm.jpdl.hbm.xml" />。
& lt緩存配置資源="jbpm.pvm.cache.xml "
usage = " non-rict-read-write "/& gt。
& lt/hibernate-configuration>。
& lthibernate-session-factory />。
& ltid-generator />。
& lttype resource = " jbpm . PVM . types . XML "/& gt。
& lt作業(yè)執(zhí)行器自動啟動="false" />。
& lt/process-engine-context>。
& lt事務(wù)上下文>。
& lt休眠-會話/>。
& lt交易/>
& ltpvm-db-session />。
& lt作業(yè)-db-session />。
& lt消息-會話/>
& lt/transaction-context>。
& lt/jbpm-配置>中。
接下來,Hibernate.properties如下所示:
hibernate.properties:
hibernate .方言org.hibernate .方言. HSQlLanguage
hibernate . connection . driver _ class org . hsqldb . JDBCdriver
hibernate . connection . URL JDBC:hsqldb:mem:。
hibernate.connection .用戶名sa
hibernate.connection.password
hibernate . hbm2ddl . auto create-drop
hibernate . cache . use _ second _ level _ cache true
hibernate . cache . provider _ class org . hibernate . cache . hashtablecacheprovider
# hibernate.show_sql true
hibernate.format_sql true
hibernate.use_sql_comments true
然后,您可以從環(huán)境工廠獲得如下服務(wù):
環(huán)境工廠環(huán)境工廠=新的環(huán)境工廠。
進(jìn)程服務(wù)進(jìn)程服務(wù)=環(huán)境工廠.獲取(進(jìn)程服務(wù).類);
執(zhí)行服務(wù)執(zhí)行服務(wù)=環(huán)境工廠.獲取(ExecutionService . class);
管理服務(wù)管理服務(wù)=環(huán)境工廠.獲取(管理服務(wù).類);
過程服務(wù)的職責(zé)是管理過程定義資源。在開始流程執(zhí)行之前,流程定義需要發(fā)布到流程存儲庫中。過程定義可以以不同的格式和不同的過程語言提供。發(fā)布包含來自不同源文件的過程定義信息,如ZIP文件、XML文件或過程定義對象。ProcessService.deploy方法通過配置文件中配置的所有發(fā)布服務(wù)器獲取發(fā)布。