`

jBPM4之请假流程例子

    博客分类:
  • J2EE
 
阅读更多
最近项目需要工作流,所以就准备采用jBPM4作为工作流引擎,
才开始接触,很多东西都是一步一步摸索出来的,当然了,也搜索了一些文章,下面就是这两天使用jBPM4做的一个请假的例子.
流程比较简单,流程图如下:
本来作为才开始学习JBPM的人来说,最好的方法就是先运行起程序,然后学习就要方便很多。
下面是我的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;
/**
 * 请假流程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);
		}
	}

}

好了,要想查看详细的源码,下载我上传的压缩包吧。
如果你使用的tomcat6, 出现java.lang.LinkageError这个错误的话,那么可以参考http://blog.csdn.net/ol_beta/article/details/5553473这个文章。

还有不要忘记添加JBPM的jar包哦
分享到:
评论

相关推荐

    jbpm4.4+s2sh请假流程例子

    【jbpm4.4+s2sh请假流程例子】是一个典型的结合了jbpm4.4工作流引擎和Struts2、Spring、Hibernate(S2SH)框架的实战项目,旨在演示如何在企业级应用中实现一个完整的请假流程。在这个例子中,jbpm4.4作为流程管理的...

    jbpm4的员工请假例子原码

    【jbpm4的员工请假例子原码】是一个基于jbpm4流程引擎的示例项目,展示了如何在企业中实现一个简单的员工请假流程。这个Web项目是完全开源的,可以通过Eclipse这样的集成开发环境来打开和运行,对于学习和理解jbpm4...

    JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子

    JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子。带有文档教程和所有源码+JAR包。在网上找了半天jbpm6\jbpm7的资料,都很少。所以 环境:Myeclipse2015 JDK1.7 mysql 5.0 Struts2+Spring3.1 1...

    jbpm4web请假例子,eclipse项目,下卷。

    【jbpm4web请假例子】是一个基于JBPM4工作流引擎的示例应用,它演示了如何在Eclipse环境中开发和部署一个简单的请假流程。这个例子可以帮助开发者理解工作流管理系统的基本概念,以及如何将它们集成到实际的Web应用...

    jbpm4.4-请假流程

    【jbpm4.4-请假流程】是一个基于Java开发的流程引擎示例,主要用于演示如何在企业级应用中实现请假流程。jbPM是Java Business Process Management的缩写,它是一个开源的工作流和业务流程管理系统,提供了对BPMN 2.0...

    JBPM4 ,请假例子。用于初级了解

    【JBPM4:一个初级了解的请假流程实例】 JBPM(Java Business Process Management)是一款开源的工作流管理系统,它提供了一套完整的解决方案,用于设计、执行和管理业务流程。JBPM4是JBPM的一个版本,专注于简化...

    JBPM4.3工作流请假流程例子

    【JBPM4.3工作流请假流程例子】是基于Myeclipse8.5M和JBPM4.3的集成应用,旨在演示如何构建一个实际的请假流程。在本文中,我们将深入探讨JBPM(Java Business Process Management)的核心概念,以及如何在实际开发...

    JBPM-员工请假流程实例

    此实例包括的是一个员工请假审批的流程实例,和流程相关的代码以及相应的测试代码。此流程在Eclipse3.1.2 ,JBoss-IDE 1.6环境下测试通过。 说明,这篇文章说使用的流程实例是,学习《一个JBPM工作流管理示例》文章中...

    jbpm4.4整合s2sh 请假流程例子

    jbpm4.4整合s2sh 请假流程例子,项目很好,是学习JBPM的很好的例子,已经测试过,很好用,可以下载后好好研究一下

    jbpm4.4请假例子,eclipse工程

    【jbpm4.4请假例子】是一个基于jbpm4.4流程引擎的示例项目,它展示了一个在Eclipse环境中开发的请假流程。jbPM(Java Business Process Management)是一个开源的工作流和业务流程管理框架,它允许开发者设计、执行...

    jbpm4.3工作流程管理例子

    在这个例子中,我们可能看到一个请假流程的实现。这个流程可能包括申请、审批、驳回等环节,涉及不同角色如员工、部门经理和人力资源部门。通过jbpm4.3,我们可以定义每个角色的任务,设置审批规则,以及处理可能...

    jBPM4完整例子

    这个"jBPM4完整例子"是一个基于SSH(Struts2、Spring、Hibernate)框架集成jBPM4.4的请假流程应用,非常适合初学者了解如何在实际项目中运用jBPM4进行工作流开发。 首先,我们来详细了解一下SSH框架。SSH是Java Web...

    jbpm4.4 请假的例子,包含Jar包,实现回退功能可以运行

    在这个例子中,可能会有一个名为`jbpm-test`的部署单元,其中包含了请假流程的相关配置和定义。 3. **回退功能实现** 在业务流程中,回退功能允许用户或管理员撤销当前状态,回到之前的某个步骤。JBPM提供了API来...

    一个简单的jbpm 请假流程

    4. **jbpm服务任务和人工作流**:在请假流程中,可能会涉及到服务任务,如调用后台业务系统进行请假天数计算。同时,人工作流(Human Task)是流程中不可或缺的部分,例如请假申请需要经理审批,这就涉及到任务的...

    jbpm请假例子完整源代码

    **jbpm请假例子完整源代码**是一套基于jbpm流程引擎的示例应用,它用于演示如何在实际项目中利用jbpm实现一个简单的请假流程。jbpm是一个开源的工作流管理系统,它提供了强大的业务流程建模、执行和管理能力。本示例...

    jbpm 请假示例 简易 修改版

    【jbpm 请假示例 简易 修改版】是一个基于jbpm工作流引擎的简单应用实例,旨在演示如何在企业级环境中实现一个请假流程。jbpm是一个开源的工作流管理系统,它提供了完整的业务流程自动化解决方案,包括流程设计、...

    jbpm3.2.2工作流入门例子

    在jbpm3.2.2入门例子中,你可以看到如何创建简单的流程,如请假审批流程,包括开始节点、结束节点、用户任务(User Task)以及审批决策节点(Decision Node)。 在jbpm中,任务管理是重要的部分,它涉及到任务的...

    jbpm4.0三个例子

    1. **LeaveJbpm**:这个示例可能是一个请假流程的应用,展示了如何在jbpm4中定义一个工作流,包括请假申请、审批等步骤。用户可以通过编写Java代码启动流程实例,同时也可以设置监听器来跟踪流程状态的变化,实现...

    jbpm4+ssh集成的例子

    `leave.jpdl.xml`文件就是这样一个例子,它定义了一个请假流程,包括各个步骤、转移条件和参与者等。通过SSH框架,这些流程定义可以在运行时动态加载和执行。 2. **Spring集成**:Spring作为核心容器,可以管理jbPM...

Global site tag (gtag.js) - Google Analytics