本站不再更新,歡迎光臨 java開發技術網
          隨筆-230  評論-230  文章-8  trackbacks-0
          <?xml version="1.0" encoding="UTF-8"?>
          <process-definition xmlns="urn:jbpm.org:jpdl-3.1"  name="example_5">
              
          <start-state name="開始">
                
          <event type="node-leave">
                   
          <action name="action1"></action>
                
          </event>
                
          <transition name="tr1" to="工作中"></transition>
                
          <transition name="tr2" to="求學中"></transition>
              
          </start-state>
              
          <state name="工作中">
                
          <event type="node-enter">
                   
          <action name="工作" class="com.wide.example5.WorkAction"></action>
                
          </event>
                
          <transition name="" to="終成正果"></transition>
             
          </state>
             
          <state name="求學中">
                
          <event type="node-enter">
                   
          <action name="學習" class="com.wide.example5.StudyAction"></action>
                
          </event>
                
          <transition name="" to="終成正果"></transition>
             
          </state>
             
          <end-state name="終成正果">
                
          <event type="node-enter">
                   
          <action name="圓滿" class="com.wide.example5.EndAction"></action>
                
          </event>
             
          </end-state>
             
          </process-definition>

          這是一個比較簡單的jbpm流程模板,通過這幾天的學習(基本上是看別人的事子)發現jbpm原來這么的復雜的,好多東西想記下來,特別是一個同行總結出的例子,非常簡潔的描述了各個小功能點。以下也是一個很簡單的jpdl模板,清楚的描述了note與state的區別。jbpm提供了好幾種不同的節點。
          <?xml version="1.0" encoding="UTF-8"?>
          <process-definition xmlns="urn:jbpm.org:jpdl-3.1"  name="example_7">
             
          <start-state name="start">
                
          <transition name="tr1" to="state"></transition>
                
          <transition name="tr2" to="node"></transition>
             
          </start-state>
             
          <state name="state"> <!-- 只有簽收signal才執行 -->
                
          <transition name="" to="end"></transition>
             
          </state>
             
          <node name="node"> <!-- 直接執行,當流轉到這節點時,就馬上執行transition -->
                
          <transition name="" to="end"></transition>
             
          </node>
             
          <end-state name="end"></end-state>
          </process-definition>
          測試代碼也很簡單,
          package com.jbpm;

          import org.jbpm.JbpmConfiguration;
          import org.jbpm.JbpmContext;
          import org.jbpm.db.GraphSession;
          import org.jbpm.graph.def.ProcessDefinition;
          import org.jbpm.graph.exe.ProcessInstance;
          import org.jbpm.graph.exe.Token;

          import java.io.*;

          public class Execute {
              
          static JbpmConfiguration cfg=JbpmConfiguration.getInstance();
              
          /**
               * 把流程部署到數據庫
               * 
          @param file
               
          */
              
          public void deploy(String file){
                  JbpmContext jc
          =null;
                  
          try{
                      FileInputStream fis 
          = new FileInputStream("src/proc2.xml");
                      ProcessDefinition pd
          =ProcessDefinition.parseXmlInputStream(fis);
                      jc
          =cfg.createJbpmContext();
                      jc.deployProcessDefinition(pd);
                  }
          catch(Exception e){
                      e.printStackTrace();
                  }
          finally{
                      jc.close();
                  }
              }

              
          public static void main(String args[])throws Exception {
                  Execute e
          =new Execute();
                  
          //e.deploy("src/proc2");
                  JbpmContext jc=cfg.createJbpmContext();
                  GraphSession gs
          =jc.getGraphSession();
                  ProcessDefinition pd
          =gs.findLatestProcessDefinition("example_5");
                  ProcessInstance pi
          =new ProcessInstance(pd);
                  Token token
          =pi.getRootToken();
                  System.out.println(
          "token-->"+token.getNode().getName());
                  token.signal(
          "tr1");
                  System.out.println(
          "tr1-->"+token.getNode().getName());
                  token.signal();
                  System.out.println(
          "kk->"+token.getNode().getName());
                  System.out.println(
          "是否已結束->"+pi.hasEnded());
                  jc.save(pi);
                  
              }
              
              
              
          }
          以上這個類對應第一個工作流模板,至于該模板里定義的接口,
           <action name="工作" class="com.wide.example5.WorkAction"></action>
          該class只需要實現ActionHandler接口就行了,具體有啥用我現也沒搞懂:)我一直努力著。
          posted on 2007-04-11 23:48 有貓相伴的日子 閱讀(2428) 評論(0)  編輯  收藏 所屬分類: workflow
          本站不再更新,歡迎光臨 java開發技術網
          主站蜘蛛池模板: 大竹县| 安吉县| 鄯善县| 黄冈市| 乐亭县| 怀柔区| 新乡县| 司法| 永兴县| 宁明县| 南昌市| 石阡县| 剑川县| 夏河县| 门头沟区| 南昌市| 浙江省| 合川市| 舒城县| 新巴尔虎左旗| 呼伦贝尔市| 南靖县| 沽源县| 博乐市| 防城港市| 宜丰县| 师宗县| 宁德市| 永德县| 寿光市| 丹凤县| 荆州市| 五台县| 昌乐县| 黔西县| 尉犁县| 灵丘县| 木兰县| 三门峡市| 凯里市| 贞丰县|