日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jBPM开发入门指南(4)

發布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jBPM开发入门指南(4) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

7? ?jBPM?的客戶端開發

有了前面的?HelloWorld?后臺流程,我們就要開始客戶端程序了。正如前面提到的,本文不寫?JSP?,而改采用?JUnit?的形式,輸出則用?System.out.println?。舉一反三,知道在方法中輸入及用?println?輸出,在?JSP??SWING??GUI?界面還不是一樣嘛。

?

這個?JUnit?客戶端,我們就借用創建項目時自動生成的?SimpleProcessTest.java?了,改寫后如下:

package?com.sample;

?

import?junit.framework.TestCase;

?

import?org.jbpm.JbpmConfiguration;

import?org.jbpm.JbpmContext;

import?org.jbpm.context.exe.ContextInstance;

import?org.jbpm.graph.def.ProcessDefinition;

import?org.jbpm.graph.exe.ProcessInstance;

?

public?class?SimpleProcessTest?extends?TestCase {

?

????private?JbpmConfiguration?config?= JbpmConfiguration.getInstance();

????private?JbpmContext?ctx?=?config.createJbpmContext();

????// helloworld?對應于?jbpm_processdefinition?表的?name?字段值,也即?processdefinition.xml??name

????//?這個值得取比較耗時,實際項目里最好和“數據庫的?JDBC?連接”一樣,讓它共享,不要頻繁打開關閉。

????private?ProcessDefinition?processDefinition?=?ctx.getGraphSession().findLatestProcessDefinition("helloworld");

?

????public?void?testNewRequest() {

????????long?id = newRequest();

????????System.out.println("id="?+ id);

????????checkNewRequest(id);

????????confirmRequest(id);

????????checkconfirmRequest(id);

????????ctx.close();//?關閉?jbpm?容器

????}

?

????/**

??????*?創建一個請假單

??????*

??????*?@return

??????*/

????private?long?newRequest() {

????????//?創建一個新流程

????????ProcessInstance pi =?processDefinition.createProcessInstance();

????????//?取得流程的數據環境

????????ContextInstance ci = pi.getContextInstance();

????????//?創建一張請假單

????????ci.setVariable("name",?"?陳剛?www.chengang.com.cn"?);

????????ci.setVariable("day", 2);

????????assertEquals(null, ci.getVariable("note"));

????????//?請假申請結束,轉到下一個流程結點

????????pi.signal();

????????return?pi.getId();

????}

?

????/**

??????*?檢查請假單的數據

??????*

??????*?@param?id

??????*/

????private?void?checkNewRequest(long?id) {

????????//?從數據庫提取原流程

????????ProcessInstance pi =?ctx.loadProcessInstance(id);

????????//?取得流程的數據環境

????????ContextInstance ci = pi.getContextInstance();

????????//?創建一張請假單

????????assertEquals("?陳剛?www.chengang.com.cn"?, ci.getVariable("name"));

????????assertEquals(Integer.valueOf(2), ci.getVariable("day"));

????????assertEquals("?我要請假?"?, ci.getVariable("note"));

?

????????//?當前是結點為?confirm

????????assertEquals(pi.getRootToken().getNode().getName(),?"confirm");

????????//?流程還沒結束

????????assertFalse(pi.hasEnded());

????}

?

????/**

??????*?審批陳剛的請假申請

??????*

??????*?@param?id

??????*/

????private?void?confirmRequest(long?id) {

????????ProcessInstance pi =?ctx.loadProcessInstance(id);

????????ContextInstance ci = pi.getContextInstance();

????????//?不通過

????????ci.setVariable("note",?"?不準請假,繼續加班?"?);

????????//?審批結束,到下一個流程結點

????????pi.signal();

????}

?

????private?void?checkConfirmRequest(long?id) {

????????ProcessInstance pi =?ctx.loadProcessInstance(id);

????????ContextInstance ci = pi.getContextInstance();

????????// ConfirmAction?類在?signal?后執行,所以覆蓋了經理的審批意見

????????assertEquals("?準假?"?, ci.getVariable("note"));

?

????????//?當前是結點為?end

????????assertEquals(pi.getRootToken().getNode().getName(),?"end");

????????//?流程結束了

????????assertTrue(pi.hasEnded());

????}

?

}

總結

以上是生活随笔為你收集整理的jBPM开发入门指南(4)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。