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

📄 deleteprocessinstancetest.java

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

import java.util.List;

import junit.framework.TestCase;

import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.db.GraphSession;
import org.jbpm.db.TaskMgmtSession;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.taskmgmt.exe.TaskInstance;

public class DeleteProcessInstanceTest extends TestCase {

  static JbpmConfiguration jbpmConfiguration = null;
  static long processId = -1L;
  static String currentTokenPath = null;

  static {
    jbpmConfiguration = JbpmConfiguration.parseXmlString(
      "<jbpm-configuration>" +
      " <jbpm-context>" +
      " <service name='persistence' factory='org.jbpm.persistence.db.DbPersistenceServiceFactory' />" +
      " </jbpm-context>" +
      " <string name='resource.hibernate.cfg.xml' value='hibernate.cfg.xml' />" +
      " <string name='resource.business.calendar' value='org/jbpm/calendar/jbpm.business.calendar.properties' />" +
      " <string name='resource.default.modules' value='org/jbpm/graph/def/jbpm.default.modules.properties' />" +
      " <string name='resource.converter' value='org/jbpm/db/hibernate/jbpm.converter.properties' />" +
      " <string name='resource.action.types' value='org/jbpm/graph/action/action.types.xml' />" +
      " <string name='resource.node.types' value='org/jbpm/graph/node/node.types.xml' />" +
      " <string name='resource.varmapping' value='org/jbpm/context/exe/jbpm.varmapping.xml' />" +
      "</jbpm-configuration>"
    );
  }
  
  public void setUp() {
    jbpmConfiguration.createSchema();
  }
  
  public void tearDown() {
    jbpmConfiguration.dropSchema();
  }

  public void testDelete() {
    deployProcessDefinition();

    startProcess();
    step2TaskEnd();
    deleteProcess();
  }

  public void deployProcessDefinition() {
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString
    (
      "<process-definition name='deletetest'>" +
      " <start-state name='start'> " +
      " <task name='startTask'> " +
      " <controller> " +
      " <variable name='var1' access='write'/> " +
      " </controller> " +
      " </task> " +
      " <transition name='' to='step2'/> " +
      " </start-state> " +
      " <task-node name='step2'> " +
      " <task name='step2Task'/> " +
      " <transition name='' to='step3'/> " +
      " </task-node>" +
      " <task-node name='step3'> " +
      " <task name='step3Task'/> " +
      " <transition name='' to='end'/> " +
      " </task-node> " +
      " <end-state name='end' />" +
      "</process-definition>"
    );
    
    JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
    try {
      jbpmContext.deployProcessDefinition(processDefinition);
    } finally {
      jbpmContext.close();
    }
  }

  public void startProcess() {

    JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
    try {

      GraphSession graphSession = jbpmContext.getGraphSession();
      
      ProcessDefinition processDefinition = graphSession.findLatestProcessDefinition("deletetest");
      ProcessInstance processInstance = new ProcessInstance(processDefinition);
      processId = processInstance.getId();

      TaskInstance taskInstance = processInstance.getTaskMgmtInstance().createStartTaskInstance();
      taskInstance.setVariableLocally("var1", "var1Value");
      taskInstance.end();
      Token token = taskInstance.getToken();
      currentTokenPath = token.getFullName();
      
      jbpmContext.save(processInstance);
    } finally {
      jbpmContext.close();
    }
  }

  public void step2TaskEnd() {

      JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
      try {

        GraphSession graphSession = jbpmContext.getGraphSession();
        ProcessInstance processInstance = graphSession.loadProcessInstance(processId);
        Token token = processInstance.findToken(currentTokenPath);
        TaskMgmtSession taskSession = jbpmContext.getTaskMgmtSession();
        List tasks = taskSession.findTaskInstancesByToken(token.getId());
        TaskInstance taskInstance = (TaskInstance)tasks.get(0);

        //
        // comment out the following line and it works
        //
        taskInstance.setVariableLocally("var1", "var1TaskValue");

        taskInstance.setVariableLocally("var2", "var2UpdatedValue");
        taskInstance.end();
        token = taskInstance.getToken();
        currentTokenPath = token.getFullName();
        
        jbpmContext.save(processInstance);
      } finally {
        jbpmContext.close();
      }
    }

  
  public void deleteProcess()
  {
      JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
      try {

        GraphSession graphSession = jbpmContext.getGraphSession();
        ProcessInstance processInstance = graphSession.loadProcessInstance(processId);
        graphSession.deleteProcessInstance(processInstance, true, true, true);

      } finally {
        jbpmContext.close();
      }
  }
   
}

⌨️ 快捷键说明

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