`
xgbjmxn
  • 浏览: 270539 次
  • 性别: Icon_minigender_1
  • 来自: 新乡
社区版块
存档分类
最新评论

swing 实现JBPM 4.2例子

    博客分类:
  • jbpm
阅读更多
swing 实现JBPM 4.2例子

http://blog.sina.com.cn/s/blog_5677c3830100il40.html


核心提示:本次用的是一个特别流程,假设C提交一个表单,这个表单需要给A和B阅读,而A和B阅读过后,流程结束. 流程定义文件swing.jpdl.xml ? xmlversion=1.0encoding=UTF-8 ? process name =swing xmlns =http://jbpm.org/4.0/jpdl start g =94,64,48,48 name =start1 tran


本次用的是一个特别流程,假设C提交一个表单,这个表单需要给A和B阅读,而A和B阅读过后,流程结束.
流程定义文件swing.jpdl.xml


<?xml version="1.0" encoding="UTF-8"?>

<process name="swing" xmlns="http://jbpm.org/4.0/jpdl">
   <start g="94,64,48,48" name="start1">
      <transition g="-52,-22" name="A" to="A"/>
   </start>
   <task assignee="A" g="73,195,92,52" name="A">
      <transition g="-52,-22" name="B" to="B"/>
   </task>
   <task assignee="B" g="266,192,92,52" name="B">
      <transition g="-40,-21" name="end" to="end1"/>
   </task>
   <end g="290,327,48,48" name="end1"/>
</process>



流程图



增加两个表:
用户表p_user:
USER_      用户登录ID
PASSWORD_  用户登录密码

表单数据表p_form:
ID_             表单编号
TITLE_          表单标题
CONTENT_        表单内容
PROCESS_ID      流程实例ID
p_form除了记录表单数据,还记录启动流程实例的ID,这个表负责把表单和流程关联起来.


提交表单时的操作,FormPanel.java部分代码:


okBtn = new JButton("提交表单");
okBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String t = title.getText().trim();
String c = content.getText().trim();
String processId = startProcessInstance();
   
DataBase db = new DataBase();
if(db.saveForm(t, c, processId)){
  JOptionPane.showMessageDialog(null, "保存表单数据成功:");
  title.setText("");
  content.setText("");
}
}
});



private String startProcessInstance(){
Configuration configuration = new Configuration();
ProcessEngine processEngine = configuration.buildProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
ExecutionService executionService = processEngine.getExecutionService();
ProcessInstance processInstance = executionService.startProcessInstanceByKey("swing");
if(processInstance == null){
     JOptionPane.showMessageDialog(null, "请先发布流程.");
}
else{
     return processInstance.getId();
}
return "";
}




代码很简单,行获取表单的数据,再启动流程实例,并把表单数据和流程实例ID一起保存在数据库表p_form.


在用户处理任务时,先根据用户的ID查找到该用户的待处理任务,并把它添加到任务列表中,


DefaultListModel v = new DefaultListModel();
List list = getTaskList(Login.userName);
if(list.size() > 0){
for(int s = 0; s < list.size(); s++){
  Task t = (Task)list.get(s);
  String executionId = t.getExecutionId();
  DataBase db = new DataBase();
  TaskPojo tp = db.findForm(executionId);
  tp.setTaskId(t.getId());
  if(tp != null){
   v.addElement(tp);
  }
}
}
jList = new JList(v);
.
private List getTaskList(String userId){
  if(configuration == null){
   configuration = new Configuration();
  }
     ProcessEngine processEngine = configuration.buildProcessEngine();
     RepositoryService repositoryService = processEngine.getRepositoryService();
     ExecutionService executionService = processEngine.getExecutionService();
     TaskService taskService = processEngine.getTaskService();
     HistoryService historyService = processEngine.getHistoryService();
     ManagementService managementService = processEngine.getManagementService();
     List<Task> taskList = taskService.findPersonalTasks(userId);
     return taskList;
}


用户处理任务,根据列表中选中记录中的流程实例任务ID,调用taskService.completeTask(taskId)完成任务,
okBtn = new JButton("审阅通过");
okBtn.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
  Object o = jList.getSelectedValue();
  if(o instanceof TaskPojo){
   TaskPojo tp = (TaskPojo)o;
   completeTask(tp.getTaskId());
   JOptionPane.showMessageDialog(null, "审核已经通过!");
   DefaultListModel dl = (DefaultListModel)jList.getModel();
   dl.remove(jList.getSelectedIndex());
   buttomPanel.setVisible(false);
  }
}
});
..
private void completeTask(String taskId){
if(configuration == null){
  configuration = new Configuration();
}
ProcessEngine processEngine = configuration.buildProcessEngine();
TaskService taskService = processEngine.getTaskService();
taskService.completeTask(taskId);
}




数据库中登录用户:
帐号:A  密码:123
帐号:B  密码:123
帐号:D  密码:123

用户D登录
图1


图2



用户A登录
图3


查看待办任务
图4



用户B登录
图5

查看B的待办任务
图6



本人的开发环境
eclipse3.5
JBPM4.2
mysql-essential-5.1.40-win32
JDK1.6
要运行这个例子,需要修改jbpm.hibernate.cfg.xml,DataBase.java数据库的连接信息

测试代码:jbpmTest

分享到:
评论

相关推荐

    jbpm4.2开发文档

    ### jbpm4.2开发知识点概述 #### 一、jbpm简介 - **定义与特点**:jbpm(Java Business Process Model)是一个开源的工作流引擎,用于自动化业务流程的执行。它提供了一种灵活的方式来定义复杂的业务流程,并通过...

    jbpm4.2 src(JBPM源码)

    **JBPM 4.2 源码分析** JBPM(Java Business Process Management)是一款开源的工作流管理系统,它提供了一套完整的解决方案,用于设计、执行和管理业务流程。JBPM 4.2 是该框架的一个重要版本,包含了丰富的功能和...

    jbpm4.2 examples(JBPM开发事例)

    **JBPM4.2开发事例详解** JBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于设计、执行和管理业务流程。JBPM4.2是该系统的一个重要版本,它提供了丰富的功能和改进,使得开发者能够更...

    jbpm4.2 doc(JBPM开发文档)

    【JBPM 4.2 开发文档概述】 JBPM(JBoss Business Process Management)是一款开源的工作流管理系统,它提供了一套完整的业务流程自动化解决方案。JBPM 4.2 是其在2009年发布的一个版本,包含了丰富的功能,如工作...

    jbpm4.2jar

    jbpm4.2jar是一个与Java业务流程管理(BPM)相关的库文件,它属于jbpm框架的第4.2版本。jbPM是开源的企业级BPM解决方案,它提供了全面的功能来支持工作流自动化、业务规则管理和组织内业务流程的建模、执行和监控。 ...

    jbpm4.2 install

    jbpm4.2 install

    JBPM4.4例子

    **JBPM4.4入门详解** JBPM,全称Java Business Process Management...通过实践这个简单的jsp+servlet例子,你将能够初步掌握如何在实际应用中使用JBPM。在学习过程中,不断探索和实践,逐步提升你的业务流程管理能力。

    JBPM web(SSH+JBPM) 例子

    【JBPM web(SSH+JBPM)例子】是一个基于Java技术栈实现的工作流管理系统示例,其中SSH代表Spring、Struts和Hibernate这三个流行的Java企业级开发框架的组合,而JBPM则是Business Process Management(业务流程管理...

    JBPM例子

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

    我自己写的jbpm小例子

    这个"我自己写的jbpm小例子"旨在帮助用户快速理解jbpm的核心概念和基本操作,以轻松上手这个强大的工具。 首先,让我们深入理解jbpm的主要组件和功能: 1. **流程定义**:jbpm使用BPMN 2.0(Business Process ...

    jbpm5完整的例子

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

    完整的jbpm借款例子

    这是一个完整的jbpm借款例子 调试环境tomcat6 +jbpm 3.2 + jdk5 tomcat6 lib里边要有 commons-collections.jar mysql-connector-java.jar jta.jar commons-digester.jar 然后创建数据名称 testjbpm 编码为gbk ...

    一个经典的jbpm例子,学jbpm必备的例子

    这是本人学习jbpm以来看过的写的最有条理的一个例子,基于现在网上jbpm的例子比较的少,所以上传上来和大家一起分享

    JBPM5.4例子程序

    **JBPM5.4详解** JBPM,全称Java Business Process Management,是一个开源的工作流管理系统,...通过提供的jbpm_03_for_ant示例程序,开发者可以深入学习和理解如何在实际项目中运用JBPM5.4,实现高效的工作流管理。

    jbpm3.2.3例子

    【jbpm3.2.3例子】是一个基于特定技术环境的流程管理实例,它涵盖了jbpm(Java Business Process Management)3.2.3版本的使用,该版本是jbpm流程引擎的一个早期迭代,用于实现业务流程自动化。在这个例子中,我们将...

    jbpm请假例子完整源代码

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

    第一个实现的jbpm的例子以及遇到的问题解决方案

    【标题】"第一个实现的jbpm的例子以及遇到的问题解决方案" jbpm是一个开源的工作流管理系统,用于设计、执行和管理业务流程。本示例主要讲解如何从零开始搭建一个基于jbpm的简单工作流应用,并分享在实践中遇到的...

    jbpm借款例子的JSP代码

    在这个例子中,我们看到JSP(JavaServer Pages)作为前端展示层,与后台的jbpm服务进行交互,实现了一个完整的借款流程。 首先,jbpm是Java业务流程管理系统的代表,它提供了强大的工作流引擎,支持流程定义、流程...

    ssh+jbpm流程例子jar包2

    这个"ssh+jbpm流程例子jar包2"是一个包含SSH和jbpm集成的示例项目,可能包括了以下关键知识点: 1. **SSH框架集成**:项目中会展示如何将Struts2、Spring和Hibernate整合在一起,实现从视图到模型再到数据访问的...

Global site tag (gtag.js) - Google Analytics