⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 decisionexpressiontest.java

📁 jBpm是一个灵活可扩展的工作流管理系统。作为jBpm运行时server输入的业务流程使用简单强大的语言表达并打包在流程档案中
💻 JAVA
字号:
package org.jbpm.jpdl.exe;

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

import junit.framework.TestCase;

public class DecisionExpressionTest extends TestCase {
  
  public void testBudgetHignerThenThousand() {
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
      "<process-definition>" +
      "  <start-state>" +
      "    <transition to='d' />" +
      "  </start-state>" +
      "  <decision name='d' " +
      "            expression='#{ ( budget>1000 ? \"important lead\" : ( budget>100 ? \"lead\" : \"beggars\")) }'>" +
      "    <transition name='important lead' to='harras them'/>" +
      "    <transition name='lead' to='put it in the lead db'/>" +
      "    <transition name='beggars' to='forget about it'/>" +
      "  </decision>" +
      "  <state name='harras them' />" +
      "  <state name='put it in the lead db' />" +
      "  <state name='forget about it' />" +
      "</process-definition>"
    );
          
    ProcessInstance processInstance = new ProcessInstance(processDefinition);
    processInstance.getContextInstance().setVariable("budget", new Integer(3500));
    processInstance.signal();
    
    assertEquals(processDefinition.getNode("harras them"), processInstance.getRootToken().getNode());
  }

  public void testBudgetBetweenHundredAndThousand() {
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
      "<process-definition>" +
      "  <start-state>" +
      "    <transition to='d' />" +
      "  </start-state>" +
      "  <decision name='d' " +
      "            expression='#{ ( budget>1000 ? \"important lead\" : ( budget>100 ? \"lead\" : \"beggars\")) }'>" +
      "    <transition name='important lead' to='harras them'/>" +
      "    <transition name='lead' to='put it in the lead db'/>" +
      "    <transition name='beggars' to='forget about it'/>" +
      "  </decision>" +
      "  <state name='harras them' />" +
      "  <state name='put it in the lead db' />" +
      "  <state name='forget about it' />" +
      "</process-definition>"
    );

    ProcessInstance processInstance = new ProcessInstance(processDefinition);
    processInstance.getContextInstance().setVariable("budget", new Integer(350));
    processInstance.signal();
    
    assertEquals(processDefinition.getNode("put it in the lead db"), processInstance.getRootToken().getNode());
  }

  public void testSmallBudget() {
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
      "<process-definition>" +
      "  <start-state>" +
      "    <transition to='d' />" +
      "  </start-state>" +
      "  <decision name='d' " +
      "            expression='#{ ( budget>1000 ? \"important lead\" : ( budget>100 ? \"lead\" : \"beggars\")) }'>" +
      "    <transition name='important lead' to='harras them'/>" +
      "    <transition name='lead' to='put it in the lead db'/>" +
      "    <transition name='beggars' to='forget about it'/>" +
      "  </decision>" +
      "  <state name='harras them' />" +
      "  <state name='put it in the lead db' />" +
      "  <state name='forget about it' />" +
      "</process-definition>"
    );

    ProcessInstance processInstance = new ProcessInstance(processDefinition);
    processInstance.getContextInstance().setVariable("budget", new Integer(35));
    processInstance.signal();
    
    assertEquals(processDefinition.getNode("forget about it"), processInstance.getRootToken().getNode());
  }
  
  public void testBooleanToStringConversionForTrue() {
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
      "<process-definition>" +
      "  <start-state>" +
      "    <transition to='d' />" +
      "  </start-state>" +
      "  <decision name='d' " +
      "            expression='#{budget>1000}'>" +
      "    <transition name='true' to='harras them'/>" +
      "    <transition name='false' to='forget about it'/>" +
      "  </decision>" +
      "  <state name='harras them' />" +
      "  <state name='forget about it' />" +
      "</process-definition>"
    );

    ProcessInstance processInstance = new ProcessInstance(processDefinition);
    processInstance.getContextInstance().setVariable("budget", new Integer(3500));
    processInstance.signal();
    
    assertEquals(processDefinition.getNode("harras them"), processInstance.getRootToken().getNode());
  }
  
  public void testBooleanToStringConversionForFalse() {
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
      "<process-definition>" +
      "  <start-state>" +
      "    <transition to='d' />" +
      "  </start-state>" +
      "  <decision name='d' " +
      "            expression='#{budget>1000}'>" +
      "    <transition name='true' to='harras them'/>" +
      "    <transition name='false' to='forget about it'/>" +
      "  </decision>" +
      "  <state name='harras them' />" +
      "  <state name='forget about it' />" +
      "</process-definition>"
    );
  
    ProcessInstance processInstance = new ProcessInstance(processDefinition);
    processInstance.getContextInstance().setVariable("budget", new Integer(35));
    processInstance.signal();
    
    assertEquals(processDefinition.getNode("forget about it"), processInstance.getRootToken().getNode());
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -