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

📄 processdefinitiondbtest.java

📁 jbpm demo 是一款非常不错的开源工作流,简单易用,适合扩张开发!
💻 JAVA
字号:
/*
 * JBoss, Home of Professional Open Source
 * Copyright 2005, JBoss Inc., and individual contributors as indicated
 * by the @authors tag. See the copyright.txt in the distribution for a
 * full listing of individual contributors.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */
package org.jbpm.graph.def;

import org.jbpm.context.def.ContextDefinition;
import org.jbpm.db.AbstractDbTestCase;
import org.jbpm.file.def.FileDefinition;
import org.jbpm.graph.node.StartState;
import org.jbpm.taskmgmt.def.TaskMgmtDefinition;

public class ProcessDefinitionDbTest extends AbstractDbTestCase {

  public void testProcessDefinitionVersion() {
    ProcessDefinition processDefinition = new ProcessDefinition("name");
    processDefinition.setVersion(3);

    processDefinition = saveAndReload(processDefinition);

    assertNotNull(processDefinition);
    assertEquals(3, processDefinition.getVersion());
  }

  public void testProcessDefinitionIsTerminationImplicit() {
    ProcessDefinition processDefinition = new ProcessDefinition("name");
    processDefinition.setTerminationImplicit(false);

    processDefinition = saveAndReload(processDefinition);

    assertNotNull(processDefinition);
    assertFalse(processDefinition.isTerminationImplicit());
  }

  public void testProcessDefinitionStartState() {
    ProcessDefinition processDefinition = new ProcessDefinition();
    processDefinition.setStartState(new StartState());

    processDefinition = saveAndReload(processDefinition);

    // the start state of a process definition is mapped as a node.
    // therefor the hibernate proxy will be a node
    Node startState = processDefinition.getStartState();
    assertTrue(Node.class.isAssignableFrom(startState.getClass()));
    // reloading gives a better typed proxy
    assertTrue(StartState.class.isAssignableFrom(session.load(StartState.class, new Long(startState.getId())).getClass()));  
  }

  public void testProcessDefinitionNodes() {
    ProcessDefinition processDefinition = new ProcessDefinition();
    processDefinition.setStartState(new StartState("s"));
    processDefinition.addNode(new Node("a"));
    processDefinition.addNode(new Node("b"));
    processDefinition.addNode(new Node("c"));
    processDefinition.addNode(new Node("d"));

    processDefinition = saveAndReload(processDefinition);

    assertEquals("s", processDefinition.getStartState().getName());
    assertEquals("s", ((Node)processDefinition.getNodes().get(0)).getName());
    assertEquals("a", ((Node)processDefinition.getNodes().get(1)).getName());
    assertEquals("b", ((Node)processDefinition.getNodes().get(2)).getName());
    assertEquals("c", ((Node)processDefinition.getNodes().get(3)).getName());
    assertEquals("d", ((Node)processDefinition.getNodes().get(4)).getName());
  }
  
  public void testActions() {
    ProcessDefinition processDefinition = new ProcessDefinition();
    Action action = new Action();
    action.setName("a");
    processDefinition.addAction(action);
    action = new Action();
    action.setName("b");
    processDefinition.addAction(action);

    processDefinition = saveAndReload(processDefinition);

    assertEquals(2, processDefinition.getActions().size());
    assertNotNull(processDefinition.getActions().get("a"));
    assertNotNull(processDefinition.getActions().get("b"));
    assertTrue(Action.class.isAssignableFrom(processDefinition.getAction("a").getClass()));
    assertTrue(Action.class.isAssignableFrom(processDefinition.getAction("b").getClass()));
  }
  
  public void testEvents() {
    ProcessDefinition processDefinition = new ProcessDefinition();
    processDefinition.addEvent(new Event("node-enter"));
    processDefinition.addEvent(new Event("node-leave"));
    processDefinition.addEvent(new Event("transition"));
    processDefinition.addEvent(new Event("process-start"));
    processDefinition.addEvent(new Event("process-end"));

    processDefinition = saveAndReload(processDefinition);

    assertNotNull(processDefinition.getEvent("node-enter"));
    assertNotNull(processDefinition.getEvent("node-leave"));
    assertNotNull(processDefinition.getEvent("transition"));
    assertNotNull(processDefinition.getEvent("process-start"));
    assertNotNull(processDefinition.getEvent("process-end"));
  }

  public void testExceptionHandlers() {
    ProcessDefinition processDefinition = new ProcessDefinition();
    ExceptionHandler exceptionHandler = new ExceptionHandler();
    exceptionHandler.setExceptionClassName("org.disaster.FirstException");
    processDefinition.addExceptionHandler(exceptionHandler);
    exceptionHandler = new ExceptionHandler();
    exceptionHandler.setExceptionClassName("org.disaster.SecondException");
    processDefinition.addExceptionHandler(exceptionHandler);
    exceptionHandler = new ExceptionHandler();
    exceptionHandler.setExceptionClassName("org.disaster.ThirdException");
    processDefinition.addExceptionHandler(exceptionHandler);

    processDefinition = saveAndReload(processDefinition);

    assertEquals("org.disaster.FirstException",((ExceptionHandler)processDefinition.getExceptionHandlers().get(0)).getExceptionClassName());
    assertEquals("org.disaster.SecondException",((ExceptionHandler)processDefinition.getExceptionHandlers().get(1)).getExceptionClassName());
    assertEquals("org.disaster.ThirdException",((ExceptionHandler)processDefinition.getExceptionHandlers().get(2)).getExceptionClassName());
  }

  public void testContextModuleDefinition() {
    ProcessDefinition processDefinition = new ProcessDefinition();
    processDefinition.addDefinition(new ContextDefinition());
    graphSession.saveProcessDefinition(processDefinition);
    newTransaction();
    processDefinition = graphSession.loadProcessDefinition(processDefinition.getId());
    assertNotNull(processDefinition.getContextDefinition());
    assertTrue(ContextDefinition.class.isAssignableFrom(processDefinition.getContextDefinition().getClass()));
  }
  
  public void testFileDefinition() {
    ProcessDefinition processDefinition = new ProcessDefinition();
    processDefinition.addDefinition(new FileDefinition());

    processDefinition = saveAndReload(processDefinition);

    assertNotNull(processDefinition.getFileDefinition());
    assertTrue(FileDefinition.class.isAssignableFrom(processDefinition.getFileDefinition().getClass()));
  }

  public void testTaskMgmtDefinition() {
    ProcessDefinition processDefinition = new ProcessDefinition();
    processDefinition.addDefinition(new TaskMgmtDefinition());

    processDefinition = saveAndReload(processDefinition);

    assertNotNull(processDefinition.getTaskMgmtDefinition());
    assertTrue(TaskMgmtDefinition.class.isAssignableFrom(processDefinition.getTaskMgmtDefinition().getClass()));
  }
  
}

⌨️ 快捷键说明

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