jBPM4.4入門開發(fā)實(shí)例.docx_第1頁
jBPM4.4入門開發(fā)實(shí)例.docx_第2頁
jBPM4.4入門開發(fā)實(shí)例.docx_第3頁
jBPM4.4入門開發(fā)實(shí)例.docx_第4頁
jBPM4.4入門開發(fā)實(shí)例.docx_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、開發(fā)環(huán)境搭建1.1必須安裝的軟件1) jbpm-4.4.zip2) jdk 5或者更高版本3) 支持的數(shù)據(jù)庫(kù)有hsqldb、mysql、oracle、postgresql、sybase,本說明以oracle作為數(shù)據(jù)庫(kù)。4) GPD插件(jbpm在IDE中的流程設(shè)計(jì)器),eclipse(建議3.6版本以上)或者myeclipse(建議8.1版本以上)安裝插件所需的zip在解壓后jbpm-4.4installsrcgpd中的jbpm-gpd-site.zip,本說明以eclipse3.6為例。1.2配置JBPM運(yùn)行時(shí)1) 打開window preferences2) 選擇 JBoss jBPM - jBPM 4 - Runtime Locations3) 點(diǎn)擊 Add.4) 在 Add Location 對(duì)話框中,輸入一個(gè)名字,比如 jbpm-4.0 然后點(diǎn)擊 Search.5) 在 Browse For Folder 對(duì)話框中,選擇你的jbpm 根目錄,然后點(diǎn)擊 OK6) 點(diǎn)擊 OK 在 Add Location 對(duì)話框中1.3定義jBPM 用戶庫(kù)1) 點(diǎn)擊窗口 - 屬性(Windows - Preferences)2) 選擇Java - 創(chuàng)建路徑 - 用戶類庫(kù)(Java - Build Path - User Libraries)3) 點(diǎn)擊新建(New)4) 類型名字jBPM Libraries5) 點(diǎn)擊添加JARs(Add JARs.)6) 找到j(luò)BPM 安裝程序下的lib 目錄7) 選擇lib 下的所有jar 文件并點(diǎn)擊打開(Open)8) 選擇jBPM Libraries 作為入口9) 重新點(diǎn)擊添加JARs(Add JARs)10) 在jBPM 的安裝程序的根目錄下選擇jbpm.jar 文件11) 點(diǎn)擊打開(Open)12) 在jbpm.jar 下選擇源碼附件(Source attachment)作為入口13) 點(diǎn)擊編輯(Edit)14) 在源碼附件的配置(Source Attachment Configuration)對(duì)話框中,點(diǎn)擊目錄(External Folder.)15) 找到j(luò)BPM 安裝程序下的src 目錄16) 點(diǎn)擊選擇(Choose)17) 點(diǎn)擊兩次確定(Ok)會(huì)關(guān)閉所有對(duì)話框1.4在目錄中添加jPDL4 模式如果你想直接編輯XML 源碼, 最好是在你的XML 目錄中指定一下模式(schema),這樣當(dāng)你在編輯流程源碼的時(shí)候,可以更好的幫助你編寫代碼。1) 點(diǎn)擊窗口 - 屬性(Windows - Preferences)2) 選擇XML - 目錄(XML - CataLog)3) 點(diǎn)擊添加(Add)4) 添加XML 目錄(Add XML Catalog Entry)的窗口打開5) 點(diǎn)擊map-icon 的圖標(biāo)下面的按鈕并選擇文件系統(tǒng)(File System)6) 在打開的對(duì)話框中, 選擇jBPM 安裝目錄下src 文件夾中jpdl.xsd 文件7) 點(diǎn)擊打開(Open)并且關(guān)閉所有的對(duì)話框2、實(shí)例教程講解這節(jié)我們將使用建立一個(gè)簡(jiǎn)單請(qǐng)假流程項(xiàng)目2.1 建立項(xiàng)目在eclipse中新建一個(gè)Dynamic Web Project的項(xiàng)目jbpm4leave。2.2 加入jbpm用戶庫(kù)1)郵件點(diǎn)擊新建的項(xiàng)目jbpm4leaveProperties2)如下圖說示加入用戶庫(kù)2.3 加入jbpm所需要的配置文件大家可以從jbpm-4.4解壓后的文件下,在路徑examplessrc中找到以下文件,加入到項(xiàng)目工程的src中其中jbpm.hibernate.cfg.xml是配置jbpm4.4的hibernate配置文件,包括數(shù)據(jù)源的配置,和一般的hibernate.cfg.xml配置文件差不多。Jbpm.mailkit開頭的文件,是用于郵件功能的配置。2.4 新建簡(jiǎn)單的請(qǐng)假流程1)新建一個(gè)jbpm4.4的流程定義文件右鍵點(diǎn)擊srcNewOther,選擇JBoss jBPM下的Jbpm 4 Process Definition,文件名寫leave,版本號(hào)寫4.4即可。3)用流程設(shè)計(jì)器打開新建的leave.jpdl.xml。右鍵點(diǎn)擊leave.jpdl.xmlOpen WithjBPM jPDL4 Editor,,看見如下效果3)設(shè)計(jì)請(qǐng)假流程在這個(gè)簡(jiǎn)單的請(qǐng)假流程中,包含開始(start)、結(jié)束(end)、任務(wù)(task)、決策(decision)四種流程元素。流程設(shè)計(jì)如下:4)詳細(xì)設(shè)計(jì)流程中的各任務(wù)節(jié)點(diǎn)的流轉(zhuǎn)條件選中“申請(qǐng)”任務(wù)節(jié)點(diǎn),在properties(屬性)中,General標(biāo)簽的Name(屬性值)填為“申請(qǐng)”,Assignment標(biāo)簽的Type選擇 assignee(參與者,選擇這個(gè),可以指定該任務(wù)節(jié)點(diǎn)的直接參與者),Expression的屬性值填為#owner(即指定這個(gè)任務(wù)節(jié)點(diǎn)的直接參與者就是這個(gè)流程的啟動(dòng)者)。選中“經(jīng)理審批”任務(wù)節(jié)點(diǎn),在properties(屬性)中,General標(biāo)簽的Name(屬性值)填為“經(jīng)理審批”,Assignment標(biāo)簽的Type選擇 candidate-groups(參與者,選擇這個(gè),可以該任務(wù)節(jié)點(diǎn)有某個(gè)用戶組來參與),Expression的屬性值填為manager(即指定這個(gè)任務(wù)節(jié)點(diǎn)的有manager這個(gè)用戶組來完成)?!袄习鍖徟惫?jié)點(diǎn)同“經(jīng)理審批”任務(wù)節(jié)點(diǎn)設(shè)置類似,只是Expression改為boss設(shè)置決策節(jié)點(diǎn),選中,在屬性標(biāo)簽General中按如下所示填寫:Name(節(jié)點(diǎn)名稱),Expression(判斷表達(dá)式,其中day是在流程流轉(zhuǎn)過程中的一個(gè)記錄天數(shù)的屬性,整個(gè)表達(dá)式的意思是天數(shù)大于3天需要老板審批,如果天數(shù)不大于3天,經(jīng)理審批通過后就直接結(jié)束流程,不需要老板審批)。設(shè)計(jì)好流程后,點(diǎn)擊保存,IDE將自動(dòng)為你生成一個(gè)png的流程圖片,切記不可在xml源碼界面進(jìn)行保存,否則會(huì)生成不完整的流程圖片。在點(diǎn)擊下方的“Source”屬性,即可看到流程定義文件的xml源碼一下是leave.jpdl.xml的源碼: 3 ? 老板審批 : 結(jié)束 g=196,259,48,48 name=exclusive1至此工程的src文件下就有下面這些文件:2.5 發(fā)布流程Jbpm的流程發(fā)布其實(shí)很簡(jiǎn)單,只要使用jbpm已經(jīng)封裝好的方法進(jìn)行使用,即可。我們新建一個(gè)deploy.jsp的頁面用戶發(fā)布流程。在此講解使用zip文件打包發(fā)布流程。1) 將之前建立好的leave.jpdl.xml和leave.png文件,一起打包進(jìn)leave.zip文件。2) deploy.jsp代碼如下:Insert title here%request.setCharacterEncoding(UTF-8);response.setCharacterEncoding(UTF-8);String deployFile = request.getParameter(processDef);if (deployFile != null & deployFile != ) /必須使用的,流程引擎ProcessEngine processEngine = Configuration.getProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();try String file = deployFile;/將ZIP文件封轉(zhuǎn)到IO流里InputStream is = new FileInputStream(new File(file);ZipInputStream zis = new ZipInputStream(is);/將ZIP流程文件發(fā)布到pvm(流程虛擬機(jī)中,他會(huì)把ZIP包中的xml文件和png圖片存儲(chǔ)到數(shù)據(jù)庫(kù)中)repositoryService.createDeployment().addResourcesFromZipInputStream(zis).deploy();zis.close();is.close();out.println(發(fā)布流程成功);out.println(返回); catch (Exception e) e.printStackTrace();out.println(發(fā)布流程失敗);%function readFile(obj) document.getElementById(file).value = obj.value;可直接發(fā)布zip文件發(fā)布流程文件 3) 測(cè)試發(fā)布成功結(jié)果4) 查看已發(fā)布成功的流程已經(jīng)有的一個(gè)查看流程的頁面task-write.jsp,源碼如下:%String username = (String) session.getAttribute(username);/流程引擎ProcessEngine processEngine = Configuration.getProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();/流程定義集合List pdList = repositoryService.createProcessDefinitionQuery().list();%Insert title herebody font: normal 11px auto Trebuchet MS, Verdana, Arial, Helvetica,sans-serif;color: #4f6b72;background: #E6EAE9;a color: #c75f3e;#mytable padding: 0;margin: 0;caption padding: 0 0 5px 0;width: 700px;font: italic 11px Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;text-align: right;th font: bold 11px Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;color: #4f6b72;border-right: 1px solid #C1DAD7;border-bottom: 1px solid #C1DAD7;border-top: 1px solid #C1DAD7;letter-spacing: 2px;text-transform: uppercase;text-align: left;padding: 6px 6px 6px 12px;background: #CAE8EA;th.nobg border-top: 0;border-left: 0;border-right: 1px solid #C1DAD7;background: none;td border-right: 1px solid #C1DAD7;border-bottom: 1px solid #C1DAD7;background: #fff;font-size: 11px;padding: 6px 6px 6px 12px;color: #4f6b72;td.alt background: #F5FAFA;color: #797268;th.spec border-left: 1px solid #C1DAD7;border-top: 0;background: #fff;font: bold 10px Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;th.specalt border-left: 1px solid #C1DAD7;border-top: 0;background: #f5fafa;font: bold 10px Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;color: #797268;body.td font-size: 11px;流程定義流程id流程名稱版本號(hào)流程刪除啟動(dòng)流程a href=remove.jsp?id=刪除流程a href=start.jsp?id=啟動(dòng)流程5) 查看流程發(fā)布情況6) 流程定義所設(shè)計(jì)到的表JBPM4_DEPLOYMENTJBPM4_DEPLOYPROP/存放流程定義的版本號(hào),使用的jbpm版本號(hào),已經(jīng)流程名JBPM4_JOB/存放timer的定義JBPM4_LOB /存放流程定義的xml和png圖片文件2.6 啟動(dòng)流程1)啟動(dòng)流程,其實(shí)很簡(jiǎn)單,需要獲得流程定義的ID,使用jbpm已經(jīng)封裝好的流程啟動(dòng)方法就可以了。/start.jsp2)查看代辦任務(wù)/ task-personal-list.jsp%String username = (String) session.getAttribute(username);/流程引擎ProcessEngine processEngine = Configuration.getProcessEngine();/任務(wù)引擎TaskService taskService = processEngine.getTaskService();/當(dāng)前用戶代辦的任務(wù)集合List taskList2 = taskService.findPersonalTasks(username);%Insert title herebody font: normal 11px auto Trebuchet MS, Verdana, Arial, Helvetica,sans-serif;color: #4f6b72;background: #E6EAE9;a color: #c75f3e;#mytable padding: 0;margin: 0;caption padding: 0 0 5px 0;width: 700px;font: italic 11px Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;text-align: right;th font: bold 11px Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;color: #4f6b72;border-right: 1px solid #C1DAD7;border-bottom: 1px solid #C1DAD7;border-top: 1px solid #C1DAD7;letter-spacing: 2px;text-transform: uppercase;text-align: left;padding: 6px 6px 6px 12px;background: #CAE8EA;th.nobg border-top: 0;border-left: 0;border-right: 1px solid #C1DAD7;background: none;td border-right: 1px solid #C1DAD7;border-bottom: 1px solid #C1DAD7;background: #fff;font-size: 11px;padding: 6px 6px 6px 12px;color: #4f6b72;td.alt background: #F5FAFA;color: #797268;th.spec border-left: 1px solid #C1DAD7;border-top: 0;background: #fff;font: bold 10px Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;th.specalt border-left: 1px solid #C1DAD7;border-top: 0;background: #f5fafa;font: bold 10px Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;color: #797268;body.td font-size: 11px;個(gè)人待辦任務(wù)流程ID當(dāng)前節(jié)點(diǎn)查看詳細(xì)信息查看流程圖ahref=?id=查看詳細(xì)信息a href=view.jsp?id=查看流程圖3)實(shí)現(xiàn)如圖:/流程列表/流程啟動(dòng)后,成為當(dāng)前用戶的待辦任務(wù)2.7 流程辦理(申請(qǐng))由于我們的流程如下,啟動(dòng)啟動(dòng)流程后,流程就進(jìn)入了“申請(qǐng)”這個(gè)流程節(jié)點(diǎn)(注:流程啟動(dòng)后,會(huì)在流程第一個(gè)節(jié)點(diǎn)所有人/所有組的代辦事項(xiàng)中找到)。所以,現(xiàn)在就要在申請(qǐng)中進(jìn)行辦理。由于我們?cè)诙x流程時(shí)如下定義了:定義了,“申請(qǐng)”這個(gè)節(jié)點(diǎn)是有流程啟動(dòng)者進(jìn)行辦理的,form指定辦理“申請(qǐng)”這個(gè)節(jié)點(diǎn)的處理頁面,用戶可以自己定義處理頁面。Transition指定申請(qǐng)流程的下一個(gè)出口。1) 在代辦事項(xiàng)中,我們有一行如下代碼:a href=?id=查看詳細(xì)信息在這里會(huì)傳一個(gè)任務(wù)ID,所以在request.jsp中必須要取得這個(gè)任務(wù)ID。/request.jsp源碼Insert title here 申請(qǐng) 申請(qǐng)人: 請(qǐng)假時(shí)間: 請(qǐng)假原因: function change(obj)var reg = /1-9d*$/;if (!reg.test(obj.value) alert(天數(shù)必須為正整數(shù)!); obj.value=; obj.focus(); return false; function validate()var obj = document.getElementsByName(day)0.value;var reg = /1-9d*$/;if (!reg.test(obj) alert(天數(shù)必須為正整數(shù)!); document.getElementsByName(day)0.value=; document.getElementsByName(day)0.focus(); return false; else

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論