本次用的是一个特别流程,假设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开发知识点概述 #### 一、jbpm简介 - **定义与特点**:jbpm(Java Business Process Model)是一个开源的工作流引擎,用于自动化业务流程的执行。它提供了一种灵活的方式来定义复杂的业务流程,并通过...
### jBPM 4.2 HelloWorld 实例详解 #### 一、搭建开发环境 为了能够顺利地进行jBPM 4.2 HelloWorld实例的开发,首先需要搭建一个完整的开发环境。这包括安装必要的软件和配置相应的环境变量。 ##### 1. 下载与...
**JBPM 4.2 源码分析** JBPM(Java Business Process Management)是一款开源的工作流管理系统,它提供了一套完整的解决方案,用于设计、执行和管理业务流程。JBPM 4.2 是该框架的一个重要版本,包含了丰富的功能和...
**JBPM4.2开发事例详解** JBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于设计、执行和管理业务流程。JBPM4.2是该系统的一个重要版本,它提供了丰富的功能和改进,使得开发者能够更...
【JBPM 4.2 开发文档概述】 JBPM(JBoss Business Process Management)是一款开源的工作流管理系统,它提供了一套完整的业务流程自动化解决方案。JBPM 4.2 是其在2009年发布的一个版本,包含了丰富的功能,如工作...
jbpm4.2jar是一个与Java业务流程管理(BPM)相关的库文件,它属于jbpm框架的第4.2版本。jbPM是开源的企业级BPM解决方案,它提供了全面的功能来支持工作流自动化、业务规则管理和组织内业务流程的建模、执行和监控。 ...
jbpm4.2 install
这个“jbpm的小例子”是一个实际应用的案例,展示了如何利用jbpm构建请假审批流程,涵盖了流程定义、任务交互和审批流程的完整生命周期。对于学习和理解jbpm的工作原理和使用方法,这样的例子具有很高的参考价值。
这个“jbpm练习小例子”是针对jbpm 3.2版本的一系列教程,主要针对初学者,旨在帮助他们快速理解和掌握jbpm的基本概念和操作。 在这些压缩包中的文件名,我们可以推测出它们包含了多个不同主题的流程管理实践,如...
通过这个例子,开发者可以学习到如何在jbpm4.4中设计和实现一个简单的业务流程,包括流程图的绘制、数据库配置、任务处理和流程实例管理。同时,对于熟悉Eclipse环境的人来说,也可以了解到如何在Eclipse中搭建和...
jbpm演示demo例子
**jBPM4完整例子详解** jBPM4是一个企业级的工作流管理系统,它提供了强大的业务流程管理和工作流实现能力。这个"jBPM4完整例子"是一个基于SSH(Struts2、Spring、Hibernate)框架集成jBPM4.4的请假流程应用,非常...
【JBPM_DEMO例子 Hello World】是入门级的教程,主要展示了如何使用JBPM(Java Business Process Management)工作流引擎实现一个简单的“Hello World”流程。这个例子旨在帮助初学者理解JBPM的基本概念和操作流程。...
这个"我自己写的jbpm小例子"旨在帮助用户快速理解jbpm的核心概念和基本操作,以轻松上手这个强大的工具。 首先,让我们深入理解jbpm的主要组件和功能: 1. **流程定义**:jbpm使用BPMN 2.0(Business Process ...
【jbpm4.4 完整例子】是一个基于servlet和jsp实现的业务流程管理(BPM)系统示例,它展示了jbpm4.4框架的核心功能和应用场景。jbpm是一个开源的工作流和业务流程管理系统,它允许开发者设计、执行、管理和监控业务...
在这个“jbpm web实例子”中,"demo-unioms"可能是一个示例项目,它展示了如何将jbpm集成到Web应用中,实现流程的创建、启动、任务处理等功能。通过分析和学习这个示例,你可以更好地理解如何在实际项目中应用jbpm,...
本例子网上也有,只是有点问题,本人经过修改后想留给第一次学习jbpm的人,希望不让他们为一个问题而花费很长时间. 由于所有的jar包已上传,所以不在用QQ发jar包给各位下载的朋友, 请在以下页面下载本项目的jar包: ...
这是本人学习jbpm以来看过的写的最有条理的一个例子,基于现在网上jbpm的例子比较的少,所以上传上来和大家一起分享
【jbpm5完整的例子】是针对企业业务流程管理(Business Process Management, BPM)的一个实践教程,其中涵盖了jbpm5框架的多个核心功能和用法。jbPM是一个开源的工作流管理系统,它提供了强大的流程定义、执行和监控...
【JBPM例子】是关于Java Business Process Management System (JBPM) 的一系列示例代码,用于展示如何在实际项目中使用这个工作流引擎。JBPM是一个开源的企业级平台,主要用于管理和执行业务流程。它提供了全面的...