`

JBPM4简单入手的小例子

阅读更多

最近学习jbpm4.3.一个工作流框架。
准备工作请参考jbpm4.3用户指南。注意的地方就是jbpm.hibernate.cfg.xml里配置数据库连接。另外在jbpm4.3zip包下install的db里执行对应数据库的初始化脚本.

start...
关键对象
Configuration
ProcessEngine
RepositoryService
ExecutionService
TaskService
HistoryService
ManagementService

其用法请参考用户指南.
本例子流程图如下:

A用户提出请假申请--》B用户审批--》C用户审批。流程结束。
这个例子只用到两张自定义表,用作演示,一张为用户表,仅有username和password字段。用作登录验证
另一张为请假表单表,记录每一例请假表单,有id,title,content,process_id字段.其中process_id和jbpm4的流程实例关联。
index.jsp关键代码如下:
----------------------------------------------------------------------------------------------
  <form action="login" method="post">
   <label for="username" >用户名:</label>
   <input type="text" name="username" id="username" /><br/>
   <label for="password" >密码:</label>
   <input type="password" name="password" id="password" /><br/>
   <input class="submit" type="submit" value="登录" />
  </form>
----------------------------------------------------------------------------------------------
action对应为登录验证的login servlet,这个比较简单,就是从user表中找记录
登录成功后跳转至welcome.jsp页面,关键代码如下:
<div>
 <div class="navigate">
  <ul>
   <li><a href="todolist" target="result" onclick="javascript:document.getElementById('ifr').src=todolist">代办事项</a></li>
   <li><a href="postleave" target="result" onclick="javascript:document.getElementById('ifr').src=postleave">请假申请</a></li>
   <li><a href="deployleave" target="result">部署请假流程</a></li>
   <li><a href="logout">注销</a></li>
  </ul>
 </div>
 <div class="main">
  <iframe src="" width="99%" height="99%" frameborder="0" id="ifr" name="result"></iframe>
 </div>
</div>

页面分为左右两部分,左边为导航区,点击相应链接,右边显示相应模块
点击请假申请,右边弹出请假表单,填写完成后,点击提交,即启动一个请假流程实例。这个例子先要初始化请假流程,初始化请假流程关键代码如下:
DeployServlet.java
------------------------------------------------------------------------------------------
  ProcessEngine conf = new Configuration().buildProcessEngine();
  RepositoryService repositoryService = conf.getRepositoryService();
  String flowid = repositoryService.createDeployment()
    .addResourceFromClasspath("com/wing/jbpm/leave/leave.jpdl.xml")
    .deploy();
  if (flowid != null) {
   resp.setCharacterEncoding("utf-8");
   resp.getWriter().write("<script>alert('流程部署成功');</script>");
   conf = null;
  }
------------------------------------------------------------------------------------------
提交请假表单启动流程实例关键代码如下:
PostLeave.java
------------------------------------------------------------------------------------------
  ProcessEngine engine = new Configuration().buildProcessEngine();
  ExecutionService executionService = engine.getExecutionService();
  String instanceid = executionService.startProcessInstanceByKey("leave").getId();
  req.setCharacterEncoding("utf-8");
  String id = req.getParameter("id");
  String title = req.getParameter("title");
  String content = req.getParameter("content");
  try {
   DBUtil.save(id,title,content,instanceid);  //保存请假表单字段
   resp.setCharacterEncoding("utf-8");
   resp.getWriter().write("<script>alert('成功提交请假申请');</script>");
   engine = null;
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
--------------------------------------------------------------------------------------------
A提交后,请假流程的一个实例已经启动了,通过以下方法获取B用户的待办事件.即是处理请假流程实例.
Todolist.java
----------------------------------------------------------------------------------------------------------------
  User user = (User)req.getSession().getAttribute("user");
  ProcessEngine engine = new Configuration().buildProcessEngine();
  TaskService taskService = engine.getTaskService();
  List<Task> tasklist = taskService.findPersonalTasks(user.getUsername());
  List<MyTask> myTaskList = null;
  try {
   myTaskList = DBUtil.getMyTaskList(tasklist);
   engine = null;
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
---------------------------------------------------------------------------------------------------------------
既然B用户得到了待办任务列表,那么他可以处理任务了,处理任务的代码比较简单,如下:
DealServlet.java
---------------------------------------------------------------------------------------------------------------
  ProcessEngine engine = new Configuration().buildProcessEngine();
  TaskService taskService = engine.getTaskService();
  taskService.completeTask(req.getParameter("id")); //其中的id为Task.getId();
  engine = null;
  resp.sendRedirect("todolist");
---------------------------------------------------------------------------------------------------------------
这是一个最最简单的jbpm4.3,苦于网上关于jbpm4.3的资料比较少,自己琢磨了好一阵子。

//待续,jbpm学习二
JBPM 4.3设计器乱码

在eclipse.ini末尾一行加上:

 

-Dfile.encoding=UTF-8
分享到:
评论

相关推荐

    JBPM4与Spring整合例子代码

    在"风中叶老师讲的JBPM4与Spring整合例子代码"中,我们可以了解到如何将这两个强大的工具结合在一起,以实现企业级工作流的自动化处理。下面将深入探讨这一整合的关键知识点: 1. **Spring配置JBPM4**:首先,我们...

    jbpm4的员工请假例子原码

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

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

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

    jBPM4完整例子

    **jBPM4完整例子详解** jBPM4是一个企业级的工作流管理系统,它提供了强大的业务流程管理和工作流实现能力。这个"jBPM4完整例子"是一个基于SSH(Struts2、Spring、Hibernate)框架集成jBPM4.4的请假流程应用,非常...

    jbpm4.4入门编程小例子

    **jbpm4.4入门编程小例子** Jbpm(Java Business Process Management)是一个开源的工作流管理系统,主要用于处理业务流程的建模、部署、执行和监控。jbpm4.4是该系统的较早版本,但它仍然是许多开发人员学习工作流...

    jbpm5完整的例子

    【jbpm5完整的例子】是针对企业业务流程管理(Business Process Management, BPM)的一个实践教程,其中涵盖了jbpm5框架的多个核心功能和用法。jbPM是一个开源的工作流管理系统,它提供了强大的流程定义、执行和监控...

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

    这个“请假例子”旨在帮助初学者快速理解JBPM4的基本概念和操作。 1. **流程定义**:在JBPM4中,业务流程是通过BPML(Business Process Modeling Language)或者BPMN(Business Process Model and Notation)来定义...

    jbpm4入门例子

    jbPM4的设计目标是让业务流程的建模、部署、执行以及监控变得简单易行。在这个入门例子中,我们将探讨如何在Apache Tomcat 6.0这个流行的Java应用服务器上运行jbPM4。 首先,我们需要了解jbPM4的核心组件。jbPM4...

    jbpm4和spring整合例子

    近期网上有人介绍jBPM4与Spring整合的2种方式,但没有人贴出代码,闲着无聊写了个例子,源码见附件,在WEBLOGIC下运行正常,事务由spring控制http://ip:7001/Spring/helloWorld.do

    jbpm3.2.2工作流入门例子

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

    JBPM4.4 工作流 入门 例子

    **JBPM4.4工作流入门例子 - HelloWorld** JBPM(Java Business Process Management)是一款开源的工作流管理系统,它提供了一套完整的解决方案,用于设计、执行和管理业务流程。JBPM4.4是JBPM的一个重要版本,它在4...

    jbpm4jbpm5

    jbpm4jbpm5是关于jbpm流程管理框架的专题,涵盖了jbpm4和jbpm5两个主要版本。jbpm是一个开源的工作流管理系统,用于帮助开发者实现业务流程自动化。以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. *...

    Jbpm工作流引擎使用例子

    在这个"Jbpm工作流引擎使用例子"中,我们可以深入学习如何利用Jbpm进行流程的创建、流程实例的启动与管理,以及如何将其与Java、Hibernate等技术结合使用。以下是关于这些知识点的详细讲解: 1. **Jbpm工作流引擎**...

    jBPM4之请假流程例子

    NULL 博文链接:https://lucky16.iteye.com/blog/1542908

    jbpm开发入门指南的例子

    【jbpm开发入门指南例子】 jbpm,全称是Java Business Process Management,是一个开源的工作流管理系统,用于构建业务流程应用。它提供了强大的流程定义、执行、监控和管理能力,广泛应用于企业的业务流程自动化中...

    JBPM4.4 入门小例子

    JPBM4.4入门小例子,适合刚开始准备学工作流的筒子们。。

    jbpm4.3工作流程管理例子

    在这个"jbpm4.3工作流程管理例子"中,我们将深入探讨jbpm4.3的核心特性和如何利用它来构建实际的工作流程应用。 一、jbpm4.3核心特性 1. 工作流引擎:jbpm4.3提供了强大的工作流引擎,可以执行基于流程定义的业务...

    jbpm4.0三个例子

    【jbpm4.0三个例子】是关于jbpm4版本的工作流管理系统实例的分享,主要在MyEclipse 7.5和Eclipse 3.42环境下运行。jbpm(Java Business Process Management)是一个开源的工作流和业务流程管理平台,它提供了一套...

    JBPM例子

    【JBPM例子】是关于Java Business Process Management System (JBPM) 的一系列示例代码,用于展示如何在实际项目中使用这个工作流引擎。JBPM是一个开源的企业级平台,主要用于管理和执行业务流程。它提供了全面的...

    jbpm4 测试例子(项目中含hsqldb数据库)

    **jbpm4测试例子(项目中含hsqldb数据库)** jbpm4 是一个开源的工作流管理系统,它提供了业务流程管理(BPM)和工作流服务。jbpm4的测试例子是一个很好的学习资源,帮助开发者了解如何在实际项目中集成和使用jbpm4。...

Global site tag (gtag.js) - Google Analytics