用戶手冊升級30_第1頁
用戶手冊升級30_第2頁
用戶手冊升級30_第3頁
用戶手冊升級30_第4頁
用戶手冊升級30_第5頁
已閱讀5頁,還剩136頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第1章導(dǎo)言

上項(xiàng)下一頁

第1章導(dǎo)言

最佳使用firefox瀏覽這份教程。在使用internetcxplorcrH勺時(shí)候會有某些

問題。

1.1.許可證與最終顧客許可協(xié)議

jBPM是根據(jù)GNULesserGeneralPublicLicense(LGPL)和JBossEndUser

LicenseAgreement(EULA)中的協(xié)議公布的J,請參照完整口勺LGPL協(xié)議和完

整的最終顧客協(xié)議。

1.2.下載

可以從sourceforge上下載公布包。

1.3.源碼

可以從jBPMH勺SVN倉庫里下載源代碼。

1.4.什么是jBPM

jBPM是一種可擴(kuò)展、靈活的流程引擎,它可以運(yùn)行在獨(dú)立的服務(wù)器上或者嵌入

任何Java應(yīng)用中。

1.5.文檔內(nèi)容

在這個(gè)顧客指南里,我們將簡介在持久執(zhí)行模式下的jPDL流程語言。持久執(zhí)

行模式是指流程定義、流程執(zhí)行以及流程歷史都保留在關(guān)系數(shù)據(jù)庫中,這是

jBPM實(shí)際一般使用的方式。

這個(gè)顧客指南簡介了jBPM中支持的使用方式。開發(fā)指南簡介了更多口勺、高級日勺、

定制的、沒有被支持H勺選項(xiàng)。

1.6.從jBPM3升級到j(luò)BPM4

沒措施實(shí)現(xiàn)從jBPM3到j(luò)BPM4的升級??梢詤⒄臻_發(fā)指南來獲得更多遷移的

信息。

1.7.匯報(bào)問題

在顧客論壇或者我們H勺支持門戶匯報(bào)問題的I時(shí)候,請遵照如下模板:

===環(huán)境======================

-jBPMVersion:你使用的是哪個(gè)版本的jBPM?

-Database:使用的什么數(shù)據(jù)庫以及數(shù)據(jù)庫日勺版本

-JDK:使用的哪個(gè)版本的JDK?假如不懂得可以使用'java-version'查看版

本信息

-Container:使用的J什么容器?(JBoss,Tomcat,其他)

Configuration:你的jbpm.cfg.xml中是只導(dǎo)入了Jbpm.jar中日勺默認(rèn)配置,

還是使用了自定義H勺配置?

-Libraries:你使用了jbpm公布包中完全相似口勺依賴庫的J版本?

還是你修改了其中某些依賴庫?

===Process=======================

這里填寫jPDL流程定義

===API====================

這里填寫你調(diào)用jBPM使用日勺代碼片段

===Stacktrace=======================

這里填寫完整的錯(cuò)誤堆棧

===Debuglogs=======================

這里填寫調(diào)試日志

===Problemdescription==================二二二二二

請保證這部分短小精悍并且切入重點(diǎn)。例如,API沒有準(zhǔn)期望中那樣工作。

或者,例如,ExecutionService.SignalExecutionByld拋出了異常。

聰穎的讀者也許已經(jīng)注意到這些問題已經(jīng)指向了也許導(dǎo)致問題的幾點(diǎn)原因:)尤

其是對依賴庫和配置日勺調(diào)整都很輕易導(dǎo)致問題。這就是為何我們在包括安裝和

使用導(dǎo)入實(shí)現(xiàn)提議配置機(jī)制時(shí)花費(fèi)了大量的精力。因此,在你開始在顧客手冊

覆蓋的知識范圍之外修改配置之前,一定要三思而行。同步在使用其他版本的

依賴庫替代默認(rèn)的依賴庫之前,也一定要三思而行。

第2章安裝配置

2.1.公布

只需要把jBPM(jbpnr4.X.zip)下載下來,然后解壓到你的硬盤上口勺什么地方。

你將看到下面H勺子目錄:

?doc:顧客手冊,javadoc和開發(fā)指南

?examples:顧客手冊中用到於J示例流程

.install:用于不一樣環(huán)境的安裝腳本

?lib:第三方庫和某些特定的JjBPM依賴庫

?src:源代碼文獻(xiàn)

?jbpm.jar:jBPM主庫歸檔

?migration:參照開發(fā)指南

2.2.必須安裝的軟件

jBPM需要JDK(原則java)5或更高版本。

為了執(zhí)行ant腳本,你需要或更高版本的Iapacheant:

2.3.迅速上手

這個(gè)范例安裝是最簡樸的方式開始使用jBPM。這一章簡介了完畢范例安裝的環(huán)

節(jié)。

假如你之前下載過jboss-GA.zip,你可以把它放到

${jbpm.home}/install/downloads目錄下。否則腳本會為你下載它,不過它會

消耗某些時(shí)間(與你EI勺網(wǎng)絡(luò)狀況有關(guān))。eclipse-jee-galileorin32.zip也

同樣(或者eelipse-jee-galileo-linux-gtk(-x86_64).tar.gz在linux平臺下

和eelipse-jee-galileo-macosx-carbon.tar.gz在MacOSX平臺下)。

打開命令控制臺,進(jìn)入目錄${jbp^l.hom。}/install。然后運(yùn)行

或者

這將

把JBoss安裝到${jbpm.home)/jboss-.GAR錄

把jBPM安裝到JBoss中。

?安裝hsqldb,并在后臺啟動。

?創(chuàng)立數(shù)據(jù)庫構(gòu)造

?在后臺啟動JBoss

?根據(jù)示例創(chuàng)立一種examples.bar業(yè)務(wù)歸檔,把它公布到j(luò)BPM數(shù)據(jù)庫中

?從${jbpm.home}/inslall/src/demo/example.identities,sql,讀取顧客

和組。

?安裝eclipse至lj${jbpm.home)/eelipse

?啟動eclipse

?安裝jBPMweb控制臺

?安裝Signavioweb建模器

當(dāng)這些都完畢后,JBoss(或Tomcat,根據(jù)demo.setup腳本中的選擇)會在后

臺啟動。一旦eclipse完畢啟動,你可以繼續(xù)執(zhí)行下面的教程第3章流程

設(shè)計(jì)器(GPD)來開始編碼你的jBPM業(yè)務(wù)流程。

或者你可以啟動建模流程,通過Signavi。web設(shè)計(jì)器。

或者使用jBPM控制臺。你可以使用下面顧客之一進(jìn)行登陸:

表2.1.示例控制臺顧客:

顧客名密碼

alexpassword

mikepassword

peterpassword

顧客名密碼

marypassword

目前存在的問題:目前,對于某些比較慢的機(jī)器,在初始化報(bào)表時(shí),控制臺口勺

失效時(shí)間太短了,因此當(dāng)你第一次祈求報(bào)表時(shí),會出現(xiàn)超時(shí),控制臺會瓦解。注

銷,然后再次登錄,就可以避過這個(gè)問題。這個(gè)問題已經(jīng)提交到JIRA中了

JBPY-2508

2.4.安裝腳本

jBPM下載包中包括了一種install目錄,目錄中有一種ant口勺build,xml文獻(xiàn),

你可以使用它來把jBPM安裝到你的應(yīng)用環(huán)境中。

最佳嚴(yán)格按照這些安裝腳本,進(jìn)行安裝和公布jBPM配置文獻(xiàn)。我們可以自定義

jBPM配置文獻(xiàn),但這是不被支持的。

要想調(diào)用安裝腳本,打開命令行,進(jìn)入${jbpm.home}/install目錄。使用ant-p

你可以看到這里可以使用日勺所有腳本。腳本口勺參數(shù)都設(shè)置了默認(rèn)值,可以迅速

執(zhí)行,下面列表給出了可用腳本的概況:

demo,setup,jboss:安裝jboss,把jbpm安裝到j(luò)boss中,啟動jboss,

創(chuàng)立jbpm數(shù)據(jù)庫表構(gòu)造,布署實(shí)例,加載實(shí)例身份認(rèn)證信息,安裝并啟動

eclipse

demo,setup,tomcat:安裝tomcat,把jboss安裝到tomcat中,啟動

tomcat,創(chuàng)立jbpm數(shù)據(jù)庫表構(gòu)造,布署實(shí)例,加載實(shí)例身份認(rèn)證信息,安裝并

啟動eclipse

clean.cfg.dir:冊[除${jbpm.home}/install/generated/cfg文獻(xiàn)夾。

create,cfg:創(chuàng)立一種配置在${jbpm.home}/install/generated/cfg

下,基于目前H勺參數(shù)。

create,jbpm.schema:在數(shù)據(jù)庫中創(chuàng)立jbpm表

create,user,webapp創(chuàng)立一種基本歐|webapp在

${jbpm.home}/install/generated/user-webapp中

delete,jboss:刪除安裝的jboss

delete,tomcat:刪除安裝的ITomcat

demo,teardown,jboss:刪除jbpm數(shù)據(jù)庫的)表并停止jboss

demo,teardown,tomcat:停止tomcat和hsqldb服務(wù)器(假如需要)

drop.jbpm.schema:從數(shù)據(jù)庫中刪除jbpm的表

get.eclipse:下載eclipse假如它不存在

get.jboss:下載一種JBossAS,已經(jīng)測試過目前及JjBPM版本,假如它

不存在

get.tomcat:下載一種Tomcat,已經(jīng)測試過目前的jBPM版本,假如它不

存在

hsqldb.databasemanager:啟動hsqldb數(shù)據(jù)庫管理器

install,eclipse:解壓eclipse,下載eclipse假如它不存在

install,jboss:下載JBoss假如它不存在,并解壓

install,jbpm.into,jboss:把jBPM安裝到JBoss中

install,tomcat:把tomcat卜載到${tomcat,distro.dir}假如tomcat

不存在,并解壓tomcat

install,jbpm.into.tomcat:把JBPM安裝到to.Ticat中

install,examples,into,tomcat:布署所有的實(shí)例流程

install,signavio.into,jboss:把signavio安裝至ljjboss中

install,signavio.into.tomcat把signavio安裝至Utomcat中

load.example,identities:讀取實(shí)例顧客和顧客組數(shù)據(jù)到數(shù)據(jù)庫

reinstall.jboss:刪除之前的jboss安裝,并重新安裝jboss

reinstall,jboss.and.jbpm:刪除之前R勺jboss安裝,并重新安裝jboss

并把jbpm安裝到它里面

reinstall,tomcat:刪除之前的Ilomcal安裝,并重新安裝tomcat

reinstal1.tomcat.and.jbpm:刪除之前的tomcat安裝,并重新安裝

tomcat并把jbpm安裝到它里面

start,eclipse:啟動eclipse

start.jboss:啟動jboss,等待到j(luò)boss啟動完,然后讓jboss在后臺

運(yùn)行

start,tomcat:啟動Tomcat,等待到Tomcat啟動完,然后讓Tomcat在

后臺運(yùn)行

stop.jboss:告知jboss停止,不過不等到它完畢

stop,tomcat告知Tomcat停止,不過不等到它完畢

upgrade,jbpm.schema:更新數(shù)據(jù)庫中的)JBPM表到目前版本

要想指定你H勺配置文獻(xiàn),使用上面H勺腳木(例如DB表構(gòu)造生成),最簡樸的措

施是修改對應(yīng)的配置文獻(xiàn),在目錄${jbpm.home}/install/jdbc。對應(yīng)H勺配置文

獻(xiàn)會被腳本加載,根據(jù)對應(yīng)日勺DB。

下面的參數(shù)也可以自定義,

database:默認(rèn)值是hsqldb??蛇x值為mysql,oracle和poslgresql

jboss.version:默認(rèn)值是

假如想要自定義這些值,只需要像這樣使用-D

作為可選方案,你可以在${user.home}/.jbpm4/buiId.properties中設(shè)置自定

義的參數(shù)值

2.5.依賴庫和配置文獻(xiàn)

我們提供了自動安裝jBPM的ant腳本。這些腳本會將對的的依賴庫和對的的配

置文獻(xiàn)為你安裝到對日勺日勺位置。假如你想在你的應(yīng)用中創(chuàng)立自己日勺jBPM,可

以參照開發(fā)指南獲得更多信息。

2.6.JBoss

install.jbpm.into,jboss任務(wù)會把jBPM安裝到你H勺JBoss5中。進(jìn)入安裝目

錄下,執(zhí)行ant-p可以獲得更多信息。這個(gè)安裝腳本會壬jBPM安裝為一種JBoss

的服務(wù),因此所有應(yīng)用都可以使用同一種jBPM/j流桎引擎。

可以指定-Djboss.home=PathToYourJBosslnstallation來修改你H勺JBossH勺安

裝途徑。

在JBoss中,ProcessEngine可以通過JNDT獲得,new

InitialContext().lookup("java:/ProcessEngine"),相似的I流程引擎可以通

過Configuration.getProcessEngineO獲得。

2.7.Tomcat

install.jbpm.into.tomcat任務(wù)會把jBPM安裝到你Tomcat中。

2.8.Signavio基于web的I流程編輯器

使用install.signavio.into.jboss和install.signavio.into.tomcat任務(wù)可

以將Signavio基于web叼流程編輯器安裝到JBoss或Tomcat中。

2.9.顧客web應(yīng)用

假如你但愿把jBPM布署為你的web應(yīng)用的I一部分,可以使用

create,user,webapp這個(gè)安裝任務(wù)。這會創(chuàng)立一,種包括jBPM的Jweb應(yīng)用,在

${jbpm.home}/instai1/generated/user-webapp目錄下。

假如你在JBoss上或其他包括jta.jar的I應(yīng)用服務(wù)器上布署了你H勺應(yīng)用,你需

要把3{jbpm.home}/install/generated/useLwebapp/VEBTNF/lib/jta.jar刪

除。

2.10.數(shù)據(jù)庫

安裝腳本也包括了執(zhí)行數(shù)據(jù)庫日勺操作例如創(chuàng)立表,假如你是第一次安裝jBPM,

或者更新數(shù)據(jù)庫使用之前版本的表構(gòu)造。刪除表也是可選H勺。

使用任何數(shù)據(jù)庫操作口勺前提條件是在${jbpm.home}/install/jdbc中指定你的

連接參數(shù)。

.創(chuàng)立或刪除表構(gòu)造

要想創(chuàng)立表構(gòu)造,執(zhí)行create,jbpm.schema任務(wù)在S{jbpm.home}/installR

錄下。作為創(chuàng)立表、約束的一部分,波及H勺任務(wù)會初始化JBP業(yè)^PROPERTY表,

使用目前歐I引擎版本(keydb.version)和ID生成器版本(keynext,dbid)□

要想刪除表構(gòu)造,只要執(zhí)行drop.jbpm.schema任務(wù)。注意這個(gè)操作會刪除jBPM

表中的所有數(shù)據(jù)。

.更新已存在的數(shù)據(jù)庫

要想更新,執(zhí)行upgrade,jbpm.schema任務(wù)在${jbpm.home}/install目錄下。

更新是一種兩步操作。前一步是添加額外狀I(lǐng)表,列或者約束這些是在新版本中

的。下一步,插入種子數(shù)據(jù)。

從4.0到4.1,表JBPM4_VARIABLE添加了一種新列CLASSNAME用來支持設(shè)置流

程變量時(shí)值H勺自定義類型,hibernate的)類型映射。這個(gè)列是可為nul1H勺,由

于這個(gè)功能在4,0中沒有支持,因此沒有初始值。

從4.1到4.2,更新過程更有趣某些。

一種新表JBPM4_PK0PERTY被用來保留引擎范序的數(shù)據(jù)。

jBPM版本保留在JBPM4_PR0PERTY表中使用keydb.version用來在未來

公布中精確指定標(biāo)示符。

ID生成方略是完全跨數(shù)據(jù)庫的。下一種有效日勺ID是通過搜索所有包括

主鍵列的表計(jì)算出H勺,保留在keynext.dbid中在JBPM4_PROPERTY表中。

流程語言設(shè)置為jpdl-4.0用于所有已經(jīng)存在口勺流程定義,對應(yīng)key

langid在表JBPM4DEPLOYPROP中。jPDL解析器對應(yīng)langid屬性來讀取流程文

檔以此支持向后H勺兼容。

2.11.流程設(shè)計(jì)器(GPD)

圖形化流程設(shè)計(jì)器(GPD)使用Eelipse作為其平臺,這一節(jié)H勺內(nèi)容將簡介怎樣

獲得和安裝Eclipse,并把GPD插件安裝到eclipseJL。

獲得eclipse

你需要Eelipse

使用實(shí)例安裝或手工下載eclipse:EclipseIDEforJavciEEDevelopers(163

MB)

eclipse的老式版本無法滿足規(guī)定,由于它沒有XML編輯器。EclipseJava

開發(fā)者版也可以工作。

.在eclipse中安裝GPD插件

使用Eclipse軟件升級(SoftwareUpdate)機(jī)制安裝設(shè)計(jì)器是非常簡樸的J。在

gpd目錄下有一種instal1/src/gpd/jbpm-gpd-sito.zip文獻(xiàn).這就是更新站

點(diǎn)(archivedupdatesite)的J壓縮包。

在Eclipse里添加更新站點(diǎn)的I措施:

協(xié)助-->安裝新軟件...

點(diǎn)擊添加...

在添加站點(diǎn)對話框中,單擊壓縮包...

找到install/src/gpd/jbpm-gpd-site.zip并點(diǎn)擊'打開'

點(diǎn)擊確定在添加站點(diǎn)對話框中,會返回到‘安裝'對話框

選擇出現(xiàn)的JPDL4GPD更新站點(diǎn)

點(diǎn)擊下一步..然后點(diǎn)擊完畢

接受協(xié)議

當(dāng)它問詢的時(shí)候重啟eclipse

OInstall□X

AvailableSoftware

Selectasiteorenterthelocationofasite.

Workwith:typeorselectasite

Findmoresoftwarebyworkingwiththe'AvailableSoftwareSites'preferences.

OAddSiteX

Name:|Local…

Location:http://

圖2.1.添加設(shè)計(jì)器的更新站點(diǎn)

.配置jBPM運(yùn)行時(shí)

點(diǎn)擊Window->Preferences

選擇JBossjBPM->jBPM4―>RuntimeLocations

點(diǎn)擊Add...

在AddLocation對話框中,輸入一種名字,例如jbpni-4.0然后點(diǎn)擊

Search...

在BrowseEorFolder對話框中,選擇你的jbpm根目錄,然后點(diǎn)擊0K

點(diǎn)擊0K在AddLocation對話框中

圖2.2.定義jBPM依賴庫

.定義jBPM顧客庫

這一節(jié)演示怎樣在你的工作空間定義一種顧客庫,用來放置JBPV日勺庫文獻(xiàn)。假

如你創(chuàng)立一種新工程,只需要將顧客庫所有添加到buildpath下

點(diǎn)擊窗口一>屬性(Windows->Preferences)

選擇Java—>創(chuàng)立途徑一>顧客類庫(Java—>BuildPath—>User

Libraries)

點(diǎn)擊新建(New)

類型名字jBPMLibraries

?點(diǎn)擊添加JARs(AddJARs...)

?找到j(luò)BPM安裝程序下的lib目錄

?選擇lib下口勺所有jar文獻(xiàn)并點(diǎn)擊打開(Open)

?選擇jBPMLibraries作為入口

?重新點(diǎn)擊添加JARs(AddJARs)

?在jBPMH勺安裝程序的根目錄下選擇jbpm.jar文獻(xiàn)

?點(diǎn)擊打開(Open)

?在jbpm.jar下選擇源碼附件(Sourceattachment)作為入口

.點(diǎn)擊編輯(Edit)

?在源碼附件口勺配置(SourceAttachmentConfiguration)對詁框中,點(diǎn)

擊目錄(ExternalFolder...)

?找到j(luò)BPM安裝程序下的src目錄

?點(diǎn)擊選擇(Choose)

.點(diǎn)擊兩次‘確定’(0k)會關(guān)閉所有對話框

^jPreferences□X

typefiltertextUserLibrariesO▼

(±1General八

UserlibrariescanbeaddedtoaJavaBuildpathandbundleanumberofexternal

國Antarchives.Systemlibrarieswillbeaddedtothebootclasspathwhenlaunched.

DataManagementDefineduserlibraries:

囹Help

?Install/Update

0Java

囹Appearance

SBuildPath

ClasspathVariables

UserLibraries

由CodeStyle

±iCompiler

±jDebug

圖2.3.定義jBPM類庫

.在目錄中添加jPDL4模式

假如你想直接編輯XML源碼,最佳是在你的X\IL目錄中指定一下模式(schema),

這樣當(dāng)你在編輯流程源碼的時(shí)候,可以更好的協(xié)助你編寫代碼。

點(diǎn)擊窗口一>屬性(Windows->Preferences)

選擇XML—>目錄(XML—>Catalog)

點(diǎn)擊添加(Add)

添加XML目錄(AddXMLCatalogEntry)的窗口打開

點(diǎn)擊map-iconH勺圖標(biāo)下面B、J按鈕并選擇文獻(xiàn)系統(tǒng)(FileSystem)

在打開的對話框中,選擇jBPM安裝目錄下src文獻(xiàn)夾中jpdl.xsd文獻(xiàn)

點(diǎn)擊打開(Open)并且關(guān)閉所有的對話框

£P(guān)referencesPX

typefiltertextXMLCatalog

囹Instal/Update

XMLCatalogEntries

3Java

上Appearance

?;X;UserSpecifiedEntriesA[Add...]

SBuildPath

匕,慟PluginSpecifiedEntries

ClasspathVariables@)-//SunMicrosystems.Inc.//DTDConnector1.O//EFEdit...

UserLibraries

也CodeStyle匕AddXMLCatalogEntry

田Compiler

國Debug

國Editor

Location:C:\Software\jbpm-4.0.0-SNAPSHOT\src\jpdl.xsd

+InstalledJREs

JUnitKeyType:NamesoaceNarine

PropertiesFilesEditorCatalogEntry

Key:http://ibpm.org/4/jpdl

+JavaScript

JPA

+Plug-inDevelopmentOpen

+RemoteSystems

l±Run/DebugLookin:

+Server

I口org;a>jbpm.task.default.lifecycle.xml

ServicePolicies

Blcfq.xsd「°jbpm.task.hbm.xml

㈤Tasks

+TeamMyRecent才]jbpm.businsss.calendar.propertiesjbpm.task,wire.bindings.xml

Documents

+UsageDataCollector士jbpm.jpdl.activities.xmljpdl.xsd

Validation“jbpm.jpdl.bbm.xml

田Web)bpm.jpdl.wire.bindings.xml

+WebServicesjbpm.pvm.cache.xml

Desktopl

㈤XDoclet,jbpm.pvm.definition.hbm.xml

SXMLjbpm.pvm.execution,hbm.xml

由DTDFilesJijbpm.pvm/ob.hbm.xml

XMLCatalog,<Jjbpm.pvm.typedefs.hbm.xml

mVMIu;L%一MuDocuments

圖2.4.在目錄中添加jPDL4模式

?導(dǎo)入示例

這一節(jié)我們會在Eclipse的安裝程序下導(dǎo)入示例工程

選擇文獻(xiàn)—>導(dǎo)入(File—>Import)

選擇正常一>工作區(qū)中已經(jīng)有的工程(General->ExistingProjects

intoWorkspace)

?點(diǎn)擊下一步(Next)

?點(diǎn)擊瀏覽去選擇一種根目錄(Browse)

?通向jBPV安裝程序的根目錄

?點(diǎn)擊好(0k)

?示例工程會自動找到并且選中

.點(diǎn)擊完畢(Finish)

在配置了jBIW顧客依賴庫也導(dǎo)入了實(shí)例后,因此的例子可以作為JUnit測試運(yùn)

行了。在一種測試上右擊,選擇'RunAs'—>>JUnitTest'。

設(shè)置完畢,目前你可以開始享有這個(gè)最酷的Java流程技術(shù)。

.使用ant添加部分文獻(xiàn)

你可以使用?clips。和ant整合來處理流程的公布。我們會告訴你它是怎樣在

例子里工作地。然后你可以把這些復(fù)制到你的項(xiàng)目中。首先,打開ant視圖。

?選擇Window—>ShowView->Other...—>Ant->Ant

?例子項(xiàng)目中口勺構(gòu)建文獻(xiàn)build.xml,從包視圖拖拽到ant視圖。

第3章流程設(shè)計(jì)器(GPD)

這一章我們講述了怎樣使用流程設(shè)計(jì)器,在安裝流程設(shè)計(jì)器和配置好例子之后,

你會看到JPDL流程文獻(xiàn)均有一種對應(yīng)的特殊圖標(biāo),在包視圖H勺下面雙擊某一種

這種圖標(biāo)文獻(xiàn),就會在流程設(shè)計(jì)器中打開一種jPDL流程文獻(xiàn)。

A/YOJava-examples/src/org/jbpm/examples/concurrency/graphbased/pro'

母]]直甫?▼J合?/▼[

Pack""Hieraj

proccss.jpdl.xml次\

tSelect

▼Ic7examples口Marquee

▼國sre

(^Components8

▼田org.jbpm.exami<

?團(tuán)Concurrentransition

!*process.jpcO"art

?田org.jbpm.exami

⑥end

?由org.jbpm.exami

(8)cancel

?出org.jbpm.exami?

圖3.1.流程設(shè)計(jì)器

3.1.創(chuàng)立一種新的流程文獻(xiàn)

Ctrl+N將打開向?qū)нx擇器。

Selectawizard

Wizards:

typefiltertext

?&General

?&CVS

?&Java

▼&JBo$sjBPM

I?jPDL4File

圖3.2.選擇向?qū)υ捒?/p>

選擇jBPM—>jPDL4文獻(xiàn)(File).點(diǎn)擊下一步(Next>).然后新的jPDL

4文獻(xiàn)(NewjPDL4File),就會打開向?qū)А?/p>

oooNewjPDL4File

Jpdl4File

Createsanewjpdl4File

Enterorselecttheparentfolder:

examples/src

Filename:insuranceclaim.jpdl.xml

(Advanced]

圖3.3.創(chuàng)立一種新的流程對話框

選擇上一級目錄,輸入一種文獻(xiàn)名字并點(diǎn)擊'完畢‘(Finish),你便創(chuàng)立了第

一種jPDL流程文獻(xiàn)。

3.2.編輯流程文獻(xiàn)口勺源碼

GPD里有一種可以修改XML內(nèi)容的'Source'標(biāo)簽??梢栽跇?biāo)簽里直接進(jìn)行編輯,

當(dāng)你切換到圖形時(shí)\圖形視圖會反應(yīng)出剛剛進(jìn)行的修改。

圖3.4.使用source視圖編輯jPDL

第4章布署業(yè)務(wù)歸檔

業(yè)務(wù)歸檔是一系列文獻(xiàn)H勺集合分發(fā)在一種jar格式的文獻(xiàn)里。。業(yè)務(wù)歸檔中H勺

文獻(xiàn)可以使jPDL流程文獻(xiàn),表單,類,流程圖和其他流程資源。

4.1.布署流程文獻(xiàn)和流程資源

流程文獻(xiàn)和流程資源必須布署到流程資源庫里并保留到數(shù)據(jù)庫中。

這兒有一種jBPVH勺ant任務(wù)來布署業(yè)務(wù)流程歸檔

(org.jbpm.pvm.internal.ant.JbpmDeployTask)。JbpmDeployTask可以布署

單獨(dú)的流程文獻(xiàn)和流程歸檔。它們通過JDBC連接直接布署到數(shù)據(jù)庫中。因此

在你布署流程之前需要保證數(shù)據(jù)庫正在運(yùn)行。

創(chuàng)立和布署流程歸檔日勺例子可以在公布包時(shí)examples目錄下找到ant腳本

(build.xml)0讓我們看一下有關(guān)部分。首先,path用來申明包括jbpm.jar

和它的所有依賴庫。

<pathid二〃jbpm.libs.incl.dependencies”)

<pathelementlocation=//${jbpm.home}/examples/target/classes/,/>

<fiIcsctdir=,z$(jbpm.home}

<includename="jbpm.jar"/>

</fileset>

<filesetdir="${jbpm.home}/lib"/>

</path>

你使用的數(shù)據(jù)庫的JDBC驅(qū)動jar應(yīng)當(dāng)也包拈在path中。MySQL,PostgreSQL

和HSQLDB的驅(qū)動都包括在公布包中。不過oracle/、J驅(qū)動你必須從oracle網(wǎng)站

上單獨(dú)下載,由于我們沒有被容許重新分發(fā)這個(gè)文獻(xiàn)C

當(dāng)一種業(yè)務(wù)歸檔被公布時(shí),jBPM掃描業(yè)務(wù)歸檔中所有以.jpdl.xml結(jié)尾口勺文獻(xiàn)。

因此那些文獻(xiàn)會被當(dāng)做jPDL流程解析,然后可以用在運(yùn)行引擎中。業(yè)務(wù)歸檔中

所有其他的資源也會作為資源保留在布署過程中,然后可以通過

RepositoryService^TnputStreamgetResource^sStream(1ong

deplo)rmentDbid,StringresourceName);訪問。

為了創(chuàng)立一種業(yè)務(wù)歸檔,可以使用jar任務(wù)。

<jardestfile=,/${jbpm.home}/excimples/target/exariples.bar〃>

<filesetdir=,,${jbpm.home)/examples/src'^

<includename:”**/*.jpdl.xml〃/>

</filesct>

</jar>

在jbpm-deploy被使用之前,它需要像這樣進(jìn)行申明:

<taskdefname=,/jbpm-deploy,/

classname=〃org.jbpm.pvm.internal,ant.JbpmDeployTask,/

classpathref=,,jbpm.libs.incl.dependencies”/>

然后可以像這樣使用ant任務(wù)

<jbpm-deployfile=〃${jbpm.home}/examples/target/examples.bar”/>

表4.1.jbpm-deploy屬性:

類默認(rèn)與否

屬性描述

型值必填

默認(rèn)與否

屬性描述

值必填

被布署的文獻(xiàn)。.xml結(jié)尾的文獻(xiàn)會被當(dāng)做流程文獻(xiàn)布署。

文可

filear結(jié)尾,例如.bar或.jar,的文獻(xiàn)會被當(dāng)做業(yè)務(wù)歸檔

獻(xiàn)選

布署。

文可指向jbpm配置文獻(xiàn),它應(yīng)當(dāng)放在jbpm-deploy定義的

cfg

獻(xiàn)迷classpath下。

表4.2.jbpm-deploy元素

元素?cái)?shù)目描述

被布署的J文獻(xiàn),表達(dá)成一種簡樸的ant的fileset。.xml結(jié)尾

fileset0..*的文獻(xiàn)會被當(dāng)做流程文獻(xiàn)布署。ar結(jié)尾,例如.bar或.jar,

H勺文獻(xiàn)會被當(dāng)做業(yè)務(wù)歸檔布署。

4.2.布署java類

從4.2版本開始,jBPM擁有了一種像jBPM3同樣的流程類加載器機(jī)制。

從流程中引用的類必須至少在下面三種方式之一是有效的:

業(yè)務(wù)存檔中H勺.class文獻(xiàn)。和jBPM3中不一樣,目前存檔文獻(xiàn)的根被用

來搜索類資源。因此當(dāng)類com.superdeluxsandwiches.Order在流程文獻(xiàn)中引

用時(shí),它會找到,當(dāng)它在相似的業(yè)務(wù)歸檔中的入門名稱

com/superdeluxsandwiches/Order.class類會被緩存(key是結(jié)合了公布和上

下文類加載器),因此它應(yīng)當(dāng)比jBPM3中執(zhí)行的更好。

在調(diào)用jBPMweb應(yīng)用中可用的類。當(dāng)jBPM布署到服務(wù)器端H勺jboss

或tomcat中,)81琳會找到你口勺web應(yīng)用或企業(yè)應(yīng)用,調(diào)用jBPM區(qū))類。這是由

于你使用了FI前上下文類加載器,在流程執(zhí)行過程中查找類時(shí)。

服務(wù)器端可用H勺類文獻(xiàn)。例如像是在tomcat和jboss的lib目錄下的

jar。

在實(shí)例中,一種包括了所有類的Jexamples,jar被創(chuàng)立了,并把它放在了JBoss

服務(wù)器配置的lib目錄下,tomcat下操作相似。參照

install,examples,into.tomcat和install,examples,into.jboss任務(wù)。在未

來的一種公布版中我們也許切換到業(yè)務(wù)存檔自身包括肉類。

第5章服務(wù)

5.1.流程定義,流程實(shí)例和執(zhí)行

一種流程定義式對過程H勺環(huán)節(jié)H勺描述。例如,一種保險(xiǎn)企業(yè)可以有一種貸款流

程定義描述企業(yè)怎樣處理貸款祈求的環(huán)節(jié)的描述。

圖5.1.貸款流程定義示例

流程實(shí)例代表著流程定義的特殊執(zhí)行例子,例如:上周五JohnDoe提出貸款買

船,代表著一種貸款流程定義口勺流程實(shí)例。

一種流程實(shí)例包括了所有運(yùn)行階段,其中最經(jīng)典的屬性就是跟蹤目前節(jié)點(diǎn)的指

針。

圖5.2.貸款流程實(shí)例的例子

假設(shè)匯款和存檔可以同步執(zhí)行,那么主流程實(shí)例就包括了2個(gè)用來跟蹤狀態(tài)的

子節(jié)點(diǎn):

圖5.3.貸款執(zhí)行例子

一般狀況下,一種流程實(shí)例是一種執(zhí)行樹的根節(jié)點(diǎn),當(dāng)一種新口勺流程實(shí)例啟動

時(shí),實(shí)際上流程實(shí)例就處在根節(jié)點(diǎn)的位置,這時(shí)只有它的〃子節(jié)點(diǎn)”才可以被激

活。

使用樹狀構(gòu)造的原因在于,這一概念只有一條執(zhí)行途徑,使用起來更簡樸。業(yè)

務(wù)API不需要理解流程實(shí)例和執(zhí)行之間功能的區(qū)別。因此,API里只有一種執(zhí)

行類型來引用流程實(shí)例和執(zhí)行。

5.2.ProcessEngine流程引擎

在jBPM內(nèi)部通過多種服務(wù)互相作用。服務(wù)接口可以從ProcessEngine中獲得,

它是從Configuration構(gòu)建的1。

流程引擎是線程安全H勺,它可以保留在靜態(tài)變量中,甚至JNDI中或者其他重要

位置。在應(yīng)用中,所有線程和祈求都可以使用同一種流程引擎對象,目前就告

訴你怎么獲得流程引擎。

這章中波及到的代碼和下一章中有關(guān)流程布署的I代碼,都來自

org.jbpm.examples,services.ServicesTest例子。

ProcessEngineprocessEngine=newConfiguration()

.buiIdProcessEngine0;

上面的)代碼演示了怎樣通過classpath根目錄下默認(rèn)的配置文獻(xiàn)jbpm.cfg.xml

創(chuàng)立一種ProcessService。假如你要指定其他位置的配置文獻(xiàn),請使用

setResource()措施:

ProcessEngineprocessEngine=newConfiguration()

.setResource(^my-own-configuration-file.xnd〃)

.buiIdProcessEngine0;

尚有其他setXxxxO措施可以獲得配置內(nèi)容,例如:從InputStream中、從xml

字符串中、從InputSource中、從URL中或者從文獻(xiàn)(File)中。

我們可以根據(jù)流程引擎得到下面的服務(wù):

RepositoryServicerepositoryService=

processEngine.getRepositoryServiceO;

ExecutionServiceexecutionService=

processEngine.getExecutionService0;

TaskServicetaskService=processEngine.gctTaskServiceO;

HistoryServicehistoryService=processEngine.getHistoryService();

ManagementServicemanagementService=

processEngine.getManagementService();

在配置中定義H勺這些流程引擎(ProcessEngine)對象,也可以根據(jù)類型

processEngine.get(Class<T?或者根據(jù)名字processEngine.get(String)來

獲得。

5.3.Deployingaprocess布署流程

RepositoryService包括了用來管剪公布資源H勺所有措施。在第一種例子中,

我們會使用RepositoryService從classpath中布署,種流程資源。

Stringdeploymentid=repositoryService.creatcDcploymcnt()

.addResourceEromClasspalh(^org/jbpm/examples/services/Order.jpdl.

xml")

.deploy();

通過上面H勺addRcsourceFromClass措施,流程定義XMLH勺內(nèi)容可以從文獻(xiàn),網(wǎng)

址,字符串,輸入流或zip輸入流中獲得。

每次布署都包括了一系列資源。每個(gè)資源的內(nèi)容都是一種字節(jié)數(shù)組。jPDL流程

文獻(xiàn)都是以.jpdl.xml作為擴(kuò)展名的。其他資源是任務(wù)表單和java類。

布署時(shí)要用到一系列資源,默認(rèn)會獲得多種流程定義和其他的歸檔類型。jPDL

公布器會自動識別后綴名是.jpdl.xml的流程文獻(xiàn)。

在布署過程中,會把一種id分派給流程定義。這個(gè)id的格式為

{key}-{version),key和version之間使用連字符連接。

假如沒有提供key,會在名字口勺基礎(chǔ)自動生成。生成的key會把所有不是字母

和數(shù)字的字符替代成下劃線。

同一種名稱只能關(guān)聯(lián)到一種key,反之亦然。

假如沒有為流程文獻(xiàn)提供版本號,jBPM會自動為它分派一種版本號。請尤其

注意那些已經(jīng)布署了H勺名字相似的流程文獻(xiàn)的版本號,它會比已經(jīng)布署H勺同一

種key的流程定義里最大口勺版本號還大。沒有布署相似key的流程定義口勺版本

號會分派為1。

在下面第1個(gè)例子里,我們只提供了流程的名字,沒有提供其他信息:

<processname=,/Insuranceclaim,,>

</process>

假設(shè)這個(gè)流程是第一次布署,下面就是它的屬性:

表5.1.沒有key值的屬性流程

PropertyValueSource

nameInsuranceclaimprocessxml

keyTnsurance_claimgenerated

version1generated

idTnsi]rance_c.laim-1gpnprated

第2個(gè)例子我們將演示怎樣通過設(shè)置流程的key來獲得更短的id。

<processname=,/Insuranceclaim"key="1CL”>

</process>

這個(gè)流程定義H勺屬性就會像卜面這樣:

表5.2.有key值屬性的流程

PropertyValueSource

nameInsuranceclaimprocessxml

keyICLprocessxml

version1generated

idICL-1generated

5.4.刪除流程定義

刪除一種流程定義會把它從數(shù)據(jù)庫中刪除。

repositoryService.deleteDeployment(deploymentId);

假如在公布中H勺流程定義還存在活動的流程實(shí)例,這個(gè)措施就會拋出異常。

假如但愿級聯(lián)刪除一種公布中流程定義的所有流程實(shí)例,可以使用

deleteDeploymentCascade?

5.5.啟動一種新的流程實(shí)例

.最新的流程實(shí)例

下面是為流程定義啟動一種新口勺流程實(shí)例的最簡樸也是最常用口勺措施:

Processinstanceproccssinstance=

executionService.startProcessInsteinceByKey(ICL*);

上面service歡I措施會去查找key為ICL口勺最新版本口勺流程定義,然后在最新

的流程定義里啟動流程實(shí)例。

當(dāng)insuranceclaim流程布署/一種新版本,startProcessInstanceByKey措

施會自動切換到最新布署日勺版本。

.指定流程版本

換句話說,你假如想根據(jù)特定的版本啟動流程實(shí)例,便可以使用流程定義的id

啟動流程實(shí)例。如下所示:

Processinstanceprocessinstance=

executionService.startProcessInstanceById(,,lCL-r,);

,使用key

我們可認(rèn)為新啟動的流程實(shí)例分派一種key,這個(gè)key是顧客執(zhí)行的J時(shí)候定義

的,有時(shí)它會作為“業(yè)務(wù):<ey”引用。一種業(yè)務(wù)key必須在流程定義的所有版

本范圍內(nèi)是唯一於J。一般很輕易在業(yè)務(wù)流程領(lǐng)域找到這種key。例如,一種訂

單id或者一種保險(xiǎn)單號。

Processinstanceprocessinstance=

executionService.startProccssInstanceByKcy("ICL","CL92837");

key可以用來創(chuàng)立流程實(shí)例的id,格式為{process-key}.{cxccution-id}。因

此上面的代碼會創(chuàng)立一種id為1CL.CL92837口勺流向(execution)。

假如沒有提供顧客定義H勺key,數(shù)據(jù)庫就會把主鍵作為key。這樣可以使用如卜

方式獲得id:

ProcessTnstanceprocesslnstance=

executionService.startProcesslnstanceByKey(,1CL,/);

StringDid=processinstance.getldO;

最佳使用一種顧客定義H勺key。尤其在你口勺應(yīng)用代碼中,找到這樣的k

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論