/**
*
*/
package com.zhangrun.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipInputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.jbpm.api.Configuration;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.RepositoryService;
import org.jbpm.api.TaskService;
import org.jbpm.api.task.Task;
import org.jbpm.pvm.internal.cfg.ConfigurationImpl;
import org.jbpm.pvm.internal.env.EnvironmentFactory;
import org.jbpm.pvm.internal.env.EnvironmentImpl;
import org.jbpm.pvm.internal.history.HistoryEvent;
import org.jbpm.pvm.internal.history.events.TaskActivityStart;
import org.jbpm.pvm.internal.model.ExecutionImpl;
import org.jbpm.pvm.internal.session.DbSession;
import org.jbpm.pvm.internal.task.TaskImpl;
/**
* @author zr
*
*/
public class Huigao extends HttpServlet {
private static final long serialVersionUID = 1L;
public TaskService taskService = null;
public ProcessInstance processInstance = null;
public RepositoryService repositoryService = null;
public ExecutionService executionService = null;
public void init() {
taskService = Configuration.getProcessEngine().getTaskService();
repositoryService = Configuration.getProcessEngine()
.getRepositoryService();
executionService = Configuration.getProcessEngine()
.getExecutionService();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) {
process(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) {
process(request, response);
}
public void process(HttpServletRequest request, HttpServletResponse response) {
String buzou = request.getParameter("buzou");
String id = request.getParameter("id");
if ("deploy".equals(buzou)) {
deploy(request, response);
} else if ("getTaskList".equals(buzou)) {
String username = request.getParameter("username");
request.setAttribute("tasklist", getTaskList(username));
} else if ("start".equals(buzou)) {
startpd(id);
} else if ("delpd".equals(buzou)) {
delpd(id);
} else if ("delpi".equals(buzou)) {
delpi(id);
} else if ("endpi".equals(buzou)) {
endpi(id);
} else if ("tohuigao".equals(buzou)) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("select", "huigao");
taskService.setVariables(id, map);
taskService.completeTask(id);
} else if ("tobanwen".equals(buzou)) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("select", "banwen");
taskService.setVariables(id, map);
taskService.completeTask(id);
} else if ("huigao1".equals(buzou) || "huigao2".equals(buzou) || "huigao3".equals(buzou)) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("username", request.getParameter("username"));
executionService.signalExecutionById(id, map);
} else if ("banwen".equals(buzou)) {
taskService.completeTask(id);
} else if ("addhuiqian3".equals(buzou)){
addhuiqian(id,request.getParameter("executionid"));
} else if ("editForm".equals(buzou)){
try {
request.getRequestDispatcher("/form_baowen.html").forward(
request, response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return ;
}
request.setAttribute("pdlist", getProcessDefinition(request, response));
request.setAttribute("pilist", getProcessInstance(request, response));
try {
request.getRequestDispatcher("/countersignature.jsp").forward(
request, response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
// 增加会签
private void addhuiqian(String taskid, String executionid){
TaskImpl superTask = getSuperTask(taskid);
Task task = taskService.newTask(superTask.getId());
task.setAssignee("huigao3");
task.setName("huigao3");
taskService.saveTask(task);
}
private TaskImpl getSuperTask(String taskid){
EnvironmentFactory environmentFactory = null;
EnvironmentImpl environmentImpl = null;
DbSession dbsession = null;
try {
environmentFactory = (EnvironmentFactory) new ConfigurationImpl()
.buildProcessEngine();
environmentImpl = environmentFactory.openEnvironment();
dbsession = environmentImpl.get(DbSession.class);
TaskImpl taskimpl = (TaskImpl) dbsession.get(
TaskImpl.class, Long.parseLong(taskid));
TaskImpl superTask = taskimpl.getSuperTask();
return superTask;
} finally {
if (environmentImpl != null)
environmentImpl.close();
}
}
// 查找username的任务列表
private List<String[]> getTaskList(String username) {
List<Task> list = taskService.createTaskQuery().assignee(username)
.list();
Iterator<Task> iter = list.iterator();
List<String[]> returnList = new ArrayList<String[]>();
while (iter.hasNext()) {
String[] str = new String[5];
Task task = iter.next();
str[0] = task.getId();
str[1] = task.getName();
str[2] = task.getActivityName();
str[3] = task.getExecutionId();
str[4] = username;
String executionid = task.getExecutionId();
// 如果该task没有executionid,则从父task获得executionid
if (executionid == null || executionid.equals("")) {
EnvironmentFactory environmentFactory = null;
EnvironmentImpl environmentImpl = null;
try {
environmentFactory = (EnvironmentFactory) new ConfigurationImpl()
.buildProcessEngine();
environmentImpl = environmentFactory.openEnvironment();
DbSession dbsession = environmentImpl.get(DbSession.class);
TaskImpl taskimpl = (TaskImpl) dbsession.get(
TaskImpl.class, Long.parseLong(str[0]));
executionid = taskimpl.getSuperTask().getExecutionId();
} finally {
if (environmentImpl != null)
environmentImpl.close();
}
}
str[3] = executionid;
returnList.add(str);
}
return returnList;
}
// 取得流程实例列表
private List<ProcessInstance> getProcessInstance(
HttpServletRequest request, HttpServletResponse response) {
return executionService.createProcessInstanceQuery().list();
}
// 取得流程定义列表(所有)
private List<ProcessDefinition> getProcessDefinition(
HttpServletRequest request, HttpServletResponse response) {
return repositoryService.createProcessDefinitionQuery().list();
}
// 启动流程
private void startpd(String id) {
processInstance = executionService.startProcessInstanceById(id);
}
private void delpd(String id) {
repositoryService.deleteDeployment(id);
}
private void endpi(String id) {
executionService.endProcessInstance(id, ExecutionImpl.STATE_ENDED);
}
private void delpi(String id) {
executionService.deleteProcessInstance(id);
}
// 发布流程
private void deploy(HttpServletRequest request, HttpServletResponse response) {
try {
boolean isMultipart = ServletFileUpload.isMultipartContent(request);// 检查输入请求是否为multipart表单数据。
if (isMultipart == true) {
FileItemFactory factory = new DiskFileItemFactory();// 为该请求创建一个DiskFileItemFactory对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个Li
jbpm 4.3 实现会签
4星 · 超过85%的资源 需积分: 9 34 浏览量
2010-05-13
20:12:31
上传
评论
收藏 6KB ZIP 举报
akavyi
- 粉丝: 31
- 资源: 72
最新资源
- 使用纯粹的PHP 编写的 kafka 客户端kafka-php-master.zip
- PS插件Photoshop-LayersToPNG-JH-v1.5.1.jsx
- 基于STM32单片机心率脉搏监测健康运动计步系统源码带视频演示.7z
- mmexport1713192608513.mp4
- 斯特林V4发动机 斯特林V4发动机
- 基于C实现的N阶数字正方形 ;N阶数字三角形;N阶数字递减三角形;乘法表
- 基于分水岭算法的图像分割的python源码(课程设计).zip
- 基于Java 实现的二进制十进制之间的相互转换
- Pytorch实现基于卷积神经网络的面部表情识别项目源码+数据集+全部资料(毕业设计).zip
- Pytorch实现基于深度学习卷积神经网络的面部表情识别项目源码+面部表情数据集(人脸面部表情识别项目).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈