jBPM 3.2用戶指南 概覽
JBoss jBPM 是一個(gè)靈活的、可擴(kuò)展的流程語言框架。jPDL是一種建立在這個(gè)公共框架之上的流程語言。它是一種直觀的流程語言,用任務(wù)(tasks)、異步通訊的等待狀態(tài)(wait states)、定時(shí)器(timer)、自動(dòng)化的動(dòng)作(action)……等術(shù)語來圖形化地表示業(yè)務(wù)流程。jPDL擁有最強(qiáng)有力的、可擴(kuò)展的控制流機(jī)制把這些操作結(jié)合在一起。
jPDL的依賴性非常小,能夠像使用一個(gè)java類庫一樣容易地使用它。但是,通過把它部署在一個(gè)J2EE集群的應(yīng)用服務(wù)器中,也能夠把它用在需要極大的吞吐量的環(huán)境中。
jPDL能夠配置使用任何類型的數(shù)據(jù)庫,部署在任何應(yīng)用服務(wù)器中。
概覽
工作流和BPM的核心功能被打包成一個(gè)簡(jiǎn)單的java類庫。這個(gè)類庫包含一個(gè)服務(wù),用于管理和執(zhí)行保存在iPDL數(shù)據(jù)庫中的流程。
圖1.1 jPDL組件概覽
jPDL套件
本套件包含所有的jBPM組件,打包成一個(gè)易于下載的文件形式。它內(nèi)部包括下列文件夾:
config, 用于標(biāo)準(zhǔn)java環(huán)境的配置文件。
db, 用于創(chuàng)建數(shù)據(jù)庫的SQL腳本,和數(shù)據(jù)庫兼容性信息。
designer, 用于編制jPDL流程和安裝腳本的Eclipse插件(它不包含在單純的jpdl下載文件中)參見jPDL圖形流程設(shè)計(jì)器部分。
doc, 用戶指南和JavaDoc文檔。
Examples 范例文件。
lib, jBPM所依賴的類庫。要獲得進(jìn)一步的信息,請(qǐng)參考“第三方類庫”部分。
server, 一個(gè)預(yù)先配置好的jBoss應(yīng)用服務(wù)器,在一個(gè)控制臺(tái)web應(yīng)用中包含了jBPM(不包含在單純的jpdl下載文件中)。
src, jBPM和身份認(rèn)證組件的java源代碼。
這個(gè)預(yù)先配置好的JBoss應(yīng)用服務(wù)器安裝了下列的組件:
Web控制臺(tái)(web console), 打包為一個(gè)web存檔(war文件)。此控制臺(tái)能夠由流程參與者和jBPM管理者使用。
工作執(zhí)行器(job executor) 用于啟動(dòng)定時(shí)器和異步消息。在控制臺(tái)web應(yīng)用程序中有一個(gè)servlet上下文監(jiān)聽器,它啟動(dòng)工作執(zhí)行器,后者產(chǎn)生一個(gè)線程池,用于監(jiān)測(cè)和執(zhí)行定時(shí)器和異步消息。
jBPM數(shù)據(jù)庫, 一個(gè)進(jìn)程內(nèi)hypersonic數(shù)據(jù)庫,包含jBPM數(shù)據(jù)表。
一個(gè)范例流程, 已經(jīng)部署到j(luò)BPM數(shù)據(jù)庫中。
身份組件(Identity component)類庫是控制臺(tái)web應(yīng)用的一部分。身份組件的表存在于jBPM數(shù)據(jù)庫中(這些表以“JBPM_ID_”為前綴)。
jPDL圖形流程設(shè)計(jì)器
jPDL也包括一個(gè)圖形設(shè)計(jì)器工具,該工具用于創(chuàng)作業(yè)務(wù)流程,它是一個(gè)Eclipse插件。
該圖形設(shè)計(jì)工具的最主要的特征是同時(shí)支持業(yè)務(wù)分析師和技術(shù)開發(fā)者,從而允許從業(yè)務(wù)流程建模到實(shí)際開發(fā)實(shí)現(xiàn)的平滑過渡。
該Eclipse插件以一個(gè)本地更新站點(diǎn)(普通zip文件)的形式提供,可通過標(biāo)準(zhǔn)的Eclipse軟件更新機(jī)制安裝。jPDL圖形流程設(shè)計(jì)器插件也包含在 JBoss Tools, JBoss Developer Studio 和 SOA Platform.中。
jBPM控制臺(tái)Web應(yīng)用程序
JBPM控制臺(tái)web應(yīng)用程序有兩個(gè)目的。首先,它作為中心用戶接口,與在流程執(zhí)行過程中產(chǎn)生的運(yùn)行時(shí)任務(wù)進(jìn)行交互。其次,它是一個(gè)管理和監(jiān)控控制臺(tái),能夠檢視和操控運(yùn)行時(shí)流程實(shí)例。 它的第三個(gè)功能是業(yè)務(wù)活動(dòng)監(jiān)控,這是一些流程執(zhí)行的統(tǒng)計(jì)信息,這些信息對(duì)于管理員找出瓶頸和進(jìn)行其他種類的優(yōu)化很有用。
JBPM核心類庫
JBoss jBPM核心類庫是普通的Java(J2SE)類庫,用于管理流程定義和流程實(shí)例執(zhí)行的運(yùn)行時(shí)環(huán)境。
JBoss jBPM是一個(gè)java類庫,因此它能夠在任何java環(huán)境中使用,例如web應(yīng)用程序,swing應(yīng)用程序,EJB,Web Service……等等。 jBPM庫也可以打包并暴露為一個(gè)無狀態(tài)會(huì)話EJB,這允許集群部署和在極高吞吐量環(huán)境下的可縮放性。此無狀態(tài)會(huì)話EJB應(yīng)該針對(duì)J2EE 1.4規(guī)范編寫,以保證可以部署到任何應(yīng)用服務(wù)器之中。
依據(jù)你所使用到的功能,類庫 lib/jbpm-jpdl.jar對(duì)一些第三方類庫如hibernate、dom4j及其它類庫有依賴。我們已經(jīng)做出巨大的努力使得你只需要實(shí)際使用到的依賴庫。第三方依賴的問題在第四章(部署)中進(jìn)一步闡述。
JBPM在內(nèi)部使用hibernate進(jìn)行持久化。除了傳統(tǒng)的o/R映射功能之外,hibernate也解決了不同數(shù)據(jù)庫使用不同SQL方言的問題,使得jBPM可以移植到所有目前流行的數(shù)據(jù)庫之上。
JBoss jBPM API可以從你項(xiàng)目中的任何java軟件訪問,例如web應(yīng)用程序,EJB程序,
Web Service組件、消息驅(qū)動(dòng)Bean或任何其他java組件等。
JBoss jBPM身份組件
JBoss jBPM能夠和任何包含用戶和其他組織機(jī)構(gòu)信息的公司目錄集成。但是,對(duì)于沒有提供組織機(jī)構(gòu)信息組件的項(xiàng)目,JBoss jBPM包含了這個(gè)身份組件。 該身份組件中使用的模型比傳統(tǒng)的Servlet-、EJB-和門戶中使用的模型更豐富。
JBoss jBPM工作執(zhí)行器(Job Executor)
job執(zhí)行器是一個(gè)用于在標(biāo)準(zhǔn)Java環(huán)境下監(jiān)控和執(zhí)行job的組件。Job用于定時(shí)器和異步消息。在企業(yè)環(huán)境中,JMS和EJB定時(shí)器服務(wù)可以用于這一目的。相反,Job執(zhí)行器能夠用在缺乏JMS或EJB的環(huán)境中。
Job執(zhí)行器組件被打包在核心jbpm-jpdl類庫中,但是需要以以下的方式之一部署:或者在web應(yīng)用部署描述符(WEB-INF/web.xml)中注冊(cè) JobExecutorLauncher servlet上下文監(jiān)聽器,使得在servlet上下文創(chuàng)建/銷毀的時(shí)候啟動(dòng)/停止Job執(zhí)行器;或者開啟一個(gè)單獨(dú)的JVM,在其中編程式啟動(dòng)Job執(zhí)行器。
【編輯推薦】