<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小菜毛毛技術分享

    與大家共同成長

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks

    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());

        }

     

    }

     

    這個例子還是很簡單,而且關鍵是缺少用戶、組、權限等工作流系統必須的東西,不過沒關系。下面的內容我將完成一個更完整的實例

    http://97wen.com/

    http://77.haowyt.com/

    posted on 2009-05-05 15:14 小菜毛毛 閱讀(499) 評論(0)  編輯  收藏 所屬分類: JBPM
    主站蜘蛛池模板: 久久精品国产亚洲沈樵| 亚洲熟妇av午夜无码不卡| 亚洲性线免费观看视频成熟| 亚洲熟妇无码AV| 亚洲无码日韩精品第一页| 91禁漫免费进入| 自拍偷自拍亚洲精品播放| 亚洲国产精品乱码一区二区 | 色欲A∨无码蜜臀AV免费播| 亚洲国产乱码最新视频| 久久青青草原亚洲av无码| 巨波霸乳在线永久免费视频| 无码一区二区三区亚洲人妻| 亚洲A∨无码一区二区三区| 大学生a级毛片免费观看| 最近更新免费中文字幕大全 | 久久免费视频网站| 无码一区二区三区亚洲人妻| 亚洲激情视频在线观看| 日韩亚洲精品福利| 在线a级毛片免费视频| 精品国产免费一区二区三区香蕉| 亚洲午夜精品一区二区麻豆| 久久亚洲一区二区| 亚洲精品99久久久久中文字幕| 国产成人免费高清激情明星 | 亚洲av无码天堂一区二区三区| 中文字幕免费在线观看| 好猛好深好爽好硬免费视频| 免费播放一区二区三区| 免费精品视频在线| 国产亚洲精品bv在线观看 | 成人午夜免费视频| 中文字幕亚洲情99在线| 亚洲网红精品大秀在线观看| 在线日韩日本国产亚洲| 免费大学生国产在线观看p| 无码高潮少妇毛多水多水免费| 午夜爽爽爽男女免费观看影院| 岛国岛国免费V片在线观看| 色视频在线观看免费|