JBPM-Decision的用法

转载 2007年09月26日 10:55:00
Decision决定状态。Decision和Node一样,都是即时状态,而不是等待状态。Decision的多个离开转向transition中可以设置条件。业务程序实例执行到Decision状态时,会依次计算所有的离开转向的条件,遇到条件为真的转向时,就会立即执行这个转向。如果没有为转向设置条件,那么这个转向的条件值就是true。Decision是功能最强大的即时状态。

processdefinition.xml

<?xml version="1.0" encoding="UTF-8"?>

<process-definition
  
xmlns="urn:jbpm.org:jpdl-3.1"  name="example_8">
   
<start-state name="考试">
      
<transition name="" to="评判"/>
   
</start-state>
   
<decision name="评判">
         
<handler class="com.wide.example8.JudgeDecisionHandler"/>
      
<transition name="升学" to="进大学深造"/>
      
<transition name="复习" to="复习备考"/>
      
<transition name="辍学" to="闯荡江湖"/>
   
</decision>
   
<state name="进大学深造">
      
<transition name="" to="End"/>
   
</state>
   
<state name="复习备考">
      
<transition name="" to="End"/>
   
</state>
   
<state name="闯荡江湖">
      
<transition name="" to="End"/>
   
</state>
   
<end-state name="End"></end-state>
</process-definition>
JudgeDecisionHandler.java
package com.wide.example8;

import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.graph.node.DecisionHandler;

public class JudgeDecisionHandler implements DecisionHandler {

    
public String decide(ExecutionContext executionContext) throws Exception {
        
int score = (Integer)executionContext.getContextInstance().getVariable("score");
        
        
if(score < 30)
            
return "辍学";
        
else if(score < 60)
            
return "复习";
        
else
            
return "升学";
    }


}

测试(JUnit4)

 

package com.sample;

import static org.junit.Assert.assertEquals;

import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;
import org.junit.Before;
import org.junit.Test;

public class Example8 {
    
private ProcessDefinition processDefinition = null;

    @Before
    
public void init() {
        processDefinition 
= ProcessDefinition
                .parseXmlResource(
"example_8/processdefinition.xml");
    }


    @Test
    
public void process1() {
        ProcessInstance processInstance 
= new ProcessInstance(processDefinition);

        Token token 
= processInstance.getRootToken();
        processInstance.getContextInstance().setVariable(
"score"80);
        token.signal();
        assertEquals(
"进大学深造", token.getNode().getName());
        token.signal();
        assertEquals(
"End", token.getNode().getName());
    }


    @Test
    
public void process2() {
        ProcessInstance processInstance 
= new ProcessInstance(processDefinition);

        Token token 
= processInstance.getRootToken();
        processInstance.getContextInstance().setVariable(
"score"50);
        token.signal();
        assertEquals(
"复习备考", token.getNode().getName());
        token.signal();
        assertEquals(
"End", token.getNode().getName());
    }


    @Test
    
public void process3() {
        ProcessInstance processInstance 
= new ProcessInstance(processDefinition);

        Token token 
= processInstance.getRootToken();
        processInstance.getContextInstance().setVariable(
"score"10);
        token.signal();
        assertEquals(
"闯荡江湖", token.getNode().getName());
        token.signal();
        assertEquals(
"End", token.getNode().getName());
    }

}

 

相关文章推荐

JBPM具体应用之decision节点的使用

JBPM工作流引擎为我们提供了许多的节点应用,每一个节点都有其不同的作用,其中有四个比较常用的节点,他们分别decision,fork,state和task。在本文中我们先介绍decision节点,余...

jbpm分支decision节点判断跳转

1.三目运算符判断自动跳转节点 执行跳转时加上局部变量 public static void main(String[] args){ //JbpmUtil.deploy("forti...

JBPM task state decision 用法or不同点

jbpm4.3中的节点有很多种常见的有:state、task、decision (我列出来的都是最基本的)可以这样理解流程实例碰到state就会自己停下来,但是这个任务不属于那个人,而且知道有任何人驱...

跟我学JBPM4之State、Decision 、Task活动【手动控制流程流转,是一个比较好的初学资料】

State、Decision 、Task活动详解:State表示一个等待状态。当流程实例执行到state节点时会暂停下来(处于等待状态),流程的执行会在外部触发器被调用之前一直等待(会暂停)Decis...

JBPM4之decision节点:2、好学生|坏学生|超级学生

JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流程图的插件 JBPM4入门——3.JBPM4开发环境的搭建 JBPM4入门——...

jbpm中的设计活动之decision

一、流程图 二、代码实现     1、首先准备decision所需要的处理类        package com.njupt.decision; import org.jbpm.api....

JBPM4之decision节点:1、好学生 | 坏学生

JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流程图的插件 JBPM4入门——3.JBPM4开发环境的搭建 JBPM4入门——...

08-jbpm工作流之Decision流程决策(判断活动执行方向)

流程图test.png: 配置文件test.jpdl.xml: ...

JBPM具体应用之decision节点的使用

分类: 【综合问题】 【Java】JBPM工作流引擎为我们提供了许多的节点应用,每一个节点都有其不同的作用,其中有四个比较常用的节点,他们分别decision,fork,state和task。在本文中...

JBPM4.4开发(二)-------------决策节点decision

decision decision活动会运行并判断其中的每一个transition元素里的转移条件。当遇到一个transition的condition为true时,那么流程立即流向这个transit...
  • NCITS
  • NCITS
  • 2012年05月10日 18:58
  • 2413
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JBPM-Decision的用法
举报原因:
原因补充:

(最多只允许输入30个字)