📄 approveactionhandler.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 + -