JBPM4.0開發步驟

來源:互聯網
上載者:User

jBPM4開發入門指南

------------------------------------------------------------------------------------------
1.1、安裝JDK
------------------------------------------------------------------------------------------
1.2、安裝Ant
Ant 是使用 jBPM 必須的一個工具。 jBPM 中的很多操作都要用到 Ant 。

安裝方法:

( 1 )先下載: 為了執行ant指令碼,你需要1.7.0或更高版本的apache ant:

http://ant.apache.org/bindownload.cgi

( 2 )解壓到 D:/ant (當然其他目錄也可以)。

( 3 )設定如下系統變數: ANT_HOME=d:/ant 。

( 4 )把 %ANT_HOME%/bin 加入到系統變數 PATH 中。

安裝 jBPM
jBPM 的:http://sourceforge.net/projects/jbpm/files/

------------------------------------------------------------------------------------------
2 、建庫

MySQL 中建立一個庫,庫名: jbpmdb

3 、產生建表的 SQL 陳述式並建表

這個構建檔案${jbpm.home}/db/build.xml包含了指令碼 用來建立和刪除資料庫結構的操作。
進入到這個目錄下,運行ant -p 可以獲得更多細節。

在你的資料庫中建立表結構:

首先,更新${jbpm.home}/db/jdbc中的資料庫設定檔。

然後,在D:/jbpm-4.0/db/build.xml
<!-- DEFAULT PROPERTY VALUES -->
<property name="database" value="mysql" />
更改為
mysql

然後在db目錄下執行ant create.jbpm.schema

可以看到 MySQL 用戶端中執行“ mysql.create.sql ”指令碼,這樣

將在 jbpmdb 庫中建立一個個的資料表。
------------------------------------------------------------------------------------------

4

安裝 jBPM 4的 Eclipse 開發外掛程式

jBPM 4的 Eclipse 開發外掛程式 只有GPD

流程設計器(GPD)
圖形化流程設計器(GPD)使用Eclipse作為其平台, 並把GPD外掛程式安裝到eclipse上。

使用Eclipse軟體升級(Software Update)機制安裝設計器是非常簡單的。
在gpd目錄下有一個gpd/jbpm-gpd-site.zip檔案, 這就是更新網站(archived update site)的 壓縮包。

在Eclipse裡添加更新網站的方法:

協助 --> 安裝新軟體...
點擊 添加...
在 添加網站 對話方塊中,單擊 壓縮包...
找到 gpd/jbpm-gpd-site.zip 並點擊 '開啟'
點擊 確定 在 添加網站 對話方塊中,會返回到 '安裝'對話方塊
選擇出現的 jPDL 4 GPD 更新網站
點擊 下一步.. 然後點擊 完成
接受協議
當它詢問的時候重啟eclipse

5

配置jBPM運行時
點擊 Window --> Preferences
選擇 JBoss jBPM --> jBPM 4 --> Runtime Locations
點擊 Add...
在 Add Location 對話方塊中,輸入一個名字,比如 jbpm-4.0 然後點擊 Search...
在 Browse For Folder 對話方塊中,選擇你的jbpm根目錄,然後點擊 OK
點擊 OK 在 Add Location 對話方塊中

6

定義jBPM使用者庫
如何在你的工作空間定義一個使用者庫, 用來放置jBPM的庫檔案。 如果你建立一個新工程, 只需要將使用者庫全部添加到build path下

點擊視窗 --> 屬性(Windows --> Preferences)
選擇Java --> 建立路徑 --> 使用者類庫(Java --> Build Path --> User Libraries)
點擊建立(New)
類型名字jBPM Libraries
點擊添加JARs(Add JARs...)
找到jBPM安裝程式下的lib目錄
選擇lib下的所有jar檔案並點擊開啟(Open)
選擇jBPM Libraries作為入口
重新點擊添加JARs(Add JARs)
在jBPM的安裝程式的根目錄下選擇jbpm.jar檔案
點擊開啟(Open)
在jbpm.jar下選擇源碼附件(Source attachment)作為入口
點擊編輯(Edit)
在源碼附件的配置(Source Attachment Configuration)對話方塊中,點擊目錄(External Folder...)
找到jBPM安裝程式下的src目錄
點擊選擇(Choose)
點擊兩次'確定'(Ok)會關閉所有對話方塊

 

7  jBPM 的 demo

建立jBPM項目
主菜單“檔案->建立->項目”,在彈出的對話方塊裡,有“ java Project ”項

選上好,單擊“下一步”,起個名“ myjbpm ”,然後就可以單擊“完成”了。然後手動

建立src/test/config

copy

D:/jbpm-4.0/examples/src

2009-07-07 15:40               546 jbpm.cfg.xml
2009-07-07 15:40             1,085 jbpm.hibernate.cfg.xml
2009-07-07 15:40                72 jbpm.mail.properties
2009-07-07 15:40               418 jbpm.mail.templates.examples.xml
2009-07-07 15:40               637 logging.properties

config下
8 修改jbpm.hibernate.cfg.xml
       hibernate.cfg.xml 的預設設定是用 HSQL ,這是一個記憶體資料庫,這種記憶體資料庫用來代替項

目實際所用的資料庫來做單元測試挺不錯的。不過我們這裡是要試試用 MySQL 、 Oracle ,那就改一下

設定吧。

註:配置值可參考 D:/jbpm-4.0/db/hibernate.cfg對應子目錄下的 hibernate.properties 文

件。

8.1 、 MySQL 的更改如下:

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</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">root</property>

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

8.2 、 Oracle 的更改如下:

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

<property

name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

<property

name="hibernate.connection.url">jdbc:oracle:thin:@192.168.123.10:1521:wxxrDB</property>

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

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

如果你裝了 Oracle 的用戶端,並且 D:/oracle/ora92/network/ADMIN/tnsnames.ora 裡做了如下的設

WXXRDB_192.168.123.10 =

(DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.123.10)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SID = wxxrDB)

      (SERVER = DEDICATED)

    )

)

則 Oracle 的 hibernate.connection.url 項也可以設為: jdbc:oracle:oci:@WXXRDB_192.168.123.10

 

9 開始demo

10定義流程

流程的定義檔案是 pd.jpdl.xml ,這個是一個關鍵檔案, jBPM 4的很大一部份內容都是關於

它的。
------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>

<process name="pd" xmlns="http://jbpm.org/4.0/jpdl
">
   <start name="start1" g="207,62,48,48">
      <transition name="to state1" to="state1" g="-59,-17"/>
   </start>
   <end name="end1" g="208,293,48,48"/>
   <state name="state1" g="185,155,92,52">
      <transition name="to end1" to="end1" g="-47,-17"/>
   </state>
</process>
------------------------------------------------------------------------------------------

說明:

 

------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------

OK ,背景程式就算寫完了(前台用戶端的程式還沒寫),下面開始部署。

11部署pd.jpdl.xml
       我們要把pd.jpdl.xml 的流程定義的資料部署到資料庫中,因為 jBPM 在正式運行

的時候不是去讀 pd.jpdl.xml 檔案,而是去讀資料庫中的流程定義。 這裡寫了一個

JUnit 程式來部署 processdefinition.xml ,當然你用普通的 Java Main 也可以。

參考
D:/jbpm4/src/org/jbpm/examples/services/ServicesTest.java
------------------------------------------------------------------------------------------
在本方法執行完畢後,檢查jbpm4_deployment表會多了一條記錄
jbpm4_deployprop表會多了三條記錄,對應id,key,version
jbpm4_lob 表會多了一條記錄,儲存流程圖

package deploy;

import junit.framework.TestCase;

import org.jbpm.api.Configuration;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.HistoryService;
import org.jbpm.api.ManagementService;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.RepositoryService;
import org.jbpm.api.TaskService;

public class ServicesTest extends TestCase {

public void testObtainServicesAndDeployProcess() {

    Configuration configuration = new Configuration();

    ProcessEngine processEngine = configuration.buildProcessEngine();

  
    RepositoryService repositoryService = processEngine.getRepositoryService();
    ExecutionService executionService = processEngine.getExecutionService();
    TaskService taskService = processEngine.getTaskService();
    HistoryService historyService = processEngine.getHistoryService();
    ManagementService managementService = processEngine.getManagementService();
   
    // 開始部署一個新的流程檔案
    String deploymentId = repositoryService.createDeployment()

       // .addResourceFromClasspath("org/jbpm/examples/services/Order.jpdl.xml")
    .addResourceFromClasspath("pd.jpdl.xml")
        .deploy();

   // repositoryService.deleteDeployment(deploymentId);
}
}

------------------------------------------------------------------------------------------
運行此程式,在控制台列印了一些日誌,通過。如果出錯,仔佃閱讀出錯資訊以判斷錯誤原因

12 從資料庫中的查看部署效果
無論是 MySQL 還是 Oracle ,查詢 jbpm4_deployment表,你會發現多了一條記錄
jbpm4_deployprop表會多了三條記錄,對應id,key,version
jbpm4_lob 表會多了一條記錄,儲存流程圖

Service就是PVM對外發布的服務,包括RepositoryService(比如部署jpdl檔案),
ExecutionService(負責管理執行),TaskService,ManagementService等等.可以說這是給使用者調用的API.比如我們看下他們的一些方法.
RepositoryService介面的一些方法:

public interface RepositoryService {
NewDeployment createDeployment();
ProcessDefinitionQuery createProcessDefinitionQuery();
...
}

ExecutionService的一些方法:

public interface ExecutionService {
ProcessInstance startProcessInstanceById(String processDefinitionId);
ProcessInstance signalExecutionById(String executionId);
...
}

ManagementService的介面:

public interface ManagementService {
void executeJob(long jobDbid);
JobQuery createJobQuery();
}

 

------------------------------------------------------------------------------------------
13  jBPM4 的用戶端開發
有了前面的 後台流程,我們就要開始用戶端程式了。正如前面提到的,本文不寫 JSP ,而

改採用 JUnit 的形式,輸出則用 System.out.println 。舉一反三,知道在方法中輸入及用 println

輸出,在 JSP 和 SWING 等 GUI 介面還不是一樣嘛。

這個 JUnit 用戶端,我們就借用建立項目時自動產生的 SimpleProcessTest.java 了,改寫後如下:
------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------
這個例子還是很簡單

不過沒關係。下面的

內容我將完成一個更完整的執行個體。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.