摘要:
JBoss jBPM (JAVA Business Process Management) 為開源工作流程引擎, 具有非常高的彈性及可擴展性, 可使用圖形介面事先定義工作流程序述, 提供非同步, 排程, 自動觸發動作等功能
JBoss jBPM (JAVA Business Process Management) 為開源工作流程引擎,
具有非常高的彈性及可擴展性, 可使用圖形介面事先定義工作流程序述,
提供非同步, 排程, 自動觸發動作等功能,
JBoss jBPM 可以與任何的資料庫集成, 並能嵌入於任何的JAVA企業應用系統.
開始備忘記:
[1] 安裝 jdk 5
[2] 安裝 JBoss jBPM server
[3] 安裝 Eclipse WTP
[4] 安裝 JBoss IDE
[5] 建立第一個 jBPM project
[1] 安裝 jdk 5:
下載 jdk-1_5_0_07-nb-5_0-win-ml.exe
http://java.sun.com/j2se/1.5.0/download-netbeans.html
安裝至 D:\jdk1.5.0_07
新增環境變數 JAVA_HOME=D:\jdk1.5.0_07
D:\jdk1.5.0_07\bin 加入至 PATH 中
D:\jdk1.5.0_07\lib\dt.jar 及 D:\jdk1.5.0_07\lib\tools.jar 加入至 CLASSPATH 中
執行 D:\>java -version
輸出 java version "1.5.0_07" 即安裝成功.
[2] 安裝 JBoss jBPM server:
下載 jbpm-starters-kit-3.1.2.zip
http://www.jboss.com/products/jbpm/downloads
http://superb-west.dl.sourceforge.net/sourceforge/jbpm/jbpm-starters-kit-3.1.2.zip
解壓縮至 D:\jboss_jbpm
D:\jboss_jbpm\readme.html 介紹每個目錄的功能.
這裡只需要關心 D:\jboss_jbpm\jbpm-server 目錄, 這是 JBoss jBPM server
執行 D:\jboss_jbpm\jbpm-server\start.bat 啟動 JBoss jBPM server
JBoss jBPM server 已提供了一個 JSF 的 web sale order 的例子.
進入 http://localhost:8080/jbpm/
隨便選一個 user 登入, 就可以測試預設的 web sale order workflow.
如下圖所示
官方的介面使用教學:
http://wiki.jboss.org/wiki/Wiki.jsp?page=JbpmGettingStarted
[3] 安裝 Eclipse WTP:
下載 wtp-all-in-one-sdk-R-1.5.0-200606281455-win32.zip
http://www.eclipse.org/webtools/
http://www.eclipse.org/downloads/download.php?file=/webtools/downloads/drops/R-1.5.0-200606281455/wtp-all-in-one-sdk-R-1.5.0-200606281455-win32.zip
解壓至 D:\eclipse_wtp
[4] 安裝 JBoss IDE:
Eclipse:Help -> Software Updates -> Find and Install -> Search for new features to install
按 New Remote Site
Name: JBOSS IDE
URL: http://download.jboss.org/jbosside/updates/stable
選擇最新的版本然後安裝.
[5] 建立第一個 jBPM project:
Eclipse: File -> New -> Other -> JBoss jBPM -> Process Project
Project Name: First_jBPM -> Next -> Finish
預設會產生一整套測試檔案, 這備忘記就是對這些檔案作簡介.
如果想更深入了解 jBPM , 查看官方的文檔是最好的方法.
檔案結構如下所示
右鍵點選 gpd.xml -> Open With -> Text Editor , 就會出現如下所示代碼
<!---------------------- gpd.xml --------------------->
<?xml version="1.0" encoding="UTF-8"?>
<process-diagram name="simple" width="469" height="438">
<node name="start" x="150" y="25" width="140" height="40">
<transition name="to_state"/>
</node>
<node name="first" x="150" y="125" width="140" height="40">
<transition name="to_end"/>
</node>
<node name="end" x="150" y="225" width="140" height="40"/>
</process-diagram>
<!---------------------- gpd.xml --------------------->
這是 graphical process designer 的描述檔案.
這裡只是簡單描述三個 nodes 的位置: start , first, end
右鍵點選 processdefinition.xml -> Open With -> Text Editor , 就會出現如下所示代碼
<!---------------------- processdefinition.xml --------------------->
<?xml version="1.0" encoding="UTF-8"?>
<process-definition
xmlns="urn:jbpm.org:jpdl-3.1"
name="simple">
<start-state name="start">
<task>
<controller>
<variable name="color" />
<variable name="size" />
</controller>
</task>
<transition name="to_state" to="first">
<action name="action" class="com.sample.action.MessageActionHandler">
<message>Going to the first state!</message>
</action>
</transition>
</start-state>
<state name="first">
<transition name="to_end" to="end">
<action name="action" class="com.sample.action.MessageActionHandler">
<message>About to finish!</message>
</action>
</transition>
</state>
<end-state name="end"></end-state>
</process-definition>
<!---------------------- processdefinition.xml --------------------->
workflow engine 將根據此流程檔運作.
<start-state name="start"> 流程初始點.
<transition name="to_state" to="first">
<action name="action" class="com.sample.action.MessageActionHandler">
<message>Going to the first state!</message>
</action>
</transition>
這裡描述初始點將過渡至 first 點.
而過渡至 first 點時會觸發 com.sample.action.MessageActionHandler [後面會介紹]
並設定此 ActionHandler 的 message 為 "Going to the first state!"
<state name="first">
<transition name="to_end" to="end">
<action name="action" class="com.sample.action.MessageActionHandler">
<message>About to finish!</message>
</action>
</transition>
</state>
這裡描述 first 點. 通過此點將過渡至 end 點.
而過渡至 end 點時會觸發 com.sample.action.MessageActionHandler [後面會介紹]
並設定此 ActionHandler 的 message 為 "About to finish!"
<end-state name="end"> 流程結速點.
右鍵點選 processdefinition.xml -> Open With -> jBPM Graphical Process Designer
然後點 Diagram , 就會出現如下圖所示
可以使用 GPD (Graphical Process Designer) 來繪製 workflow
為了簡化備忘記, 參考以下官方教學文檔
http://docs.jboss.com/jbpm/v3/gpd
package com.sample.action;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
public class MessageActionHandler implements ActionHandler {
// 這是 Listener, 觸發這個 Action 將執行 execute method
private static final long serialVersionUID = 1L;
String message;
public void execute(ExecutionContext context) throws Exception {
context. getContextInstance_r().setVariable("message", message);
// 這裡將上面觸發的 message 加入到該點的 message property
}
}
package com.sample;
import java.io.FileInputStream;
import junit.framework.TestCase;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
public class SimpleProcessTest extends TestCase {
public void testSimpleProcess() throws Exception {
FileInputStream fis = new FileInputStream("processes/simple/processdefinition.xml");
ProcessDefinition processDefinition = ProcessDefinition.parseXmlInputStream(fis);
// 讀取 processdefinition.xml 的流程定義檔
assertNotNull("Definition should not be null", processDefinition);
// 測試這個檔案並不為 null
ProcessInstance instance = new ProcessInstance(processDefinition);
// 建立處理流程檔實例
assertEquals(
"Instance is in start state",
instance. getRootToken_r(). getNode_r(). getName_r(),
"start");
// 測試現在正處於 start 點
assertNull(
"Message variable should not exist yet",
instance. getContextInstance_r(). getVariable_r("message"));
// 測試 start 點的 message 為 null
instance.signal();
// 呼叫 signal() 表示此點處理完成, 將跳至下一點
// 由於上面設定了 ActionHandler, 將會設定 message 為 "Going to the first state!"
assertEquals(
"Instance is in first state",
instance. getRootToken_r(). getNode_r(). getName_r(),
"first");
// 測試現在正處於 first 點
assertEquals(
"Message variable contains message",
instance. getContextInstance_r(). getVariable_r("message"),
"Going to the first state!");
// 由於已經觸發 MessageActionHandler,
// 測試此點 message property 為 "Going to the first state!"
instance.signal();
// 呼叫 signal() 表示此點處理完成, 將跳至下一點
// 由於上面設定了 ActionHandler, 將會設定 message 為 "About to finish!"
assertEquals(
"Instance is in end state",
instance. getRootToken_r(). getNode_r(). getName_r(),
"end");
// 測試現在正處於 end 點
assertTrue("Instance has ended", instance.hasEnded());
// 測試現在是最後終點
assertEquals(
"Message variable is changed",
instance. getContextInstance_r(). getVariable_r("message"),
"About to finish!");
// 由於已經觸發 MessageActionHandler,
// 測試此點 message property 為 "About to finish!"
}
}
/*------------------
分享到:
相关推荐
- **工作流引擎(Workflow Engine)**:负责解析流程定义,管理和执行流程实例。 在开发过程中,开发者还需要掌握如何使用jbpm提供的API和工具进行流程的启动、监控、干预和结束。例如,使用工作流服务接口...
JBPM(JBoss Business Process Management)是一个开源的工作流管理系统,由Red Hat公司维护,主要用于实现业务流程的自动化和管理。它提供了一种直观的流程语言,允许用户通过任务、异步等待状态、定时器和自动化...
JBPM,全称JBOSS Business Process Management,是一个基于Java的开源工作流管理系统。它提供了一种灵活且可扩展的方式来设计、执行和管理业务流程。JBPM利用直观的流程语言,如任务、异步等待状态、定时器、自动化...
此外,JBPM可以在各种数据库和应用服务器上运行,但并不遵循WFMC(Workflow Management Consortium)的工作流规范。 **主要概念解析** 1. **工作流引擎(Engine)**: 核心组件,负责创建流程实例,监控并管理流程...
jbpm4.3是JBoss Business Process Management (BPM) Suite的一个版本,它是一个开源的企业级BPM平台,用于设计、执行和管理业务流程。在这个"jbpm4.3 请假流程实例示例"中,我们将深入探讨如何利用jbpm4.3构建一个...
1. **工作流引擎(Workflow Engine)**:jbpm4.3的工作流引擎是其核心部分,负责执行流程定义(流程模型)。它解析流程定义文件(一般为BPMN或JPDL格式),并根据这些定义来控制流程的执行。 2. **流程定义...
【JBPM案例详解(八)】是针对企业流程管理(Business Process Management,简称BPM)领域中的JBPM框架进行深入探讨的一篇文章。JBPM是一款开源的工作流管理系统,它提供了完整的企业级工作流解决方案,包括流程定义、...
Activiti是一款基于Java的轻量级工作流和业务流程管理平台(Workflow and Business Process Management,WfMS),由Tom Baeyens创建,并开源于JBoss jBPM项目。后来,Tom Baeyens加入了Alfresco公司,并在此基础上...
- 常见的Java工作流引擎有Activiti、JBoss jBPM、Camunda等,它们提供了丰富的API和图形化建模工具,便于开发和维护。 4. **工作流模型设计** - BPMN(Business Process Model and Notation)是常用的工作流建模...
JBPM是JBOSS家族的一员,是一款基于UML活动图的工作流引擎。JBPM支持图形化的设计工具,使得设计复杂的业务流程变得更加直观和简单。它不仅支持本地事务管理,还能够与JBOSS等应用服务器集成,实现分布式事务管理。...