




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國鋅空電池市場需求分析及發(fā)展前景預(yù)測報(bào)告
- 2025-2030年中國計(jì)算機(jī)機(jī)房行業(yè)運(yùn)行態(tài)勢及發(fā)展盈利分析報(bào)告
- 2025-2030年中國純鐵鋼坯市場運(yùn)行態(tài)勢規(guī)劃研究報(bào)告
- 2025-2030年中國糕點(diǎn)及面包市場運(yùn)行動態(tài)與營銷策略研究報(bào)告
- 2025-2030年中國硅藻土行業(yè)運(yùn)行現(xiàn)狀及發(fā)展前景分析報(bào)告
- 2024數(shù)學(xué)競賽CHKMO中國新加坡合練訓(xùn)練題
- 重慶城市職業(yè)學(xué)院《液壓元件》2023-2024學(xué)年第二學(xué)期期末試卷
- 長治幼兒師范高等專科學(xué)?!峨姎夤こ糖把丶夹g(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧工業(yè)大學(xué)《計(jì)算機(jī)輔助造型設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川衛(wèi)生康復(fù)職業(yè)學(xué)院《企業(yè)運(yùn)營管理課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 部編版小學(xué)五年級下冊《道德與法治》全冊教案含教學(xué)計(jì)劃
- 運(yùn)動會活動流程中的醫(yī)療安全保障措施
- 2025公司員工試用期合同(范本)
- 第十章皮膚軟組織擴(kuò)張術(shù)醫(yī)學(xué)美容教研室袁曉野講解
- 2025年冷鏈物流產(chǎn)品配送及倉儲管理承包合同3篇
- 2024年青島遠(yuǎn)洋船員職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2024-2025學(xué)年成都高新區(qū)七上數(shù)學(xué)期末考試試卷【含答案】
- 浙教版2023小學(xué)信息技術(shù)六年級上冊《人機(jī)對話的實(shí)現(xiàn)》說課稿及反思
- 2025年山東出版集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 【開題報(bào)告】中小學(xué)校鑄牢中華民族共同體意識教育研究
- 2022+ADA/EASD共識報(bào)告:2型糖尿病高血糖的管理
評論
0/150
提交評論