工作流框架jbpm使用說明書_第1頁
工作流框架jbpm使用說明書_第2頁
工作流框架jbpm使用說明書_第3頁
工作流框架jbpm使用說明書_第4頁
工作流框架jbpm使用說明書_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

工作流框架JBPM使用說明書

(V1.0)長城計算機軟件與系統(tǒng)有限公司稽核協(xié)查系統(tǒng)-企業(yè)所得稅核查子系統(tǒng)需求分析說明書V1.0目錄TOC\o"1-5"\h\z\o"CurrentDocument"1引言 2\o"CurrentDocument"1.1 簡介 2\o"CurrentDocument"1.2 使用版本 2\o"CurrentDocument"1.3 使用環(huán)境 2\o"CurrentDocument"2使用說明 3\o"CurrentDocument"2.1 建立數(shù)據(jù)庫 3\o"CurrentDocument"2.2 建立項目 6\o"CurrentDocument"2.3 建立工作流定義 6\o"CurrentDocument"2.4 工作流的發(fā)布 9\o"CurrentDocument"2.5 工作流中定義的類 9稽核協(xié)查系統(tǒng)-企業(yè)所得稅核查子系統(tǒng)需求分析說明書V1.01引言1.1簡介JBossJBPM是一個靈活、可擴展的流程語言框架。JPDL是建立在這個通用框架之上的一個流程語言。它使用直觀的流程語言以圖形化的方式來表示業(yè)務(wù)流程,使用術(shù)語任務(wù)、異步通訊等待狀態(tài)、定時器、自動操作等。為了將這些操作綁定在一起,JPDL提供了強有力的、可擴展的流程控制機制。JBossjBPM有一個具有最小的依賴性和盡可能簡單易用的java庫。當然它也可以用在吞吐量極為關(guān)鍵的J2EE集群應(yīng)用服務(wù)器環(huán)境中。持久層采用Hibernate實現(xiàn),理論上說,只要Hibernate支持的數(shù)據(jù)庫JBPM都支持。使用版本本例中使用的是JBPM-3.2-GA版本,需要JDK1.4.2及以上版本,下載地址為:/jbossjbpm/jbpm_downloads/,建議下載完整包。在jbpm安裝路徑\designer\eclipse中有支持圖形化設(shè)計的插件,將其加到eclipse中,在eclipse的窗口-首選項中如果有jbossjbpm選項,則安裝成功。使用環(huán)境本說明書中用到的軟件環(huán)境如下:操作系統(tǒng):WindowXPsp3JDK:1.4.2_08IDE:MyEclipse5.5應(yīng)用服務(wù)器:Weblogic8.1Tomcat5.0數(shù)據(jù)庫:oracle9i

稽核協(xié)查系統(tǒng)-企業(yè)所得稅核查子系統(tǒng)需求分析說明書V1.02使用說明該示例演示的是一個公司報銷流程。普通員工可以填寫報銷單,然后提交主管審批;主管審批可以有三種可能:一是主管可以駁回請求,那么報銷人需要重填報銷單,或者取消報銷操作;二是主管不同意請求,請求直接結(jié)束;三是主管同意請求,那又存在兩種情況,一是如果報銷總費用大于1000的話那么會自動轉(zhuǎn)到老板那里,如果小于1000就直接進入財務(wù)處理子流程,老板審批的話有兩種可能,一是同意進入財務(wù)處理子流程,二是不同意請求直接結(jié)束。2.1建立數(shù)據(jù)庫以下是使用JBPM需要的建庫腳本:jbpm-jpdl-3.2.GA\db\jbpm.jpdl.oracle.sql,運行后,數(shù)據(jù)庫中會建立28張以JBPM_開頭的表。例子所用的其他表的建表語句如下,此為sqlserver版本,oracle下稍加修改便可。--用戶表createtabletb_user(user_idintprimarykeyidentity(l,l),--用戶IDuser_namevarchar(30),—用戶名user_password varchar(30),--密碼user_typeint—用戶類型(0為普通用戶,1為主管,2為老板,3為財務(wù)人員))go--報銷表createtabletb_baoxiao(baoxiao_idintprimarykeyidentity(1.baoxiao_titlevarchar(30),--報銷主題baoxiao_memovarchar(30),--備注user_idint,--報銷人baoxiao_datedatetime,--報銷時間稽核協(xié)查系統(tǒng)-企業(yè)所得稅核查子系統(tǒng)需求分析說明書V1.0baoxiao_flagbitbaoxiao_flagbit—報銷狀態(tài)(0為未處理,1為已處理)go--報銷項目表createtabletb_baoxiao_item(itemidintprimarykeyidentity(1,1),itemiditemnamevarchar(30),—項目名稱item_moneyvarchar(100),--項目金額itemnamevarchar(30),—項目名稱item_moneyvarchar(100),--項目金額baoxiaoidint—報銷表IDgo--審核意見表createtabletbapprove(createtabletbapprove(approve_idintprimarykeyidentity(1,1).approve_idintprimarykeyidentity(1,1).useridint,--審核人IDbaoxiaoidint,--報銷表IDapprove_resultvarchar(30),--useridint,--審核人IDbaoxiaoidint,--報銷表IDapprove_resultvarchar(30),--審核結(jié)果approve_memovarchar(30),--審核意見approve_datedatetime—審核日期go--為報銷表添加外鍵altertabletb_baoxiaoaddCONSTRAINTbaoxiao_foreign_keyforeignkey(user_id)referencestb_user(user_id)go--為報銷項目表添加外鍵altertabletb_baoxiao_itemaddCONSTRAINTbaoxiao_item_foreign_keyforeignkey

稽核協(xié)查系統(tǒng)-企業(yè)所得稅核查子系統(tǒng)需求分析說明書V1.0(baoxiao_id)referencestb_baoxiao(baoxiao_id)go—為審核意見表添加外鍵altertabletb_approveaddCONSTRAINTapprove_user_foreign_keyforeignkey(user_id)referencestb_user(user_id)goaltertabletb_approveaddCONSTRAINTapprove_baoxiao_foreign_keyforeignkey(baoxiao_id)referencestb_baoxiao(baoxiao_id)go以下是用戶的初始化數(shù)據(jù):usertb_usergoinsertintotb_user(user_name,user_password,user_type)values('test','123',0)insertintotb_user(user_name,user_password,user_type)values('managerl','123',l)insertintotb_user(user_name,user_password,user_type)values('manager2','123',l)insertintotb_user(user_name,user_password,user_type)values('boss','123',2)insertintotb_user(user_name,user_password,user_type)values('caiwu','123',2)

稽核協(xié)查系統(tǒng)-企業(yè)所得稅核查子系統(tǒng)需求分析說明書V1.02.2建立項目在eclipse中新建一個web項目,構(gòu)建路徑導入jbpm路徑下的jbpm-identity.jar、jbpm-jpdl.jar兩個包,以及jbpm安裝路徑\lib下的所有jar包(使用weblogic不要導入servlet-api.jar這個包)。在項目的src下復制jbpm安裝路徑\config下的4個配置文件,并修改hibernate中的相應(yīng)配置。2.3建立工作流定義在eclipse中右鍵點擊包,點新建一個jbossjbpm-processdefinition,然后進行流?Decisioti?判斷走向"自動獨理申請結(jié)果completocaiwutocaiwu對應(yīng)的processdefinition.xml文件內(nèi)容如下:r?Decisioti?判斷走向"自動獨理申請結(jié)果completocaiwutocaiwu對應(yīng)的processdefinition.xml文件內(nèi)容如下:r fi字 Node?也申請人修改報銷單—r— —七needmodGreatWall稽核協(xié)查系統(tǒng)-企業(yè)所得稅核查子系統(tǒng)需求分析說明書V1.0GreatWall<?xmlversion="1.0"encoding="utf-8"?><process-definitionxmlns=""name="baoxiao"><start-statename="start"><taskname="填寫報銷單"〉<controller〉〈variablename="baixiaoId"access="read,write,required"mapped-name="扌報銷ID"></variable></controller〉<assignmentclass="com.workflow.assignment.UserAssignment"/></task><transitionname="提交至U部門主管"to="部門主管審核"></transition></start-state><task-nodename="部門主管審核"〉<taskname="主管審核"〉<controller〉<variablename="baixiaoId"access="read"mapped-name="扌報銷ID"></variable></controller><assignmentclass="com.workflow.assignment.ManagerAssignment"/></task><transitionname="要求修改"to="申請人修改報銷單"></transition><transitionname="主管同意"to="判斷走向"></transition></task-node><task-nodename="申請人修改報銷單"〉<taskname="修改報銷單"〉<controller><variablename="baixiaoId"access="read,write,required"mapped-name="扌報銷ID"></variable></controller><assignmentclass="com.workflow.assignment.UserAssignment"/></task><transitionname="提交重審"to="部門主管審核"></transition><transitionname="放棄申請"to="end1"></transition></task-node><decisionname="判斷走向"〉<handlerclass="com.workflow.decision.ProcessDecision"/><transitionname="大于10000"to="老板審核申請"></transition><transitionname="小于10000"to="財務(wù)處理流程"></transition><transitionname="主管不同意"to="自動處理申請結(jié)果"></transition></decision><task-nodename="老板審核申請"〉<taskname="老板審核"〉<controller><variablename="baixiaoId"access="read"mapped-name="扌報銷ID"></variable></controller><assignmentclass="com.workflow.assignment.BossAssignment"/></task><transitionname="老板同意"to="財務(wù)處理流程"></transition><transitionname="老板不同意"to="自動處理申請結(jié)果"></transition></task-node><process-statename="財務(wù)處理流程"〉<sub-processname="caiwu"binding="late"/><variablename="baixiaoId"access="read"mapped-name="扌報銷ID"></variable>

GreatWall稽核協(xié)查系統(tǒng)-企業(yè)所得稅核查子系統(tǒng)需求分析說明書V1.0GreatWall<transitionname=""to="自動處理申請結(jié)果"></transition></process-state><nodename="自動處理申請結(jié)果"〉<eventtype="node-enter"><actionname="action1"class="com.workflow.action.ProcessResult"/></event><transitionname=""to="end1"></transition></node><end-statename="end1"></end-state></process-definition>財務(wù)處理的子流程圖如下:相應(yīng)的processdefinition.xml文件如下:<?xmlversion="1.0"encoding="UTF-8"?><process-definitionxmlns=""name="caiwu"><start-statename="start"><transitionname=""to="自動財務(wù)處理"></transition></start-state><end-statename="end1"></end-state><nodename="自動財務(wù)處理"〉<eventtype="node-enter"><actionname="cai"class="com.workflow.action.CaiwuProcessAction"/></event><transitionname=""to="end1"></transition></node></process-definition>稽核協(xié)查系統(tǒng)-企業(yè)所得稅核查子系統(tǒng)需求分析說明書V1.02.4工作流的發(fā)布這里使用一個簡單的strutsaction類,當用戶在頁面出發(fā)此類時,發(fā)布流程。因為本例中有子流程,所以必須先發(fā)布子流程,再發(fā)布父路程。publicclassReleaseActionextendsAction{publicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){try{InputStreamis=newFileInputStream(request.getRealPath("/")+"/WEB-INF/classes/"+"com/workflow/flowchart/caiwu/processdefinition.xml");ProcessDefinitionprocessDefinition=ProcessDefinition.parseXmlInputStream(is);InputStreamis1=newFileInputStream(request.geLRealPaLh("/")+"/WEB-INF/classes/"+"com/workflow/flowchart/baoxiao/processdefinition.xml");ProcessDefinitionprocessDefinition1=ProcessDefinition.parseXmlInputStream(is1);//從jbpm.cfg.xml取得jbpm的配置JbpmConfigurationconfig=JbpmConfiguration.getInstance();//創(chuàng)建一個jbpm容器JbpmContextjbpmContext=config.createJbpmContext();jbpmContext.deployProcessDefinition(processDefinition);jbpmContext.deployProcessDefinition(processDefinition1);jbpmContext.close();returnmapping.findForward("success");}catch(Exceptione){e.printStackTrace();returnmapping.findForward("fail");}}}至此,如果用戶在頁面中出發(fā)此action,工作流就會發(fā)布,在數(shù)據(jù)庫中可以看到多了很多數(shù)據(jù),JBPM_PROCESSDEFINITION表中有剛發(fā)布的兩個流程的信息。2.5工作流中定義的類主流程中的用于普通員工的任務(wù)分配類代碼如下:publicclassUserAssignmentimplementsAssignmentHandler{publicvoidassign(AssignableargO,ExecutionContextarg1)throwsException{StringissueUser=(String)arg1.getContextInstance().getVariable("issueUser");arg0.setActorId(issueUser);}}主流程中用于主管審批的任務(wù)分配類代碼如下:第9頁GreatWallGreatWall稽核協(xié)查系統(tǒng)-企業(yè)所得稅核查子系統(tǒng)需求分析說明書V1.0publicclassManagerAssignmentimplementsAssignmentHandler{publicvoidassign(Assignablearg0,ExecutionContextargl)throwsException{TbUserDAOtbUserDAO=newTbUserDAO();Listlist=tbUserDAO.findByUserType(newLong(1));String[]manager=newString[list.size()];inti=0;for(Iteratoriter=list.iterator();iter.hasNext();) {TbUserel=(TbUser)iter.next();manager[i++]=el.getUserId().toString();}argO.setPooledActors(manager);}}主流程中老板審批的任務(wù)分配類的代碼如下:publicclassBossAssignmentimplementsAssignmentHandler{publicvoidassign(Assignablearg0,ExecutionContextarg1)throwsException{TbUserDAOtbUserDAO=newTbUserDAO();Listlist=tbUserDAO.findByUserType(newLong(2));String[]boss=newString[list.size()];inti=0;for(Iteratoriter=list.iterator();iter.hasNext();) {TbUserel=(TbUser)iter.next();boss[i++]=el.getUserId().toString();}arg0.setPooledActors(boss);}}財務(wù)處理子流程的任務(wù)分配方法沒有寫,與主流程的是一樣的。主流程中判斷走向這個Decision類的代碼如下:publicclassProcessDecisionimplementsDecisionHandler{publicStringdecide(ExecutionContextarg0)throwsException{StringbaixiaoId=(String)arg0.getContextInstance().getVariable("baoxiaoId");TbBaoxiaoDAObaoxiaoDAO=newTbBaoxiaoDAO();TbBaoxiaobaoxiao=baoxiaoDAO.findById(Long.valueOr(baixiaoId));SetbxItem=baoxiao.getTbBaoxiaoItems();Setapprove=baoxiao.getTbApproves();intcount=0;for(Iteratoriter=bxItem.iterator();iter.hasNext();) {TbBaoxiaoItemelement=(TbBaoxiaoItem)iter.next();count+=Integer.parseInt(element.getItemMoney());}TbApproveelement=(TbApprove)approve.iterator().next();Stringresult=element.getApproveResult();if

溫馨提示

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

評論

0/150

提交評論