相關資料:
系統平臺:
系統環境:
Windows 2003 | SUN JDK1.6U4 | Tomcat6.0.14 | jbpm-starters-kit-3.1.4 | MySQL 6.0
主機完整名稱:
zsy-aten
瀏覽器
Internet Explorer 6.0
安裝包及相關軟件:
1、 安裝JDK與MySQL
JDK的安裝這里就不多說了,學過Java的人都知道,本實驗安裝的是jdk-6u4版本。安裝完后記得添加JAVA_HOME的環境變量。
MySQL的安裝不屬于本文的介紹范圍,請參閱相關文檔。本實驗安裝的是MySQL 6.0版本,安裝完后建立的數據庫名為jbpm,創建的用戶名為jbpmuser,密碼為shine。
2、 安裝Tomcat下載安裝Tomcat-6.0.16是目前最新版本:http://apache.mirror.phpchina.com/tomcat/tomcat-6/v6.0.16/bin/apache-tomcat-6.0.16.exe ;要在JDK安裝之后安裝Tomcat,安裝過程中會自動搜索JRE的目錄,當然也可以選擇其它的JRE,其它默認設置即可。
3、 安裝AntAnt 是一個編譯工具,使用 jBPM 時必須用它來編譯文件, jBPM 中的很多操作都要用到 Ant ,安裝方法如下:
(1) 先下載:http://apache.mirror.phpchina.com/ant/binaries/apache-ant-1.7.0-bin.zip;
(2) 解壓到 E:\Java\tools\apache-ant-1.7.0 (當然其他目錄也可以);
(3) 設置環境變量:ANT_HOME= E:\Java\tools\apache-ant-1.7.0;
(4)把 %ANT_HOME%\bin 加入到環境變量 PATH 中。
4、 安裝jBPM下載jBPM-JPDL本為3.2.2:http://labs.jboss.com/jbossjbpm/jbpm_downloads/下載jPDL Suite版,這個版本是包含所有的一整套工具,下載后是個壓縮包解壓到 E:\Java\tools :、\jbpm-jpdl-3.2.2 ,目錄下主要包含以下幾個子目錄:
l src —— jBPM 的源代碼
l config —— jBPM及Hibernate與log4j的配置文件
l db —— 各種數據庫的建表SQL語句
l lib —— 依賴的第三方依賴類庫
l doc —— API文檔及用戶使用向導
l designer —— 輔助開發 jBPM 的 Eclipse 插件,具體在 eclipse子目錄中
l server —— 一個已經配置好了的基于 JBoss 的 jBPM 控制臺及示例
5、 安裝Eclipse及jBPM開發插件Eclipse不是開發 jBPM 必須的工具,但它是對 jBPM 開發很有幫助的工具,特別是 jBPM 提供了一個 Eclipse 插件用來輔助開發 jBPM 。關于 Eclipse 的安裝請參閱相關文檔。本實驗安裝的是MyEclipse6.0集成Eclipse3.3。
安裝完Eclipse安裝jBPM的開發插件,步驟如下:
(1) 打開Eclipse選擇菜單“Help->Software Updates->Find and Install”;
(2) 彈出窗口中選擇“Search for new features to install”,然后點擊“Next >”;如圖
(3) 點擊按扭“New Local Site…”選擇插件目錄,位于designer\ eclipse目錄下,如:E:\Java\tools\jbpm-jpdl-3.2.2\designer\eclipse。選定后點“OK”,如圖
(4) 選中“designer/eclipse”,然后點擊“Finish”,如圖
(5) 然后選擇同意條款,接提示步驟安裝就可以了。
到此為止需要的所有工具都安裝好了。接下來先體驗一下jBPM工作流。在 JBoss jBPM Starters Kit 的 jbpm-server 目錄是一個已經在JBoss中配置好的了 jBPM 示例,雙擊 jbpm-server 目錄下的 start.bat 文件,啟動 JBoss 服務。打開網頁: http://localhost:8080/ jbpm-console 得到如下頁面:
這是一個流程控制管理平臺,用右邊的賬號與密碼就可以登錄,這個控制臺包括流程管理,可以部署流程、刪除流程、查看流程圖、管理流程實例等;還有任務管理,工作管理及用戶與用戶組管理。
基于Tomcat和MySQL的部署:
現在要把上面演示的例子部署到Tomcat中,并將數據數配置為MySQL。
STEP 1,初始化數據庫jBPM 需要數據庫支持, jBPM 會把自己的一個初始化數據存儲到數據庫,同時工作流的數據也是存儲到數據庫中的。 jBPM 使用 Hibernate 作為的存儲層。在E:\Java\tools\jbpm-jpdl-3.2.2\db\目錄下有個jbpm.jpdl.mysql.sql數據庫腳本文件。我們不能直接導入該文件, 會提示有錯誤, 應為該文件格式有問題, 首先打開該文件(推薦UltraEdit), 把前面的 alter table JBPM_XX 語句都刪除(因為我們使用的是新的數據庫,所以需要這些語句, 這個腳本文件是升級3.2的數據庫表結構用的) 然后在每一行前面添加一個分號 不然腳本執行會出錯。這樣就可以用source命令導入了。 導入后, 表結構創建成功。
STEP 2,準備發布包在E:\Java\tools\jbpm-jpdl-3.2.2\deploy 文件夾下 運行ant customize.console.for.tomcat。執行命令后會在 E:\Java\tools\jbpm-jpdl-3.2.2\deploy\customized文件夾下生成一個jbpm-console.war 文件,用WinRaR解壓開,并復制到已安裝Tomcat的webapps目錄下,jbpm還需三個依賴類庫,分別是commons-collections.jar、ehcache-1.2.3.jar、jta.jar,當然還有個MySQL驅動mysql-connector-java-5.0.7-bin.jar,添加這些jar文件 到 \$CATALINA_HOME\webapps\jbpm-console\WEB-INF\lib目錄下。
STEP 3,修改Hibernate數據庫配置文件修改\$CATALINA_HOME\webapps\jbpm-console\WEB-INF\classes下hibernate.cfg.xml文件。這是Hibernate的數據庫配置文件,要做一些修改,原來內容如下:
<!-- hibernate dialect --> <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property> <!-- JDBC connection properties (begin) === <property name="hibernate.connection.driver_class"> org.hsqldb.jdbcDriver</property> <property name="hibernate.connection.url">jdbc:hsqldb:mem:jbpm</property> <property name="hibernate.connection.username">sa</property> <property name="hibernate.connection.password"></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) --> |
修改后如下:
<!-- hibernate dialect --> <property name="hibernate.dialect"> org.hibernate.dialect.MySQLInnoDBDialect</property> <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">jbpmuser</property> <property name="hibernate.connection.password">shine</property> <property name="hibernate.cache.provider_class"> org.hibernate.cache.HashtableCacheProvider</property> |
有兩種方法都可以實現,但摧薦第一種方法。
方法一:配置一個JDBC Realm,在\$CATALINA_HOME\webapps\jbpm-console\META-INF目錄下新建context.xml文件,內容如下:
<?xml version="1.0" encoding="UTF-8"?> <Context> <Realm className="org.apache.catalina.realm.JDBCRealm" driverName="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/jbpm" connectionName="jbpmuser" connectionPassword="shine" 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 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> |
STEP 5,初始化基礎的用戶數據
在MySQL數據庫中執行以下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); |
啟動時查看Tomcat的日志,檢查是否正常啟動,未添加所有支持庫或數據庫配置出錯,都會引起啟動失敗。
注意:到此為止啟動Tomcat,JBPM服務就能正常運行了,已經可以在上面發布流程,接著第五步中部署一個jbpm自帶的流程例子。
STEP 7,發布例子流程
打開網頁:http://localhost:8080/jbpm 得到如下頁面就說明已經部署成功:
用右邊的manage賬號登錄,如下圖:
點擊“Deploy”轉到部署流程頁面,點擊“瀏覽”按扭選擇E:\Java\tools\jbpm-jpdl-3.2.2\examples\websale\target\websale.jpdl文件,名后點擊“Deploy”按扭部署。