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

📄 approveactionhandler.java

📁 这是在JAVA 环境用 JBPM 架构编写的一一套 请假流程实例
💻 JAVA
字号:
package com.myrequest;

import org.jbpm.graph.node.*;
import java.io.FileInputStream;
import java.util.*;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.taskmgmt.*;
import org.jbpm.identity.*;
import org.jbpm.context.exe.ContextInstance;
import org.jbpm.taskmgmt.exe.*;
import junit.framework.TestCase;
import com.myrequest.*;

public class ApproveActionHandler extends TestCase {
	
	ProcessDefinition pdf;
	ProcessInstance pi;
	String userId;

	boolean isChiefHere;
	public void setUp() {
		userId = "dust";
		isChiefHere = true;
	}
	
	public void test14DayAndChiefApproveAndUserCancel() throws Exception {
		this.deployProcessDefinition();
		this.createProcessInstance();
		System.out.println("+++++++++++++++++++++++++++++++++++++++");
		this.userWriteRequest(14);
		System.out.println("+++++++++++++++++++++++++++++++++++++++");
		this.chiefDecide(true);
		System.out.println("+++++++++++++++++++++++++++++++++++++++");
		this.userCancel();
		System.out.println("+++++++++++++++++++++++++++++++++++++++");
		this.checkTasks();
		System.out.println("+++++++++++++++++++++++++++++++++++++++");
	}
	/*
	public void test14DayAndBossNotApprove() throws Exception {
		this.deployProcessDefinition();
		this.createProcessInstance();
		this.userWriteRequest(14);
		this.chiefDecide(true);
		this.bossDecide(false);
		this.checkTasks();
	}
	public void test4DayAndChiefApprove() throws Exception {

		this.deployProcessDefinition();
		this.createProcessInstance();
		this.userWriteRequest(4);
		this.chiefDecide(true);
		this.checkTasks();
	}

	
	*/
	protected void deployProcessDefinition() throws Exception {

		System.out.println("==MyRequestProcessTest.deployProcessDefinition()==");
		FileInputStream fis = new FileInputStream(
				"E://JAVA_PROJECT//workspace//jbpm.3//src//java.jbpm//com//myrequest//processdefinition.xml");
		pdf = ProcessDefinition.parseXmlInputStream(fis);
		assertNotNull("Definition should not be null", pdf);
	}

	protected void createProcessInstance() throws Exception {
		System.out.println("==MyRequestProcessTest.createProcessInstance()==");
		assertNotNull("Definition should not be null", pdf);
		pi = new ProcessInstance(pdf);
		assertNotNull("processInstance should not be null", pi);
		Join join_Request = (Join) pi.getProcessDefinition().getNode(
				"Join_Request");
		assertNotNull("should find join_request node !", join_Request);
		join_Request.setDiscriminator(true);
		// 设置申请人
		pi.getContextInstance().createVariable(RequestVariable.userId,
				this.userId);
		// 设置流程运行是,部门主管是否在岗
		pi.getContextInstance().createVariable(RequestVariable.isChiefHere,
				new Boolean(this.isChiefHere));
		// 启动流程
		pi.getRootToken().signal();
		System.out.println("==MyRequestProcessTest.createProcessInstance()==");
	}

	/**
	 * 
	 * @param daycount
	 *            请假天数
	 * 
	 */

	protected void userWriteRequest(int daycount) {
		System.out.println("++++++++++++++++++++++ MyRequestProcessTest.userWriteRequest()++++++++++++++++++++++ ");
		
		TaskMgmtInstance taskMgmtInstance  =  pi.getTaskMgmtInstance();
		
		TaskInstance wr = (TaskInstance) taskMgmtInstance
				.getTaskInstances().iterator().next();
		System.out.println("++++++++++++++++++++++ MyRequestProcessTest.userWriteRequest()++++++++++++++++++++++ ");
		assertEquals(this.userId, wr.getActorId());
		System.out.println("++++++++++++++++++++++ MyRequestProcessTest.userWriteRequest()++++++++++++++++++++++ ");
		ContextInstance ci = pi.getContextInstance();
		System.out.println("++++++++++++++++++++++ MyRequestProcessTest.userWriteRequest()++++++++++++++++++++++ ");
		ci.setVariable("dayCount", new Integer(daycount));
		System.out.println("++++++++++++++++++++++ MyRequestProcessTest.userWriteRequest()++++++++++++++++++++++ ");
		wr.end();
		System.out.println("++++++++++++++++++++++ userWrite Task end ++++++++++++++++++++++");
	}

	/**
	 * 
	 * @param isApprove
	 *            部门主管是否同意请假
	 * 
	 */

	protected void chiefDecide(boolean isApprove) {
		System.out.println("==MyRequestProcessTest.chiefDecide()==");
		// String chiefId="today123";
		/**
		 * 
		 * 如果后台使用数据库的话,就可以使用
		 * 
		 * org.jbpm.db.TaskMgmtSession.findTaskInstances(java.lang.String
		 * actorId) 得到所有分配给chiefId的taskInstance
		 * 
		 */
		Collection coll = pi.getTaskMgmtInstance().getTaskInstances();
		Iterator it = coll.iterator();
		while (it.hasNext()) {
			TaskInstance ti = (TaskInstance) it.next();
			if (ti.getName().equals("Task_ChiefDecide")) {
				assertEquals("today123", ti.getActorId());
				if (isApprove)
					ti.end("Tr_ChiefApprove");
				else

					ti.end("Tr_ChiefNotApprove");

				return;
			}
		}
	}
	/**
	 * 
	 * @param isApprove
	 *            老板是否同意请假
	 * 
	 */
	protected void bossDecide(boolean isApprove) {
		System.out.println("==MyRequestProcessTest.bossDecide()==");
		// String bossId="elena";
		/**
		 * 
		 * 如果后台使用数据库的话,就可以使用
		 * 
		 * org.jbpm.db.TaskMgmtSession.findTaskInstances(java.lang.String
		 * actorId) 得到所有分配给bossId的taskInstance
		 * 
		 */
		Collection coll = pi.getTaskMgmtInstance().getTaskInstances();
		Iterator it = coll.iterator();

		while (it.hasNext()) {
			TaskInstance ti = (TaskInstance) it.next();
			if (ti.getName().equals("Task_BossDecide")) {
				assertEquals("elena", ti.getActorId());
				if (isApprove)
					ti.end("Tr_BossApprove");
				else
					ti.end("Tr_BossNotApprove");
				return;
			}
		}
	}

	protected void userCancel() {
		System.out.println("==MyRequestProcessTest.userCancel()==");
		/**
		 * 
		 * 如果后台使用数据库的话,就可以使用
		 * 
		 * org.jbpm.db.TaskMgmtSession.findTaskInstances(java.lang.String
		 * actorId) 得到所有分配给userid的taskInstance
		 * 
		 */
		Collection coll = pi.getTaskMgmtInstance().getTaskInstances();
		Iterator it = coll.iterator();

		while (it.hasNext()) {
			TaskInstance ti = (TaskInstance) it.next();
			if (ti.getName().equals("Task_CancelRequest")) {
				assertEquals(this.userId, ti.getActorId());
				ti.end();
				return;
			}
		}
	}

	protected void checkTasks() {
		System.out.println("==MyRequestProcessTest.checkTasks()==");
		Collection coll = pi.getTaskMgmtInstance().getTaskInstances();
		Iterator it = coll.iterator();
		System.out.println("====Process has task:====");

		while (it.hasNext()) {
			TaskInstance ti = (TaskInstance) it.next();
			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 + -