jbpm4.4基礎知識

來源:互聯網
上載者:User

對jBPM4.4資料庫的幾張表簡單介紹:

A。資產庫和運行時表結構

JBPM4_DEPLOYMENT   流程定義表                                         
JBPM4_DEPLOYPROP 流程定義屬性工作表                                    
JBPM4_EXECUTION  流程執行個體表  (主要是存放JBPM4的執行資訊,Execution機制代 替了JBPM3的Token機制)

JBPM4_JOB  定時表(存放的是Timer 的定義)                                                                 

JBPM4_LOB  儲存表 (流程定義相關的布署資訊)                                                                  

JBPM4_PARTICIPATION 參與者表 (存放 Participation的資訊,Participation的種類有Candidate、Client、Owner、 Replaced Assignee和Viewer。而具體的Participation既可以是單一使用者,也可以是使用者組。)

JBPM4_PROPERTY  引擎參數表
JBPM4_SWIMLANE  泳道表(Swim Lane是一種Runtime Process Role,多個Task可以一次分配到同一Actor身上。)

JBPM4_TASK 任務表  (存放需要人來完成的Activities,需要人來參與完成的Activity 被稱為 Task).      

JBPM4_VARIABLE 上下文表  (存的是進行時的臨時變數) 

B。曆史資料庫表結構

JBPM4_HIST_ACTINST 流程活動(節點)執行個體表   (Activity Instance的記錄) 

JBPM4_HIST_DETAIL  流程曆史詳細表  (儲存Variable的變更記錄)

JBPM4_HIST_PROCINST 流程執行個體曆史表   (Process Instance的記錄)

JBPM4_HIST_TASK  任務曆史表(Task的曆史資訊)

JBPM4_HIST_VAR  流程變數(上下文)曆史表  (儲存曆史的變數 )

C。身份認證表結構   

JBPM4_ID_GROUP 組表

JBPM4_ID_MEMBERSHIP 使用者角色表

JBPM4_ID_USER  使用者表

jbpm4.4最核心的包

1.antlr.jar

2.commons-collections.jar

3.commons-logging.jar

4.dom4j.jar

5.hibernate-core.jar

6.javassist.jar

7.jbpm.jar

8.jta.jar

9.mail.jar

10.slf4j-api.jar

11.slf4j-jdk14.jar

12.slf4j-log4j12.jar

設定檔

jbpm.execution.hbm.xml, jbpm.history.hbm.xml, jbpm.identity.hbm.xml, jbpm.repository.hbm.xml, jbpm.task.hbm.xml五個hibernate對應檔

jbpm.default.cfg.xml     ---->   流程引擎的預設設定檔

jbpm.identity.cfg.xml    ---->   身分識別驗證設定檔

jbpm.jbossremote.cfg.xml ---->   遠程調用jboss實現命令模式

jbpm.jobexecutor.cfg.xml ---->   任務執行器的配置

jbpm.task.lifecycle.xml  ---->   任務生命週期,包括啟動,暫停,繼續,完成,取消之類

jbpm.tx.hibernate.cfg.xml---->   預設的hibernate事務配置

jbpm.tx.jta.cfg.xml      ---->   jta的事務配置

jbpm.variable.types.xml  ---->   組態變數類型映射

jbpm.wire.bindings.xml   ---->   依賴綁定映射

jbpm4.4包作用

org.jbpm.pvm.internal.ant

提供使用ant發布流程,輔助啟動jboss的任務。

org.jbpm.pvm.internal.builder

用來構造各種模型,包括活動,活動行為,事件,事件處理器,流程定義,變數,任務,等等。

org.jbpm.pvm.internal.cal

提供日曆,包括日期,時間段,期間,節假日。

org.jbpm.pvm.internal.cfg

JbpmConfiguration和SpringConfiguration實現了org.jbpm.api.Configuration,用來從設定檔構造ProcessEngine

org.jbpm.pvm.internal.xml

主要用於解析xml的,主要解析jbpm.cfg.xml和流程定義檔案

org.jbpm.pvm.internal.util

包含常用工具

org.jbpm.pvm.internal.wire

用來在ioc裡進行依賴綁定。子包包含binding, descriptor, operation和xml,而且預設的綁定方式是使用field,而不是常見的setter綁定方式。

org.jbpm.pvm.internal.type

用來進行類型轉換,主要是載入jbpm.cfg.xml對流程引擎進行初始化時,還有就是發布流程的時候進行類型轉換。子包包括converter,matcher和variable,類型轉換器,類型匹配器和變數。

org.jbpm.pvm.internal.tx

其中負責處理事務,JtaTransaction啦,SpringTransationInterceptor 啦,StandardTransaction啦,這些需要根據實際環境具體選擇。jta的實現部分已經單獨放到子包jta中了。希望spring中的事務也能這樣處理就好了。

org.jbpm.pvm.internal.test

包下放了一個JobTestHelper,顯然是可以協助在測試環境下運行job的,。

org.jbpm.api.client

這部分包含ClientExecution, ClientProcessDefinition, ClientProcessInstance。ClientExecution繼承了OpenExecution,聲明了end(), signal(), suspend(), resume()之類的方法。ClientProcessDefintion繼承了OpenProcessDefintion,其中的功能主要是 createProcessInstance和startProcessInstance。

org.jbpm.pvm.internal.cmd

包含Command和CommandService,這是命令設計模式的基礎。其中放著所有的命令,所有的流程操作都可以在這裡找到。

org.jbpm.pvm.internal.email

下面有兩個子包impl和spi,只要注意spi下的AddressResolver, MailProducer和MailSession就可以實現自訂的實現了。

org.jbpm.pvm.internal.env

包含Context, Environment, EnvironmentFactory, Transaction, WireObject。其中Context, Environment和EnvironmentFactory組成了jBPM4裡的IoC系統。Transaction定義了通用事務。 WireObject用來做依賴綁定。下面儲存著環境有關的實作類別。包括Authentication許可權認證,Environment與context 相關的各個類。

org.jbpm.pvm.internal.hibernate

下面的類是專門與hibernate進行互動的類,包含類型轉換,命名策略和最主要的DbSessionImpl,所有與資料庫的操作都來源於此。

org.jbpm.pvm.internal.history

下面是曆史操作所需要的部分,其下還包含events和model包。

org.jbpm.pvm.internal.identity

包主要負責身份認證的操作。包含三個子包cmd, impl和spi,cmd下定義所用到的命令,impl下是實作類別,spi下放著IdentitySession。

org.jbpm.pvm.internal.jms

包括JmsMessageSession和JmsMessageUtil,應該是用來處理jms的,JmsMessageSession與 org.jbpm.api.job.Message相關聯。說明job下的Message是依靠jms發送非同步訊息的。

org.jbpm.pvm.internal.job

提供了對job, message和timer的實現

org.jbpm.pvm.internal.jobexecutor

提供了任務執行器,包括JobExecutorServlet和對應的線程池,以及一系列的命令和處理器。無論是job, message或是timer,最終都會被這裡執行。

org.jbpm.pvm.internal.lob

主要用來處理流程發布時的檔案內容,需要把jpdl.xml檔案和圖片,甚至是以後可能把class檔案都以附件形式儲存到資料庫中,以備後用

org.jbpm.pvm.internal.model

這個模型包中包含了很多很多類,包括Activity, CompositeElement, Condition, ObservableElement, OpenProcessDefinitionTransition。簡單分類一下。最底層的是ObservableElement,它是可以被事件監聽的元素,並且可以繼承,CompositeElement繼承了 ObservableElement,它裡面可以裝填多個活動。再加上Event中定義了多個事件,這些就構成了最基本的事件模型。Activity和 ActivityCoordinates分別定義了活動類和活動位置。以這些為基礎,OpenProcessDefinition繼承了
ProcessDefinition和CompositeElement。最終,我們還有一個Condition類,它只有一個evaluate方法,接受OpenExecution作為參數返回boolean值,Condition和Activity組合成了Transition,這個轉移包含了起點,終點,以及條件判斷。最龐大的模型部分,活動,轉移,流程定義,流程執行個體的實作類別都放在這裡。在它的op子包中包含的是流程進行中的各項操作。

org.jbpm.pvm.internal.query

History, Job, ProcessDefintion, ProcessInstance這四個query類的實現,還提供了一個Page類,但是其中只有firstResult和maxResults,所以沒啥大用

org.jbpm.pvm.internal.repository

負責的是流程的發布,主要有Deployment和Repository對應的service, session和cache,這裡使用的緩衝,所以每次使用流程定義的時候可以利用緩衝提高效率。

org.jbpm.pvm.internal.script

包含對指令碼的支援,預設支援了JuelScriptEngine。

org.jbpm.pvm.internal.session

支援各種會話,DbSession, MessageSession, RepositorySession和TimerSession。

org.jbpm.pvm.internal.spring

只有一個CommandTransactionCallback用來實現從spring中獲得事務,並用其執行jbpm中定義的各種命令

org.jbpm.pvm.internal.stream

用於從各種途徑讀取資源,無論是jbpm設定檔和流程資源都要通過這些來轉換成流的形式,以供給jbpm處理。

org.jbpm.pvm.internal.svc

其中svc或許是service的縮寫。這個包中除了包括org.jbpm.api包下定義的所有service介面的實現,還包括commandService的實現和認證攔截器。

org.jbpm.pvm.internal.task

代表了所有與任務,任務參與者相關的資訊,包括Assignable, AssignmentHandler, OpenTask, Participation, Swimlane, Task, TaskDefinition。簡單劃分後,主要有任務,任務定義任務處理。剩下的都是與任務分配有關了。TaskDefinition從字面上來看是指任務定義,裡邊只有一個getName()。Task中儲存了任務相關的一些內容,OpenTask主要用來處理曆史事件。參與者部分基本分成三個部分,以Assignable和AssignmentHandler組成的自訂分配部分,Participation參與者和swimlane泳道。暫時沒有發現三者之間與任務的聯絡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.