欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
jbpm開(kāi)發(fā)指南4

jBPM 的客戶(hù)端開(kāi)發(fā)

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

 

這個(gè) JUnit 客戶(hù)端,我們就借用創(chuàng )建項目時(shí)自動(dòng)生成的 SimpleProcessTest.java 了,改寫(xiě)后如下:

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

    // 這個(gè)值得取比較耗時(shí),實(shí)際項目里最好和“數據庫的 JDBC 連接”一樣,讓它共享,不要頻繁打開(kāi)關(guān)閉。

    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();// 關(guān)閉 jbpm 容器

    }

 

    /**

      * 創(chuàng )建一個(gè)請假單

      *

      * @return

      */

    private long newRequest() {

       // 創(chuàng )建一個(gè)新流程

       ProcessInstance pi = processDefinition.createProcessInstance();

       // 取得流程的數據環(huán)境

       ContextInstance ci = pi.getContextInstance();

       // 創(chuàng )建一張請假單

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

       ci.setVariable("day", 2);

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

       // 請假申請結束,轉到下一個(gè)流程結點(diǎn)

       pi.signal();

       return pi.getId();

    }

 

    /**

      * 檢查請假單的數據

      *

      * @param id

      */

    private void checkNewRequest(long id) {

       // 從數據庫提取原流程

       ProcessInstance pi = ctx.loadProcessInstance(id);

       // 取得流程的數據環(huán)境

       ContextInstance ci = pi.getContextInstance();

       // 創(chuàng )建一張請假單

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

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

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

 

       // 當前是結點(diǎn)為 confirm

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

       // 流程還沒(méi)結束

       assertFalse(pi.hasEnded());

    }

 

    /**

      * 審批陳剛的請假申請

      *

      * @param id

      */

    private void confirmRequest(long id) {

       ProcessInstance pi = ctx.loadProcessInstance(id);

       ContextInstance ci = pi.getContextInstance();

       // 不通過(guò)

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

       // 審批結束,到下一個(gè)流程結點(diǎn)

       pi.signal();

    }

 

    private void checkConfirmRequest(long id) {

       ProcessInstance pi = ctx.loadProcessInstance(id);

       ContextInstance ci = pi.getContextInstance();

       // ConfirmAction 類(lèi)在 signal 后執行,所以覆蓋了經(jīng)理的審批意見(jiàn)

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

 

       // 當前是結點(diǎn)為 end

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

       // 流程結束了

       assertTrue(pi.hasEnded());

    }

 

}

 

這個(gè)例子還是很簡(jiǎn)單,而且關(guān)鍵是缺少用戶(hù)、組、權限等工作流系統必須的東西,不過(guò)沒(méi)關(guān)系。下面的內容我將完成一個(gè)更完整的實(shí)例。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
DecisionExpressionTest(Jbpm)
Android中處理崩潰異常
jbpm4.4 Api 示例
Jbpm流程圖顯示
【整合篇】Activiti業(yè)務(wù)與流程整合之查詢(xún)(二)
JUnit 注解@RunWith的工作原理
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久