`

JBPM4.2小例子(swing实现)

 
阅读更多
本次用的是一个特别流程,假设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登录

分享到:
评论

相关推荐

    jbpm4.2开发文档

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

    jBPM 4.2 HelloWorld实例

    ### jBPM 4.2 HelloWorld 实例详解 #### 一、搭建开发环境 为了能够顺利地进行jBPM 4.2 HelloWorld实例的开发,首先需要搭建一个完整的开发环境。这包括安装必要的软件和配置相应的环境变量。 ##### 1. 下载与...

    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

    jbpm的小例子

    这个“jbpm的小例子”是一个实际应用的案例,展示了如何利用jbpm构建请假审批流程,涵盖了流程定义、任务交互和审批流程的完整生命周期。对于学习和理解jbpm的工作原理和使用方法,这样的例子具有很高的参考价值。

    jbpm练习小例子

    这个“jbpm练习小例子”是针对jbpm 3.2版本的一系列教程,主要针对初学者,旨在帮助他们快速理解和掌握jbpm的基本概念和操作。 在这些压缩包中的文件名,我们可以推测出它们包含了多个不同主题的流程管理实践,如...

    jbpm4.4请假例子,eclipse工程

    通过这个例子,开发者可以学习到如何在jbpm4.4中设计和实现一个简单的业务流程,包括流程图的绘制、数据库配置、任务处理和流程实例管理。同时,对于熟悉Eclipse环境的人来说,也可以了解到如何在Eclipse中搭建和...

    jbpm演示demo例子

    jbpm演示demo例子

    jBPM4完整例子

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

    JBPM_DEMO例子 Hello World

    【JBPM_DEMO例子 Hello World】是入门级的教程,主要展示了如何使用JBPM(Java Business Process Management)工作流引擎实现一个简单的“Hello World”流程。这个例子旨在帮助初学者理解JBPM的基本概念和操作流程。...

    我自己写的jbpm小例子

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

    jbpm4.4 完整例子

    【jbpm4.4 完整例子】是一个基于servlet和jsp实现的业务流程管理(BPM)系统示例,它展示了jbpm4.4框架的核心功能和应用场景。jbpm是一个开源的工作流和业务流程管理系统,它允许开发者设计、执行、管理和监控业务...

    jbpm web实例子(完整版)

    在这个“jbpm web实例子”中,"demo-unioms"可能是一个示例项目,它展示了如何将jbpm集成到Web应用中,实现流程的创建、启动、任务处理等功能。通过分析和学习这个示例,你可以更好地理解如何在实际项目中应用jbpm,...

    ssh与jbpm完整报销例子

    本例子网上也有,只是有点问题,本人经过修改后想留给第一次学习jbpm的人,希望不让他们为一个问题而花费很长时间. 由于所有的jar包已上传,所以不在用QQ发jar包给各位下载的朋友, 请在以下页面下载本项目的jar包: ...

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

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

    jbpm5完整的例子

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

    JBPM例子

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

Global site tag (gtag.js) - Google Analytics