JBPM起步----无聊的测试DOME
来源:互联网 发布:在淘宝网上开店流程 编辑:程序博客网 时间:2024/05/17 03:12
package bin.feifei;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import java.io.PrintWriter;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Random;import java.util.Set;import java.util.zip.ZipInputStream;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.jbpm.api.Configuration;import org.jbpm.api.ExecutionService;import org.jbpm.api.ProcessDefinition;import org.jbpm.api.ProcessDefinitionQuery;import org.jbpm.api.ProcessEngine;import org.jbpm.api.ProcessInstance;import org.jbpm.api.RepositoryService;import org.jbpm.api.TaskQuery;import org.jbpm.api.TaskService;import org.jbpm.api.model.Activity;import org.jbpm.api.task.Task;import org.jbpm.pvm.internal.model.ActivityImpl;import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;import org.jbpm.pvm.internal.query.TaskQueryImpl;import org.jbpm.pvm.internal.task.OpenTask;import org.jbpm.pvm.internal.task.TaskImpl;import bin.util.Env;import com.oreilly.servlet.MultipartRequest;import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;public class JbpmServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String mothed = (String) request.getParameter("mothed");try {if ("deploy".equals(mothed)) { // 发布流程 no.1doDeploy(request, response);} else if ("listFlow".equals(mothed)) { // 查询所发布的流程 no.2listFlow();} else if ("apply".equals(mothed)) { // 提交请假申请单no.3apply(request, response);} else if ("subTask".equals(mothed)) { // 发布子任务subTask(request, response);} else if ("custom".equals(mothed)) { // 发布子任务 custom(request, response);} else if ("findTask".equals(mothed)) { // 查询任务列表findTask(request, response);} else if ("complete".equals(mothed)) { // 查询任务列表complete(request, response);}else if ("deleteExecution".equals(mothed)) { // 提交请假申请单no.3deleteExecution();}} catch (Exception e) {e.printStackTrace();}} private void custom(HttpServletRequest request, HttpServletResponse response) { ProcessEngine processEngine = Configuration.getProcessEngine(); // 获取流程引擎 ExecutionService executionService = processEngine.getExecutionService(); executionService.startProcessInstanceByKey("custom", new Random().nextInt() + ""); } private void complete(HttpServletRequest request, HttpServletResponse response) {ProcessEngine processEngine = Configuration.getProcessEngine();TaskService taskService = processEngine.getTaskService();String taskId = request.getParameter("taskId");taskService.completeTask(taskId);}private void findTask(HttpServletRequest request, HttpServletResponse response) throws Exception {ProcessEngine processEngine = Configuration.getProcessEngine();TaskService taskService = processEngine.getTaskService();TaskQueryImpl taskQuery = (TaskQueryImpl)processEngine.getTaskService().createTaskQuery();String id = request.getParameter("id");TaskImpl taskImpl = (TaskImpl)taskQuery.processInstanceId(id).uniqueResult();List<Task> taskList = taskService.getSubTasks(taskImpl.getDbid()+"");request.setAttribute("taskList", taskList); forward("/taskList.jsp");}private void subTask(HttpServletRequest request, HttpServletResponse response) {ProcessEngine processEngine = Configuration.getProcessEngine(); // 获取流程引擎ExecutionService executionService = processEngine.getExecutionService();TaskService taskService = processEngine.getTaskService();System.out.println("--------------findPersonalTasks-----------------------------");ProcessInstance pi = executionService.startProcessInstanceByKey("subTask", new Random().nextInt() + "");}/** * @description 发布流程 no.1 */private void doDeploy(HttpServletRequest request, HttpServletResponse response) throws IOException {ServletOutputStream writer = response.getOutputStream();try {ProcessEngine processEngine = Configuration.getProcessEngine(); // 获取流程引擎RepositoryService repositoryService = processEngine.getRepositoryService();String filePath = getServletContext().getRealPath("/upload");File file = new File(filePath);if (!file.exists()) {file.mkdir();}MultipartRequest multi = new MultipartRequest(request, filePath, 1024 * 1024, "UTF-8", new DefaultFileRenamePolicy());FileInputStream fileIS = new FileInputStream(multi.getFile("flowFile"));ZipInputStream zip = new ZipInputStream(fileIS);// 创建流程实例 .setTimestamp(new Date().getTime()).setName("xuxiongbin");// 可以设置时间和发布人System.out.println("--------------------------------------------");repositoryService.createDeployment().addResourcesFromZipInputStream(zip).deploy();} catch (Exception e) {e.printStackTrace();writer.print("发布失败");}}/** * @description 查询所发布的流程 no.2 */private void listFlow() throws Exception {ProcessEngine processEngine = Configuration.getProcessEngine(); // 获取流程引擎RepositoryService repositoryService = processEngine.getRepositoryService();ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();/*--- 一些查询条件query.processDefinitionNameLike(processName);query.processDefinitionKey(processKey);query.processDefinitionId(processId);query.notSuspended(); //活动中query.suspended(); //暂停query.page(start, pager.getPageSize());query.count();*/Env.getEnv().getRequest().setAttribute("flowList", query.list());forward("/flowList.jsp");}private void apply(HttpServletRequest request, HttpServletResponse response) {ProcessEngine processEngine = Configuration.getProcessEngine(); // 获取流程引擎ExecutionService executionService = processEngine.getExecutionService();TaskService taskService = processEngine.getTaskService();String user = request.getParameter("user");Boolean isManager = Boolean.parseBoolean(request.getParameter("isManager"));int day = Integer.parseInt(request.getParameter("day"));Map<String, Object> param = new HashMap<String, Object>();param.put("user", user);param.put("isManager", isManager.booleanValue());param.put("day", day);System.out.println("--------------findPersonalTasks-----------------------------");ProcessInstance pi = executionService.startProcessInstanceByKey("leave", param, new Random().nextInt() + "");System.out.println("--------------findPersonalTasks-----------------------------");List<Task> taskList = taskService.findPersonalTasks("feifeiJL"); }private void forward(String url) throws Exception {RequestDispatcher dispatcher = Env.getEnv().getRequest().getRequestDispatcher(url);dispatcher.forward(Env.getEnv().getRequest(), Env.getEnv().getResponse());}private void deleteExecution(){ProcessEngine processEngine = Configuration.getProcessEngine(); // 获取流程引擎ExecutionService executionService = processEngine.getExecutionService();System.out.println("--------------------------------------------");//executionService.deleteProcessInstanceCascade("leave.-1700445529");System.out.println("--------------------------------------------");ProcessInstance pi = executionService.findProcessInstanceById("leave.-1700445529");System.out.println(pi.getProcessInstance());System.out.println(pi.getId());RepositoryService repositoryService = processEngine.getRepositoryService();ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().processDefinitionId(pi.getProcessDefinitionId()).uniqueResult();ProcessDefinitionImpl definitionimpl = (ProcessDefinitionImpl)definition;List<? extends Activity> list = definitionimpl.getActivities();Map<String, ActivityImpl> map = (Map<String, ActivityImpl>) definitionimpl.getActivitiesMap();for (Activity activity : list) {System.out.println(activity.getName());}}}
<?xml version="1.0" encoding="UTF-8"?><process name="leave" key="leave" xmlns="http://jbpm.org/4.4/jpdl"> <start g="313,80,48,48" name="start1"> <transition g="-83,-17" name="是否经理" to="exclusive1"/> </start> <decision expr="#{isManager ? '老板' : '经理'}" g="314,159,48,48" name="exclusive1"> <transition g="227,184:-53,-17" name="经理" to="经理"/> <transition g="460,180:-53,-17" name="老板" to="老板"/> </decision> <task assignee="feifeiJL" g="184,238,92,52" name="经理" > <transition to="end1" g="237,506:-47,-17"/> <transition name="需要老板审核" to="老板" g="-47,-17"/> </task> <task assignee="feifeiLB" g="418,360,92,52" name="老板" > <transition to="end1" g="470,498:"/> </task> <end g="331,482,48,48" name="end1"/> </process>
<field name="fei">
<object expr="#{fei}"/>
</field>
- JBPM起步----无聊的测试DOME
- JBPM起步----无聊的测试DOME
- JBPM起步----无聊的测试DOME
- 无聊的学习记录---C# 起步
- 无聊的姓名测试
- 无聊的测试--浮点&
- 无聊的测试-strcpy
- 无聊的测试-union
- Java---Memcache测试Dome
- Java---Memcache测试Dome
- Java---Memcache测试Dome
- clientWidth、offsetWidth、scrollWidth、clientLeft、offsetLeft、scrollLeft的测试Dome
- clientWidth、offsetWidth、scrollWidth、clientLeft、offsetLeft、scrollLeft的测试Dome
- clientWidth、offsetWidth、scrollWidth、clientLeft、offsetLeft、scrollLeft的测试Dome
- 无聊的测试-奇怪的赋值
- JBPM4.4---ForEach测试Dome
- JBPM4.4---ForEach测试Dome
- JBPM4.4---ForEach测试Dome
- POJ并查集小结
- Git常用命令
- 处理器 深度节能技术和深层睡眠状态带来的区别是什么
- gcc 参数
- [Java] Netty Websocket Server Javascript Client
- JBPM起步----无聊的测试DOME
- 写拼车网过程中遇到的问题及解决方法
- 求n + nn + nnn + nnnn + .... = 用C语言
- android:gravity 和 android:layout_Gravity属性的区别和使用
- iOS应用目录
- Git命令解析
- Redis数据库的键值设计
- 简析 Time_Wait
- 进程间通信——管道