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

📄 firstflowprocesstest.java

📁 workflow first jbpm
💻 JAVA
字号:
package com.firstflow;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import junit.framework.TestCase;

import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.context.exe.ContextInstance;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.def.Transition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.taskmgmt.exe.TaskInstance;

public class FirstFlowProcessTest extends TestCase {
	
	
    ProcessDefinition pdf ;

    ProcessInstance pi;       

	public void test4000YuanApplication() throws Exception {

		deployProcessDefinition();
		createProcessInstance("linly");
		submitApplication(5000);
		approveByManager(true);
		checkTasks();
	}

	public void test6000YuanApplication() throws Exception {
		deployProcessDefinition();
		createProcessInstance("linly");
		submitApplication(6000);
		approveByManager(true);
		approveByPresident(true);
		checkTasks();
	}
	
	public void test7000YuanApplication() throws Exception {
		deployProcessDefinition();
		createProcessInstance("linly");
		submitApplication(7000);
		approveByManager(true);
		approveByPresident(false);
		checkTasks();
	}
	
	/**
	 * 部署流程定义
	 * @throws Exception
	 */
    protected void deployProcessDefinition() throws Exception{
        System.out.println("==FirstFlowProcessTest.deployProcessDefinition()==");
        pdf = ProcessDefinition.parseXmlResource("firstflow/processdefinition.xml");
       
//        /*
//         * 下面是将发布到数据库的程序
//         */
//        JbpmConfiguration config = JbpmConfiguration.getInstance();
//        JbpmContext context = config.createJbpmContext();
//        context.deployProcessDefinition(pdf);
        assertNotNull("Definition should not be null", pdf);        
    }
    
    /**
     * 生成流程实例 
     */
    protected void createProcessInstance(String user){
        System.out.println("==FirstFlowProcessTest.createProcessInstance()==");
        assertNotNull("Definition should not be null", pdf);
        //生成实例
    	pi = pdf.createProcessInstance();
    	assertNotNull("processInstance should not be null", pi);
    	//设置流程发起人
    	pi.getContextInstance().createVariable("initiator", user);
    	//触发流程转向
    	pi.signal();
    }
    
    /**
     * 填写提交申请单
     * @param money
     */
    protected void submitApplication(int money){
    	
        System.out.println("==FirstFlowProcessTest.submitApplication()==");
        
        TaskInstance ti = (TaskInstance)pi.getTaskMgmtInstance().getTaskInstances().iterator() .next() ;
        
        System.out.println("ti.actor = " + ti.getActorId());
        
        ContextInstance ci = ti.getContextInstance();

        ci.setVariable("money",new Integer(money));

        ti.end();    	
    }
    
    /**
     * 部门经理审批
     * @param pass
     */    
    @SuppressWarnings("unchecked")
    protected void approveByManager(boolean pass){
    	
        System.out.println("==FirstFlowProcessTest.approveByManager()==");
        
        Iterator<TaskInstance> it = pi.getTaskMgmtInstance().getTaskInstances().iterator();
        
        for( ;it.hasNext(); ){
        	
        	TaskInstance ti = it.next();
        	
        	if(ti.getActorId().equals("DepartmentManager")){
                List<Transition> transitions = ti.getToken().getNode().getLeavingTransitions();
                for(Transition t : transitions){
                	System.out.println("----Transition" + t.getName());
                }
                assertEquals("DepartmentManager",ti.getActorId());
                if(pass){
                	 ti.end("部门经理审批通过");    	
                }else{
                	ti.end("部门经理驳回");
                }
                return;
        	}
        }
        
    }
    
    /**
     * 总经理审批
     * @param pass
     */
    @SuppressWarnings("unchecked")
    protected void approveByPresident(boolean pass){
    	   System.out.println("==FirstFlowProcessTest.approveByPresident()==");
    	   
           Iterator<TaskInstance> it = pi.getTaskMgmtInstance().getTaskInstances().iterator();
           
           for( ;it.hasNext(); ){
           	
	           	TaskInstance ti = it.next();
	           	
	           	if(ti.getActorId().equals("President")){
	                List<Transition> transitions = ti.getToken().getNode().getLeavingTransitions();
	                for(Transition t : transitions){
	                	System.out.println("----Transition" + t.getName());
	                }
	                assertEquals("President",ti.getActorId());
	                if(pass){
	                	 ti.end("总经理审批通过");    	
	                }else{
	                	ti.end("总经理驳回");
	                }
	                return;
	           	}
           }
    }
    
    /**
     * 打印任务记录
     */
    @SuppressWarnings("unchecked")
    protected void checkTasks(){       

        System.out.println("==FirstFlowProcessTest.checkTasks()==");

        Collection<TaskInstance> coll = pi.getTaskMgmtInstance().getTaskInstances();

        System.out.println("====Process has task:====");

        for(TaskInstance ti : coll){

               System.out.println("=="+ti.getName()+"==");

               System.out.println("=="+ti.getActorId()+"==");

               System.out.println("=="+ti.getVariables().toString() +"==");

        }

        System.out.println("====end====");   

    }         

}

⌨️ 快捷键说明

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