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

📄 actionexpressiondbtest.java

📁 jbpm demo 是一款非常不错的开源工作流,简单易用,适合扩张开发!
💻 JAVA
字号:
package org.jbpm.jpdl.el;

import java.io.Serializable;

import org.jbpm.context.exe.ContextInstance;
import org.jbpm.db.AbstractDbTestCase;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.graph.exe.ProcessInstance;

public class ActionExpressionDbTest extends AbstractDbTestCase {
  
  public static class MyActionObject implements Serializable {
    private static final long serialVersionUID = 1L;
    public void gettingStarted() {
      ContextInstance contextInstance = ExecutionContext.currentExecutionContext().getContextInstance();
      contextInstance.setVariable("getting started", "done");
    }
    public void halfWayThere() {
      ContextInstance contextInstance = ExecutionContext.currentExecutionContext().getContextInstance();
      contextInstance.setVariable("half way there", "done");
    }
    public void concluding() {
      ContextInstance contextInstance = ExecutionContext.currentExecutionContext().getContextInstance();
      contextInstance.setVariable("concluding", "done");
    }
  }

  public void testActionExpression() {
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
      "<process-definition>" +
      "  <start-state>" +
      "    <event type='node-leave'>" +
      "      <action expression='#{myActionObject.gettingStarted}' />" +
      "    </event>" +
      "    <transition to='wait a bit'>" +
      "      <action expression='#{myActionObject.halfWayThere}' />" +
      "    </transition>" +
      "  </start-state>" +
      "  <state name='wait a bit'>" +
      "    <transition to='end' />" +
      "  </state>" +
      "  <end-state name='end' />" +
      "  <event type='process-end'>" +
      "    <action expression='#{myActionObject.concluding}' />" +
      "  </event>" +
      "</process-definition>" 
    );
    session.save(processDefinition);
    
    ProcessInstance processInstance = new ProcessInstance(processDefinition);
    ContextInstance contextInstance = processInstance.getContextInstance();
    contextInstance.setVariable("myActionObject", new MyActionObject());
    
    processInstance = saveAndReload(processInstance);
    contextInstance = processInstance.getContextInstance();
    
    processInstance.signal();

    assertEquals("done", contextInstance.getVariable("getting started"));
    assertEquals("done", contextInstance.getVariable("half way there"));
    assertNull(contextInstance.getVariable("concluding"));

    processInstance = saveAndReload(processInstance);
    
    processInstance.signal();
    
    processInstance = saveAndReload(processInstance);
    contextInstance = processInstance.getContextInstance();
    
    assertEquals("done", contextInstance.getVariable("getting started"));
    assertEquals("done", contextInstance.getVariable("half way there"));
    assertEquals("done", contextInstance.getVariable("concluding"));
  }
}

⌨️ 快捷键说明

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