JBoss JBPM 實踐系列(一)--- 安裝配置(Tomcat 6.0 + MySQL 5.1)

terryisme發表於2009-04-24
jBPM,全稱是Java Business Process Management,是一種基於J2EE的輕量級工作流管理系統。jBPM是公開原始碼專案,遵循Apache License。jBPM在2004年10月18日,釋出了2.0版本,並在同一天加入了JBoss,成為了JBoss企業中介軟體平臺的一個組成部分,它的名稱也改成JBoss jBPM。

jBPM 有兩大特色,使他成為市場的一大兩點。其中最大的特色就是它的業務邏輯定義沒有采用目前的一些規範,如WfMC´s XPDL, BPML, ebXML, BPEL4WS等,而是它自己定義的JBoss jBPM Process definition language (jPdl)。jPdl把一個業務邏輯流程看作是一個UML狀態圖,如果你不熟悉UML狀態圖,那初學計算機語言的流程圖應該熟悉吧,表達的方式和意思大同小異。jPdl詳細定義了這個狀態圖的每個部分,如起始、結束狀態,狀態之間的轉換等;其另一大特色就是整合Hibernate,確切的說是繫結,使用Hibernate來管理資料庫,這樣jBPM只專注於他的業務流程控制。

  從上面可以看出,jBPM是一個業務流程管理引擎,是一個工作流引擎。除此之外,它同時實現了對jPDL和對BPEL的支援。它整合了Hibernate 技術處理資料庫,建立了一系列的資料庫表,持久化工作流引擎所需的狀態。因此,jBPM支援所有Hibernate支援的資料庫,能夠把Java物件持久化到資料庫中,把Hibernate支援的Java類的物件儲存到資料庫中!

  

   你完全可以像用 Java 的類庫一樣使用JBoss jBPM,而且透過配置JBoss jBPM也可以被部署在其它J2EE應用伺服器上和任何資料庫上。

   在本文中,我們首先來建立我們的JBoss jBPM執行開發環境。在開始之前,請準備一下軟體產品:

  ·JDK 1.5 或者更高版本, 這裡使用JDK 6u10b

  ·Apache Tomcat 5.5.x或更高版本,這裡使用Tomcat 6.0.16
MySQL 5.1 ,也可以選擇其它Hiberante 支援的資料庫,沒有太大差別,這裡使用MySQL 5.1

  ·Apache Ant 1.7.0

  ·JBPM-3.2.3

  ·Eclipse Europa(Eclipse V3.3) for JavaEE Developers或更高, 這裡使用Eclipse V3.4

說明:JBoss jBPM的釋出包中已經配置好了一套服務環境,是基於JBoss的。因為我們習慣了Tomcat 的小巧靈活,而且我們也不希望jBPM依賴JBoss。

  1. 下載安裝JDK,Tomcat, Ant, MySQL, 並設定相應的環境變數

  此步驟不再熬述,具體請查閱官方文件

   Jdk:

   Ant:

  Tomcat:

  Eclipse:

  2. 下載JBoss jBPM

  JBoss jBPM 官方()當前釋出的版本為 3.2.3, 只需要下載jPDL Suite,下載後得到jbpm-jpdl-suite-3.2.3.zip,這個套件包含了所有的內容和資源,包括eclipse外掛,示例,和流程管理控制應用。

  解壓jbpm-jpdl-suite-3.2.3.zip,這裡解壓後得到D:jbpm-jpdl-3.2.3,其主要目錄結構如下:

D:jbpm-jpdl-3.2.3
|--- db    這裡都是些sql定義和資料檔案,如果改用其它資料庫,可以使用這些資源來建立,服務還是很周到的。順便
|             羅嗦一句,jBPM 預設使用的是記憶體資料庫 hsqldb ,這個資料庫還沒研究過(嘿嘿---)
|
|--- deploy  用來部署你的應用的包和資源
|
|--- designer  這裡是Eclipse外掛,這樣你就可以在圖形介面來定義你的業務流程,骨灰級人物沒他也能過日子
|
|--- doc  這裡是jBPM相關元件的API 文件
|
|--- examples  這裡是些學習的例子
|
|--- lib  jBPM 的類庫
|
|--- server  這裡有一個JBoss 伺服器,並且包含了本JBoss jBPM引擎,還部署了websale例子
|
|--- src  這裡是JBoss jBPM的原始碼
3. 配置資料庫

   jBPM需要把初始化資料和工作流定義儲存到資料庫中,它定義了一套資料結構來儲存這些資料,這也是該容器本身的特點。

   在mysql 中建立一個資料庫 jbpm ,(create database jbpm;),並建立使用者jbossjbpm(密碼:jbossjbpm)

   說明:如果你嫌麻煩可以使用root賬號和其密碼,不過下面的設定請做相應的更改

在D:jbpm-jpdl-3.2.3db 找到jbpm.jpdl.mysql.sql, 該檔案必須修改一下,以符合MySQL的語法結構。具體就是在每條語句的末尾增加一個分號";"你可以藉助 UltrEdit, EditPlus等工具來做這些事情(注意替換時要注意匹配大小寫,有寫表的欄位中包含CREATE字元),如果是第一次建立這些資料庫表,要刪除 create語句上面的alter和drop(這些表還都不存在)。

   4. 準備jBPM包

這是個jbpm-jpdl流程管理控制檯,就像Tomcat有個單獨的Administrator應用用來管理配置和部署一樣的東東。有了他你可以在圖形介面來操作控制你的應用。

   開啟命令列控制檯,切換到D:jbpm-jpdl-3.2.3deploy 目錄,執行以下命令:

   ant customize.console.for.tomcat

  

   注意:請確保你的ant安裝配置妥當,可以在命令列輸入:ant -version 來檢測ant 是否正確安裝。命令執行後能看到ant的版本資訊即OK

ant customize.console.for.tomcat 執行成功後,會在D:jbpm-jpdl-3.2.3deploy 目錄下生成customized和target目錄,其中customized目錄下的jbpm-console.war即是我們想要的war包。

   我們需要修改jbpm-console.war/WEB-INF/classes/hibernate.cfg.xml 檔案,以適應我們的資源屬性的需要。修改後的結果如下:

  Xml程式碼

 
   
 
    <!-- hibernate dialect --&gt 
    org.hibernate.dialect.MySQLInnoDBDialect 
 
    <!-- JDBC connection properties (begin) --&gt 
    com.mysql.jdbc.Driver 
    jdbc:mysql://localhost:3306/jbpm 
    jbossjbpm 
    jbossjbpm 
     <!-- JDBC connection properties (end) --&gt 
      
    org.hibernate.cache.HashtableCacheProvider 
      
    <!-- DataSource properties (begin) ==  
    java:/JbpmDS 
    == DataSource properties (end) --&gt 
    org.hibernate.transaction.JDBCTransactionFactory  
...  
這裡就是啟用了 更換了預設的資料屬性,JDBC connection properties ,還有自己定義的資料名字和帳號,另外需要注意的是用

  Xml程式碼

org.hibernate.transaction.JDBCTransactionFactory 

  代替JTATransactionFactory和CMTTransactionFactory,想用JTATransactionFactory或CMTTransactionFactory配置也可以,不過還沒有研究過,有知道的朋友可以一起學習一下。

  

   複製jboss-j2ee.jar包至jbpm-console.war/WEB-INF/lib 。釋出包下(D:jbpm-jpdl-3.2.3)很多地方都有這個包你可以找一下,比如 D:jbpm-jpdl-3.2.3serverclient。

   這裡主要是用到了Java Transaction Architecture, 所以你可以用J2EE中的jta.jar包還替換jboss-j2ee.jar。jta相關資訊請參考: /javaee/technologies/jta/index.jsp

   複製commons-collections.jar 包至jbpm-console.war/WEB-INF/lib  。釋出包下(D:jbpm-jpdl-3.2.3)好幾處都有這個包,比如 D:jbpm-jpdl-3.2.3serverserverjbpmlib 。這個包是Apache Commons包,到處都找的的到。

   複製jsf-api.jar和jsf-impl.jar包至jbpm-console.war/WEB-INF/lib ,你可以在D:jbpm-jpdl-3.2.3serverserverjbpmdeployjboss-web.deployerjsf-libs種找到這兩個包。

   說明:因為jbpm-console是一個jsf應用,沒這兩個包,你訪問時會報404或505錯誤。

   複製MySQL JDBC驅動程式包至%CATALINA_HOME%/lib (Tomcat 6)或%CATALINA_HOME%/common/lib(Tomcat 5.5)

  

   複製修改後的jbpm-console至%CATALINA_HOME%/webapps
這樣jBPM基本上配置完成,但是我們還不能訪問他,還需要配置安全訪問控制和初始的使用者資料

   5. 配置Tomcat 安全域

方法一:在%CATALINA_HOME%/conf/Catalina/localhost 建立一個jbpm-console.xml 檔案,內容如下:

  Xml程式碼

 
    driverName="com.mysql.jdbc.Driver" 
    connectionURL="jdbc:mysql://localhost:3306/jbpm" 
    connectionName="jbossjbpm"   
    connectionPassword="jbossjbpm" 
    userTable="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g"   
    userNameCol="g.TYPE_ = 'security-role' AND m.GROUP_ = g.ID_ AND m.USER_ = u.ID_ AND u.NAME_"   
    userCredCol="DISTINCT u.PASSWORD_" 
    userRoleTable="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g"   
    roleNameCol="g.NAME_" /> 
 

   方法二:修改 %CATALINA_HOME%/conf/tomcat-users.xml檔案來設定安全域。為了不和tomcat已有的使用者衝突,這裡把 tomcat以前的登陸帳號username="admin" 修改為username="tadmin",修改後的檔案如下:

  Xml程式碼

 
 
 
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
   
 

  6. 初始化資料

   在MySQL jbpm資料庫中插入以下資料

  Sql程式碼

INSERT INTO JBPM_ID_GROUP VALUES(1,'G','sales','organisation',NULL);  
 
INSERT INTO JBPM_ID_GROUP VALUES(2,'G','admin','security-role',NULL);  
 
INSERT INTO JBPM_ID_GROUP VALUES(3,'G','user','security-role',NULL);  
 
INSERT INTO JBPM_ID_GROUP VALUES(4,'G','hr','organisation',NULL);  
 
INSERT INTO JBPM_ID_GROUP VALUES(5,'G','manager','security-role',NULL);  
 
INSERT INTO JBPM_ID_USER VALUES(1,'U','user','user@sample.domain','user');  
 
INSERT INTO JBPM_ID_USER VALUES(2,'U','manager','manager@sample.domain','manager');  
 
INSERT INTO JBPM_ID_USER VALUES(3,'U','admin','admin@sample.domain','admin');  
 
INSERT INTO JBPM_ID_USER VALUES(4,'U','shipper','shipper@sample.domain','shipper');  
 
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(1,'M',NULL,NULL,2,4);  
 
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(2,'M',NULL,NULL,3,4);  
 
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(3,'M',NULL,NULL,4,4);  
 
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(4,'M',NULL,NULL,4,3);  
 
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(5,'M',NULL,NULL,1,3);  
 
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(6,'M',NULL,NULL,2,3);  
 
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(7,'M',NULL,NULL,3,3);  
 
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(8,'M',NULL,NULL,3,2);  
 
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(9,'M',NULL,NULL,2,2);  
 
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(10,'M',NULL,NULL,2,5);  
 
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(11,'M',NULL,'boss',2,1);  
 
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(12,'M',NULL,NULL,1,1); 

7. 啟動Tomcat 服務,檢視控制檯的日誌,排除錯誤,資料庫錯誤和支援庫不完整都可能導致錯誤。

   在瀏覽器中輸入: 能正常訪問說明部署成功,你可以用頁面上列出的使用者和賬號登陸進去體驗一下。
http://www.cnblogs.com/shiyangxt/archive/2008/09/27/1301092.html[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/93029/viewspace-1021205/,如需轉載,請註明出處,否則將追究法律責任。

相關文章