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

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

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

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.tkk7.com/sxyx2008/謝謝合作!!!

    雪山飛鵠

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.tkk7.com/sxyx2008/謝謝合作!!!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks
    流程定義文件
    <?xml version="1.0" encoding="UTF-8"?>

    <process-definition
      
    xmlns="urn:jbpm.org:jpdl-3.2"  name="forkjoin">
       
    <start-state name="開始">
          
    <transition name="to join" to="fork"></transition>
       
    </start-state>
       
    <fork name="fork">
             
    <script>
                 
    <variable name="transitionNames" access="write"></variable>
                 
    <expression>
                     transitionNames=new ArrayList();
                     if(param>100){
                         transitionNames.add("to node1");
                         transitionNames.add("to node2");
                     }else{
                         transitionNames.add("to node3");
                         transitionNames.add("to node4");
                     }
                 
    </expression>
             
    </script>
          
    <transition name="to node1" to="node1"></transition>
          
    <transition name="to node2" to="node2"></transition>
          
    <transition name="to node3" to="node3"></transition>
          
    <transition name="to node4" to="node4"></transition>
       
    </fork>
       
    <join name="join">
          
    <transition name="to 結束" to="結束"></transition>
       
    </join>
       
    <end-state name="結束"></end-state>
       
    <node name="node1">
          
    <transition name="to join" to="join"></transition>
          
    <event type="node-enter">
              
    <script>
                  print("經過"+node.getName());
              
    </script>
          
    </event>
       
    </node>
       
    <node name="node2">
          
    <transition name="to join" to="join"></transition>
          
    <event type="node-enter">
              
    <script>
                  print("經過"+node.getName());
              
    </script>
          
    </event>
       
    </node>
       
    <node name="node3">
          
    <transition name="to join" to="join"></transition>
          
    <event type="node-enter">
              
    <script>
                  print("經過"+node.getName());
              
    </script>
          
    </event>
       
    </node>
       
    <node name="node4">
          
    <transition name="to join" to="join"></transition>
          
    <event type="node-enter">
              
    <script>
                  print("經過"+node.getName());
              
    </script>
          
    </event>
       
    </node>
    </process-definition>

    工作機制:是通過在fork節點添加<script></script>標簽,在script內部設置
    <variable name="transitionNames" access="write"></variable>切記此處access屬性設置為write

    <expression>
            transitionNames=new ArrayList();
            if(param>100){
             transitionNames.add("to node1");
             transitionNames.add("to node2");
            }else{
             transitionNames.add("to node3");
             transitionNames.add("to node4");
            }
    </expression>
    上面在流程實例上下文中定義了一個變量param,當param大于100時,執行node1和node2節點
    測試一下:
    package com.jbpm;

    import org.jbpm.graph.def.ProcessDefinition;
    import org.jbpm.graph.exe.ProcessInstance;


    public class TestForkJoin {
        
        
    public static void main(String[] args) {
            ProcessDefinition processDefinition
    =ProcessDefinition.parseXmlResource("forkjoin/processdefinition.xml");
            ProcessInstance processInstance
    =new ProcessInstance(processDefinition);
            processInstance.getContextInstance().setVariable(
    "param"200);
            
    //processInstance.signal();
            System.err.println("當前節點是:"+processInstance.getRootToken().getNode().getName());
            processInstance.signal();
            System.err.println(
    "當前節點是:"+processInstance.getRootToken().getNode().getName());
        }
    }
    運行結果
    當前節點是:開始
    11:44:07,703 [main] DEBUG GraphElement : event 'before-signal' on 'StartState(開始)' for 'Token(/)'
    11:44:07,703 [main] DEBUG GraphElement : event 'node-leave' on 'StartState(開始)' for 'Token(/)'
    11:44:07,718 [main] DEBUG GraphElement : event 'transition' on 'Transition(to join)' for 'Token(/)'
    11:44:07,718 [main] DEBUG GraphElement : event 'node-enter' on 'Fork(fork)' for 'Token(/)'
    11:44:07,719 [main] DEBUG Script : script input: {node=Fork(fork), param=200, token=Token(/), task=null, executionContext=ExecutionContext[Token(/)], taskInstance=null}
    11:44:07,814 [main] DEBUG Script : script output: {transitionNames=[to node1, to node2]}
    11:44:07,830 [main] DEBUG GraphElement : event 'node-leave' on 'Fork(fork)' for 'Token(/to node1)'
    11:44:07,830 [main] DEBUG GraphElement : event 'transition' on 'Transition(to node1)' for 'Token(/to node1)'
    11:44:07,830 [main] DEBUG GraphElement : event 'node-enter' on 'Node(node1)' for 'Token(/to node1)'
    11:44:07,830 [main] DEBUG GraphElement : executing action 'Script(10f6d3)'
    11:44:07,830 [main] DEBUG Token : token[0] is locked by token[0]
    11:44:07,830 [main] DEBUG Script : script input: {node=Node(node1), param=200, token=Token(/to node1), task=null, executionContext=ExecutionContext[Token(/to node1)], taskInstance=null}
    經過node1
    11:44:07,861 [main] DEBUG Script : script output: {}
    11:44:07,861 [main] DEBUG Token : token[0] is unlocked by token[0]
    11:44:07,861 [main] DEBUG GraphElement : event 'node-leave' on 'Node(node1)' for 'Token(/to node1)'
    11:44:07,861 [main] DEBUG GraphElement : event 'transition' on 'Transition(to join)' for 'Token(/to node1)'
    11:44:07,861 [main] DEBUG GraphElement : event 'node-enter' on 'Join(join)' for 'Token(/to node1)'
    11:44:07,861 [main] DEBUG Join : join will not yet reactivate parent: found concurrent token 'Token(/to node2)'
    11:44:07,861 [main] DEBUG GraphElement : event 'node-leave' on 'Fork(fork)' for 'Token(/to node2)'
    11:44:07,861 [main] DEBUG GraphElement : event 'transition' on 'Transition(to node2)' for 'Token(/to node2)'
    11:44:07,861 [main] DEBUG GraphElement : event 'node-enter' on 'Node(node2)' for 'Token(/to node2)'
    11:44:07,861 [main] DEBUG GraphElement : executing action 'Script(cfec48)'
    11:44:07,861 [main] DEBUG Token : token[0] is locked by token[0]
    11:44:07,861 [main] DEBUG Script : script input: {node=Node(node2), param=200, token=Token(/to node2), task=null, executionContext=ExecutionContext[Token(/to node2)], taskInstance=null}
    經過node2
    posted on 2011-06-16 11:45 雪山飛鵠 閱讀(1313) 評論(0)  編輯  收藏 所屬分類: jbpm4
    主站蜘蛛池模板: 久久久久国色av免费看| 免费一级毛片在线播放放视频 | 精品无码国产污污污免费网站 | 国产精品日本亚洲777| 最近中文字幕免费2019| 中文字幕亚洲综合久久2| 国产免费无码AV片在线观看不卡| 亚洲裸男gv网站| caoporn国产精品免费| 亚洲精品无码成人片久久| 巨胸喷奶水www永久免费| 亚洲色大成网站WWW久久九九| 99re6在线精品免费观看| 亚洲国产一区二区三区青草影视| 久久99热精品免费观看动漫| 麻豆亚洲AV永久无码精品久久| 99爱在线观看免费完整版| 亚洲国产精品成人精品小说| 夫妻免费无码V看片| 深夜a级毛片免费视频| 日本红怡院亚洲红怡院最新| 91大神免费观看| 亚洲日韩国产AV无码无码精品 | 国产亚洲精品a在线观看app| 免费观看久久精彩视频| 亚洲综合伊人制服丝袜美腿| 国产在线观看免费不卡| 国产免费黄色无码视频| 亚洲成人免费电影| 国产人成免费视频| 精品亚洲永久免费精品| 亚洲一级毛片在线播放| 国产精品亚洲mnbav网站| 99视频免费播放| 亚洲国产成人AV网站| 亚洲国产精品成人久久| 成人毛片手机版免费看| 成人无码精品1区2区3区免费看| 亚洲无成人网77777| 免费一级毛片清高播放| 真实国产乱子伦精品免费|