jbpm4.4學習筆記(1)

在學習了jbpm流程的基本流程定義部署,流程實例發起,管理等基本操作後,我們以一個請假流程爲例來進一步學習jbpm。

我們首先設計一個流程定義,然後將所設計的流程定義集成到web工程中,然後實現請假流程定義的發佈,查看和刪除操作。

閒話少敘,具體的操作如下:

1、新建web工程

在eclipse中file->new->other然後選擇Dynamic web project新建web工程。工程取名爲jbpm4webchuang。創建工程後其文件結構如圖4-1。

圖4-1 新建web工程

2、創建請假流程定義leave.jpdl.xml

在我們所創建的項目中新建jpdl文件,保存在Java Resources/src目錄下,同時拷貝jbpm4.4目錄中examples中的相應註冊文件到 Java Resources/src目錄。此時工程文件結構如下圖4-2。

圖4-2 創建請假流程定義文件

此時我們設計待發布的請假流程,具體leave.jpdl.xml文件的代碼如下:

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <process name="leave" xmlns="http://jbpm.org/4.4/jpdl">  
  4.    <start name="start1" g="136,49,48,48">  
  5.       <transition name="to 申請" to="申請" g="-45,-22"/>  
  6.    </start>  
  7.    <task name="申請" g="112,146,92,52" assignee="lingo">  
  8.       <transition name="to 經理審批" to="經理審批" g="-69,-22"/>  
  9.    </task>  
  10.    <task name="經理審批" g="107,250,92,52" assignee="manager">  
  11.       <transition name="to exclusive1" to="exclusive1" g="-79,-22"/>  
  12.    </task>  
  13.    <decision name="exclusive1" g="125,322,48,48" expr="#{day > 3 ? 'to老闆審批 ' : 'to end1'}">  
  14.       <transition name="to 老闆審批" to="老闆審批" g="265,344:-69,-22"/>  
  15.       <transition name="to end1" to="end1" g="-50,-22"/>  
  16.    </decision>  
  17.    <task name="老闆審批" g="216,394,92,52" assignee="boss">  
  18.       <transition name="to end1" to="end1" g="261,473:-50,-22"/>  
  19.    </task>  
  20.    <end name="end1" g="127,449,48,48"/>  
  21. </process>  

其設計後的圖形界面如圖4-3(注意:我們可以通過圖形界面直接設計流程定義):

圖4-3 流程定義的圖形顯示

3、添加java依賴庫

在eclipse中右鍵點擊工程Build path->Configure Build Path出現如圖4-4對話框。

圖4-4 添加java依賴庫

如上圖所示,我添加的依賴庫文件是之前將jbpm4的所有第三方類庫放到一個文件夾中然後通過Add Library的方式添加jbpm依賴庫(另一種方法也可以通過直接添加即Add External JARs來實現)。此處需要說明的是,此時添加的依賴庫只是在eclipse編譯時使用,即eclipse編譯是可以通過,但是運行的時候,我們還需要將所需要的所有第三方jar文件添加到工程的WebContent/WEB-INF/lib目錄下,即運行時依賴庫。

4、將流程定義集成到web應用中

在工程的WebContent目錄下創建Index.jsp文件,其代碼如下:

[html] view plaincopy
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <%@page import="java.util.*,org.jbpm.api.*"%>  
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  5. <html>  
  6. <head>  
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  8. <title>Insert title here</title>  
  9. </head>  
  10. <body>  
  11.     <!-- 部署流程定義對應連接 -->  
  12.     <a href="index.jsp?action=deploy">deploy</a><br>  
  13.     <%  
  14.         //獲得processEngine流程引擎  
  15.         ProcessEngine processEngine=Configuration.getProcessEngine();  
  16.       
  17.         //獲得RepositoryService對象  
  18.         //三個作用:1、流程發佈定義 2、管理流程定義 3、刪除流程定義  
  19.         RepositoryService repositoryService=processEngine.getRepositoryService();  
  20.           
  21.         //獲得觸發連接並處理  
  22.         String action=request.getParameter("action");  
  23.         if("deploy".equals(action))  
  24.         {  
  25.             //部署流程定義  
  26.             repositoryService.createDeployment().addResourceFromClasspath("leave.jpdl.xml").deploy();  
  27.         }else if("remove".equals(action))  
  28.         {  
  29.             //刪除已部署的流程定義  
  30.             repositoryService.deleteDeploymentCascade(request.getParameter("id"));  
  31.         }  
  32.           
  33.         //獲得流程定義  
  34.         List<ProcessDefinition> list =repositoryService.createProcessDefinitionQuery().list();  
  35.         for (ProcessDefinition pd: list)  
  36.         {  
  37.     %>  
  38.     <%=pd.getId() %><%=pd.getName() %><%=pd.getVersion() %><a href="index.jsp?action=remove&id=<%=pd.getDeploymentId()%>">remove</a><br>  
  39.     <%   
  40.         }  
  41.     %>  
  42. </body>  
  43. </html>  
具體代碼比較簡單,此處不再多加說明。

5、編輯web.xml文件

編輯web.xml文件主要是爲了實現web服務的文件映射和服務註冊,爲了使用戶能夠通過web服務訪問到index.jsp我們編寫如下web.xml文件(否則會出現HTTP Status 404 報錯):

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"  
  3.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
  5.                       http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
  6.   version="3.0">  
  7.   
  8.     <welcome-file-list>  
  9.         <welcome-file>index.html</welcome-file>  
  10.         <welcome-file>index.htm</welcome-file>  
  11.         <welcome-file>index.jsp</welcome-file>  
  12.         <welcome-file>default.html</welcome-file>  
  13.         <welcome-file>default.htm</welcome-file>  
  14.         <welcome-file>default.jsp</welcome-file>  
  15.     </welcome-file-list>  
  16. </web-app>  

此時別忘了添加運行時依賴庫。

6、程序運行效果

到此爲止,整個web程序已經可以運行了,我們的運行環境是java JDK1.6+Apache Tomcat 7.0+jbpm 4.4。右鍵工程,點擊Run As-> Run on Server即可彈出瀏覽器如圖4-6:

圖4-6 程序運行效果

如上圖所示,點擊deploy連接程序將會在後臺部署一個新的流程定義同時顯示出流程定義的id,名稱和版本。點擊remove,將會刪除掉相應的流程定義。

7、總結語

這一節沒有太多的新東西,只是在原來的操作上將流程定義的部署集成到web工程上,但是這是我們後面程序的基礎,呵呵繼續努力中,come on!。

發佈了5 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章