亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

JBoss JBPM 實踐系列(一)--- 安裝配置(Tomca

系統 1809 0
?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 http://java.sun.com/

? Ant http://ant.apache.org/

Tomcat: http://tomcat.apache.org/

?Eclipse: http://www.eclipse.org/

?

?2. 下載JBoss jBPM

JBoss jBPM 官方( http://www.jboss.org/jbossjbpm/ )當前發布的版本為 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.3\db 找到jbpm.jpdl.mysql.sql, 該文件必須修改一下,以符合MySQL的語法結構。具體就是在每條語句的末尾增加一個分號";"你可以借助 UltrEdit, EditPlus等工具來做這些事情(注意替換時要注意匹配大小寫,有寫表的字段中包含CREATE字符),如果是第一次創建這些數據庫表,要刪除create語句上面的alter和drop(這些表還都不存在)。

?

?

??????4. 準備jBPM包

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

?

????? 打開命令行控制臺,切換到D:\jbpm-jpdl-3.2.3\deploy 目錄,執行以下命令:

????? ant customize.console.for.tomcat

??

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

?

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

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

Xml代碼 復制代碼
  1. <hibernate-configuration>??
  2. ??<session-factory>??
  3. ??
  4. ????<!--?hibernate?dialect?-->??
  5. ????<property?name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>??
  6. ??
  7. ????<!--?JDBC?connection?properties?(begin)?-->??
  8. ????<property?name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>??
  9. ????<property?name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpm</property>??
  10. ????<property?name="hibernate.connection.username">jbossjbpm</property>??
  11. ????<property?name="hibernate.connection.password">jbossjbpm</property>??
  12. ?????<!--?JDBC?connection?properties?(end)?-->??
  13. ???? ??
  14. ????<property?name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>??
  15. ???? ??
  16. ????<!--?DataSource?properties?(begin)?== ??
  17. ????<property?name="hibernate.connection.datasource">java:/JbpmDS</property>??
  18. ????==?DataSource?properties?(end)?-->??
  19. ????<property?name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>??
  20. ...???
    <hibernate-configuration>

  <session-factory>



    <!-- hibernate dialect -->

    <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>



    <!-- JDBC connection properties (begin) -->

    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpm</property>

    <property name="hibernate.connection.username">jbossjbpm</property>

    <property name="hibernate.connection.password">jbossjbpm</property>

     <!-- JDBC connection properties (end) -->

    

    <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>

    

    <!-- DataSource properties (begin) ==

    <property name="hibernate.connection.datasource">java:/JbpmDS</property>

    == DataSource properties (end) -->

    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>

...	
  

?

?????? 這里就是啟用了 更換了默認的數據屬性,JDBC connection properties ,還有自己定義的數據名字和帳號,另外需要注意的是用

Xml代碼 復制代碼
  1. <property?name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>??
    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>


  

?

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

?

???

?????? 拷貝jboss-j2ee.jar包至jbpm-console.war/WEB-INF/lib 。發布包下(D:\jbpm-jpdl-3.2.3)很多地方都有這個包你可以找一下,比如 D:\jbpm-jpdl-3.2.3\server\client。

?????? 這里主要是用到了Java Transaction Architecture, 所以你可以用J2EE中的jta.jar包還替換jboss-j2ee.jar。jta相關信息請參考: http://java.sun.com/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.3\server\server\jbpm\lib 。這個包是Apache Commons包,到處都找的的到。

?

??????? 拷貝jsf-api.jar和jsf-impl.jar包至jbpm-console.war/WEB-INF/lib?,你可以在D:\jbpm-jpdl-3.2.3\server\server\jbpm\deploy\jboss-web.deployer\jsf-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代碼 復制代碼
  1. <Context>??
  2. <Realm??className="org.apache.catalina.realm.JDBCRealm"? ??
  3. ????driverName="com.mysql.jdbc.Driver"??
  4. ????connectionURL="jdbc:mysql://localhost:3306/jbpm"??
  5. ????connectionName="jbossjbpm"? ??
  6. ????connectionPassword="jbossjbpm"??
  7. ????userTable="JBPM_ID_USER?u,?JBPM_ID_MEMBERSHIP?m,?JBPM_ID_GROUP?g"? ??
  8. ????userNameCol="g.TYPE_?=?'security-role'?AND?m.GROUP_?=?g.ID_?AND?m.USER_?=?u.ID_?AND?u.NAME_"? ??
  9. ????userCredCol="DISTINCT?u.PASSWORD_"??
  10. ????userRoleTable="JBPM_ID_USER?u,?JBPM_ID_MEMBERSHIP?m,?JBPM_ID_GROUP?g"? ??
  11. ????roleNameCol="g.NAME_"?/>??
  12. </Context>??
    <Context>

<Realm  className="org.apache.catalina.realm.JDBCRealm" 

	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_" />

</Context>
  

?

???????? 方法二:修改 %CATALINA_HOME%/conf/tomcat-users.xml文件來設置安全域。為了不和tomcat已有的用戶沖突,這里把 tomcat以前的登陸帳號username="admin"?修改為username="tadmin",修改后的文件如下:

?

Xml代碼 復制代碼
  1. <?xml?version='1.0'?encoding='utf-8'?>??
  2. ??
  3. <tomcat-users>??
  4. ??
  5. ??<role?rolename="user"/>??
  6. ??
  7. ??<role?rolename="administrator"/>??
  8. ??
  9. ??<role?rolename="manager"/>??
  10. ??
  11. ??<role?rolename="sales"/>??
  12. ??
  13. ??<role?rolename="hr"/>??
  14. ??
  15. ??<role?rolename="admin"/>??
  16. ??
  17. ??<role?rolename="participant"/>??
  18. ??
  19. ??<user?username="user"?password="user"?roles="user,sales"/>??
  20. ??
  21. ??<user?username="shipper"?password="shipper"?roles="user,hr"/>??
  22. ??
  23. ??<user?username="manager"?password="manager"?roles="admin,hr,manager,user,sales"/>??
  24. ??
  25. ??<user?username="tadmin"?password=""?roles="admin,manager"/>??
  26. ??<user?username="admin"?password="admin"?roles="admin,user,hr"/>??
  27. </tomcat-users>??
    <?xml version='1.0' encoding='utf-8'?>



<tomcat-users>



  <role rolename="user"/>



  <role rolename="administrator"/>



  <role rolename="manager"/>



  <role rolename="sales"/>



  <role rolename="hr"/>



  <role rolename="admin"/>



  <role rolename="participant"/>



  <user username="user" password="user" roles="user,sales"/>



  <user username="shipper" password="shipper" roles="user,hr"/>



  <user username="manager" password="manager" roles="admin,hr,manager,user,sales"/>



  <user username="tadmin" password="" roles="admin,manager"/>

  <user username="admin" password="admin" roles="admin,user,hr"/>

</tomcat-users>
  

?

?????????6. 初始化數據

???????? 在MySQL jbpm數據庫中插入以下數據

Sql代碼 復制代碼
  1. INSERT?INTO?JBPM_ID_GROUP?VALUES(1,'G','sales','organisation',NULL); ??
  2. ??
  3. INSERT?INTO?JBPM_ID_GROUP?VALUES(2,'G','admin','security-role',NULL); ??
  4. ??
  5. INSERT?INTO?JBPM_ID_GROUP?VALUES(3,'G','user','security-role',NULL); ??
  6. ??
  7. INSERT?INTO?JBPM_ID_GROUP?VALUES(4,'G','hr','organisation',NULL); ??
  8. ??
  9. INSERT?INTO?JBPM_ID_GROUP?VALUES(5,'G','manager','security-role',NULL); ??
  10. ??
  11. INSERT?INTO?JBPM_ID_USER?VALUES(1,'U','user','user@sample.domain','user'); ??
  12. ??
  13. INSERT?INTO?JBPM_ID_USER?VALUES(2,'U','manager','manager@sample.domain','manager'); ??
  14. ??
  15. INSERT?INTO?JBPM_ID_USER?VALUES(3,'U','admin','admin@sample.domain','admin'); ??
  16. ??
  17. INSERT?INTO?JBPM_ID_USER?VALUES(4,'U','shipper','shipper@sample.domain','shipper'); ??
  18. ??
  19. INSERT?INTO?JBPM_ID_MEMBERSHIP?VALUES(1,'M',NULL,NULL,2,4); ??
  20. ??
  21. INSERT?INTO?JBPM_ID_MEMBERSHIP?VALUES(2,'M',NULL,NULL,3,4); ??
  22. ??
  23. INSERT?INTO?JBPM_ID_MEMBERSHIP?VALUES(3,'M',NULL,NULL,4,4); ??
  24. ??
  25. INSERT?INTO?JBPM_ID_MEMBERSHIP?VALUES(4,'M',NULL,NULL,4,3); ??
  26. ??
  27. INSERT?INTO?JBPM_ID_MEMBERSHIP?VALUES(5,'M',NULL,NULL,1,3); ??
  28. ??
  29. INSERT?INTO?JBPM_ID_MEMBERSHIP?VALUES(6,'M',NULL,NULL,2,3); ??
  30. ??
  31. INSERT?INTO?JBPM_ID_MEMBERSHIP?VALUES(7,'M',NULL,NULL,3,3); ??
  32. ??
  33. INSERT?INTO?JBPM_ID_MEMBERSHIP?VALUES(8,'M',NULL,NULL,3,2); ??
  34. ??
  35. INSERT?INTO?JBPM_ID_MEMBERSHIP?VALUES(9,'M',NULL,NULL,2,2); ??
  36. ??
  37. INSERT?INTO?JBPM_ID_MEMBERSHIP?VALUES(10,'M',NULL,NULL,2,5); ??
  38. ??
  39. INSERT?INTO?JBPM_ID_MEMBERSHIP?VALUES(11,'M',NULL,'boss',2,1); ??
  40. ??
  41. INSERT?INTO?JBPM_ID_MEMBERSHIP?VALUES(12,'M',NULL,NULL,1,1);??
    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://localhost:8080/jbpm 能正常訪問說明部署成功,你可以用頁面上列出的用戶和賬號登陸進去體驗一下。

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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 四虎b3t77com| 久草久操 | 欧产日产国产精品专区 | 久久久精品2021免费观看 | 青青热在线观看视频精品 | 国产精品日韩在线观看 | 国产在线不卡一区 | 天天看天天射天天碰 | 好吊色妞 | 99精品福利 | 日本三级做a全过程在线观看 | 久久天天躁狠狠躁夜夜躁 | 亚洲欧美日韩中文字幕在线一区 | 久一在线视频 | 精品久久洲久久久久护士 | 一级a毛片免费 | 色啦啦在线观看 | 日韩欧美亚州 | 亚洲欧美综合图区官网 | 亚洲国产综合专区在线播一一 | 香蕉青草久久成人网 | 97视频在线观看视频在线精品 | 99热久久国产精品这里小说 | 亚洲性夜夜时 | 亚洲精品国产福利 | 中文字幕亚洲综合久久2 | 精品精品国产理论在线观看 | 久久中文字幕不卡一二区 | 亚洲欧美一区在线 | 91久久精品午夜一区二区 | 曹逼视频| 久久一本精品 | 久久久久99 | 色偷偷女人的天堂a在线 | 青青青精品免费视频 | 日韩一级欧美一级毛片在线 | 狠狠色噜噜狠狠狠狠奇米777 | 久久久噜噜噜久久 | 亚洲香蕉久久一区二区三区四区 | 5252色欧美在线男人的天堂 | 男人资源在线 |