黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

jBPM4之請(qǐng)假流程例子

系統(tǒng) 2196 0
最近項(xiàng)目需要工作流,所以就準(zhǔn)備采用jBPM4作為工作流引擎,
才開(kāi)始接觸,很多東西都是一步一步摸索出來(lái)的,當(dāng)然了,也搜索了一些文章,下面就是這兩天使用jBPM4做的一個(gè)請(qǐng)假的例子.
流程比較簡(jiǎn)單,流程圖如下:
本來(lái)作為才開(kāi)始學(xué)習(xí)JBPM的人來(lái)說(shuō),最好的方法就是先運(yùn)行起程序,然后學(xué)習(xí)就要方便很多。
下面是我的servlet文件;
    
package com.vito.jbpm.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.jbpm.api.Configuration;
import org.jbpm.api.Execution;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.RepositoryService;
import org.jbpm.api.TaskService;
import org.jbpm.api.model.ActivityCoordinates;
import org.jbpm.api.task.Task;
/**
 * 請(qǐng)假流程Servlet
 * @author 周文滔 <zhouwentao16@gmail.com>
 * @time 2012-5-27 下午05:39:32
 */
public class LeaveServlet extends HttpServlet {
	private ProcessEngine processEngine = null;
	private RepositoryService repositoryService = null;
	private ExecutionService executionService = null;
	private ProcessInstance processInstance = null;
	private TaskService taskService = null;

	public LeaveServlet() {
		super();
	}

	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		// 獲取流程引擎
		processEngine = new Configuration().buildProcessEngine();
		repositoryService = processEngine.getRepositoryService();
		executionService = processEngine.getExecutionService();
		taskService = processEngine.getTaskService();
	}

	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		process(request, response);
	}

	protected void process(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		String action = request.getParameter("action");
		HttpSession session = request.getSession();
		if (action.equals("leave")) {
			request.getRequestDispatcher("").forward(request, response);
		} else if (action.equals("list")) {
			String username = (String) session.getAttribute("username");
			List<ProcessDefinition> pdList = repositoryService
					.createProcessDefinitionQuery().list();
			List<ProcessInstance> piList = executionService
					.createProcessInstanceQuery().list();
			List<Task> taskList = taskService.findPersonalTasks(username);
			session.setAttribute("pdList", pdList);
			session.setAttribute("piList", piList);
			session.setAttribute("taskList", taskList);
			request.getRequestDispatcher("list.jsp").forward(request, response);
		}else if (action.equals("start")) {
			Map map = new HashMap();
			map.put("user",session.getAttribute("username"));
			executionService.startProcessInstanceById(request.getParameter("id"),map);
			request.getRequestDispatcher("leave?action=list").forward(request, response);
		}else if (action.equals("submit")) {
			String taskId = request.getParameter("taskId");
			int day = Integer.parseInt(request.getParameter("day"));
			String reason = request.getParameter("reason");
			reason = new String(reason.getBytes("ISO-8859-1"),"UTF-8");
			Map map = new HashMap();
			map.put("days", day);
			map.put("reason", reason);
			taskService.completeTask(taskId, "to_teacher",map);
			request.getRequestDispatcher("leave?action=list").forward(request, response);
		}else if (action.equals("view")) {
			String id = request.getParameter("id");
			processInstance = executionService.findProcessInstanceById(id);
			Set<String> activityNames = processInstance.findActiveActivityNames();
			ActivityCoordinates ac = repositoryService.getActivityCoordinates(processInstance.getProcessDefinitionId(),activityNames.iterator().next());
			request.setAttribute("ac", ac);
			request.getRequestDispatcher("view.jsp").forward(request, response);
		}else if (action.equals("deploy")) {
			repositoryService.createDeployment().addResourceFromClasspath("leave.jpdl.xml").deploy();
		}else if(action.equals("sh")){
			String taskId = request.getParameter("taskId");
			String result = request.getParameter("result");
			result = new String(result.getBytes("ISO-8859-1"), "UTF-8");
			System.out.println(result);
			taskService.completeTask(taskId, result);
			request.getRequestDispatcher("leave?action=list").forward(request, response);
		}
	}

}

  

好了,要想查看詳細(xì)的源碼,下載我上傳的壓縮包吧。
如果你使用的tomcat6, 出現(xiàn)java.lang.LinkageError這個(gè)錯(cuò)誤的話,那么可以參考 http://blog.csdn.net/ol_beta/article/details/5553473 這個(gè)文章。

還有不要忘記添加JBPM的jar包哦

jBPM4之請(qǐng)假流程例子


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論