📄 firstflowprocessdbtest.java
字号:
/**
*
*/
package com.firstflow;
import java.util.List;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.context.exe.ContextInstance;
import org.jbpm.db.GraphSession;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.taskmgmt.exe.TaskInstance;
/**
* @author linly
* com.firstflow.FirstFlowProcessDBTest
* Mar 24, 2008
*/
public class FirstFlowProcessDBTest {
/*
* 初始化jBPM配置
* 包含对Hibernate的数据库初始化
*/
static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
public static void main(String[] args){
FirstFlowProcessDBTest test = new FirstFlowProcessDBTest();
test.test4000YuanApplication();
test.test6000YuanApplication();
test.test7000YuanApplication();
}
public void test4000YuanApplication(){
ProcessInstance pi = createProcessInstance("linly");
submitApplication("linly" , 4000);
approveByManager(true);
checkTasks(pi);
}
public void test6000YuanApplication() {
ProcessInstance pi = createProcessInstance("linly");
submitApplication("linly" , 6000);
approveByManager(true);
approveByPresident(true);
checkTasks(pi);
}
public void test7000YuanApplication() {
ProcessInstance pi = createProcessInstance("linly");
submitApplication("linly" , 7000);
approveByManager(true);
approveByPresident(false);
checkTasks(pi);
}
/**
* 生成流程实例
*/
protected ProcessInstance createProcessInstance(String user){
System.out.println("==FirstFlowProcessTest.createProcessInstance()==");
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try {
GraphSession graphSession = jbpmContext.getGraphSession();
/*
* 从数据库获取指定的流程定义
*/
ProcessDefinition pdf = graphSession.findLatestProcessDefinition("simple");
//生成流程实例
ProcessInstance pi = pdf.createProcessInstance();
//设置流程发起人
pi.getContextInstance().createVariable("initiator", user);
//触发流程转向
pi.signal();
/*
* 保存流程实例
*/
jbpmContext.save(pi);
return pi;
}finally{
jbpmContext.close();
}
}
/**
* 填写提交申请单
* @param money
*/
@SuppressWarnings("unchecked")
protected void submitApplication(String actorId , int money){
System.out.println("==FirstFlowProcessTest.submitApplication()==");
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try {
/*
* 如果后台使用数据库的话,就可以使用
* JbpmContext.getTaskList(java.lang.String actorId) 得到所有分配给actorId的taskInstance
*/
List<TaskInstance> taskInstances = jbpmContext.getTaskList(actorId);
for(TaskInstance ti : taskInstances){
System.out.println("ti.name = " + ti.getName());
System.out.println("ti.actor = " + ti.getActorId());
ContextInstance ci = ti.getContextInstance();
ci.setVariable("money",new Integer(money));
ti.end();
}
}finally{
jbpmContext.close();
}
}
/**
* 部门经理审批
* @param pass
*/
@SuppressWarnings("unchecked")
protected void approveByManager(boolean pass){
System.out.println("==FirstFlowProcessTest.approveByManager()==");
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try{
List<TaskInstance> taskInstances = jbpmContext.getTaskList("DepartmentManager");
for(TaskInstance ti : taskInstances){
System.out.println("ti.name = " + ti.getName());
System.out.println("ti.actor = " + ti.getActorId());
if(pass){
ti.end("部门经理审批通过");
}else{
ti.end("部门经理驳回");
}
}
}finally{
jbpmContext.close();
}
}
/**
* 总经理审批
* @param pass
*/
@SuppressWarnings("unchecked")
protected void approveByPresident(boolean pass){
System.out.println("==FirstFlowProcessTest.approveByPresident()==");
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try{
List<TaskInstance> taskInstances = jbpmContext.getTaskList("President");
for(TaskInstance ti : taskInstances){
System.out.println("ti.name = " + ti.getName());
System.out.println("ti.actor = " + ti.getActorId());
if(pass){
ti.end("总经理审批通过");
}else{
ti.end("总经理驳回");
}
}
}finally{
jbpmContext.close();
}
}
/**
* 打印任务记录
*/
@SuppressWarnings("unchecked")
protected void checkTasks(ProcessInstance pi){
System.out.println("==FirstFlowProcessTest.checkTasks()==");
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try{
List<TaskInstance> coll = jbpmContext.getTaskMgmtSession().findTaskInstancesByProcessInstance(pi);
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====");
}finally{
jbpmContext.close();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -