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

📄 twosubprocessesinonetransactiondbtest.java

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

import java.util.List;

import org.hibernate.Query;
import org.jbpm.db.AbstractDbTestCase;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;

public class TwoSubProcessesInOneTransactionDbTest extends AbstractDbTestCase {

  public void testTwoSubProcessesInOneTransaction() throws Throwable {
    ProcessDefinition subProcess = ProcessDefinition.parseXmlString(
      "<process-definition name='sub'>" +
      "  <start-state>" +
      "    <transition to='end' />" +
      "  </start-state>" +
      "  <end-state name='end' />" +
      "</process-definition>"
    );
    jbpmContext.deployProcessDefinition(subProcess);
    
    ProcessDefinition superProcess = ProcessDefinition.parseXmlString(
      "<process-definition name='super'>" +
      "  <start-state>" +
      "    <transition to='subprocess one' />" +
      "  </start-state>" +
      "  <process-state name='subprocess one'>" +
      "    <sub-process name='sub' />" +
      "    <transition to='subprocess two'/>" +
      "  </process-state>" +
      "  <process-state name='subprocess two'>" +
      "    <sub-process name='sub' />" +
      "    <transition to='wait'/>" +
      "  </process-state>" +
      "  <state name='wait' />" +
      "</process-definition>"
    );
    jbpmContext.deployProcessDefinition(superProcess);
    
    newTransaction();
    
    ProcessInstance processInstance = jbpmContext.newProcessInstance("super");
    processInstance.signal();
    jbpmContext.save(processInstance);
    
    newTransaction();
    
    Query query = session.createQuery(
      "select pi " +
      "from org.jbpm.graph.exe.ProcessInstance pi " +
      "where pi.processDefinition.name = 'super'"
    );
    List superInstances = query.list();
    assertEquals(1, superInstances.size());
    ProcessInstance superInstance = (ProcessInstance) superInstances.get(0);
    assertEquals("wait", superInstance.getRootToken().getNode().getName());

    query = session.createQuery(
      "select pi " +
      "from org.jbpm.graph.exe.ProcessInstance pi " +
      "where pi.processDefinition.name = 'sub'"
    );
    List subInstances = query.list();
    assertEquals(2, subInstances.size());
    
    ProcessInstance subInstance = (ProcessInstance) subInstances.get(0);
    assertTrue(subInstance.hasEnded());
    assertEquals(superInstance.getRootToken(), subInstance.getSuperProcessToken());
    
    subInstance = (ProcessInstance) subInstances.get(1);
    assertTrue(subInstance.hasEnded());
    assertEquals(superInstance.getRootToken(), subInstance.getSuperProcessToken());
  }
}

⌨️ 快捷键说明

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