- 浏览: 269259 次
- 性别:
- 来自: 新乡
文章分类
- 全部博客 (227)
- servciemix (10)
- db (18)
- javaTools (4)
- hibernate (31)
- web (3)
- spring (14)
- design pattern (4)
- java security (3)
- portal (1)
- ejb (6)
- session (2)
- java_lang (21)
- jbpm (29)
- struts (7)
- orgRights (2)
- project manager Jira (7)
- 跨库事务 (2)
- mysql (14)
- ubuntu (7)
- osgi (9)
- maven ant make (4)
- 分布式 高并发 高性能 (5)
- virgo-dm_server (0)
- osgi web (3)
- platform (1)
- smooks (1)
- business (1)
- 职场生涯 (14)
- Java编码格式 (2)
- web服务 (1)
- 计算机使用 (1)
- 健康工作生活的保障,工作中务必抛掉的不良心态 (4)
- 电信-网络监控 (1)
- 多线程-multithread (1)
- 海量数据-高性能 (2)
- Mybatis (1)
- web开发平台研发 (0)
- oracle (0)
- 应用服务器调优 (0)
- web前端 (0)
- servlet-jsp (0)
- tomcat (2)
- newtouch (1)
- portal_liferay (2)
- version control (1)
- apm-impact (2)
- tools (1)
- 研发管理 (1)
- 电商业务 (1)
- 生鲜电商市场调查 (0)
- PBX (0)
- 房东 (0)
最新评论
-
lifuchao:
...
权限问题 -
Branding:
谢谢,受教了,另外,CONN AS SYSDBA,必须是在操作 ...
Oracle密码忘记了怎么办? -
zhuchao_ko:
...
Portal实现原理 -
败类斯文:
不知道改哪里。。。木有见到红色。。表示悟性低了、、
jira error: Neither the JAVA_HOME nor the JRE_HOME environment variable is defin -
c__06:
正文:假如事务我是这样定义的: <tx:method n ...
Spring中Transactional配置
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
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
- jbpmTest12.8.rar (52.1 KB)
- 下载次数: 10
发表评论
-
JBPM4的优秀博文链接
2011-08-31 22:39 13251 Jbpm4 IOC容器 http://www.it ... -
jbpm4 在tomcat6 下面ssh2 错误
2011-08-31 21:35 997异常:java.lang.LinkageError: load ... -
JBPM4表结构说明
2011-07-23 00:33 1295JBPM4表结构说明 (2010-05-05 14:10:02 ... -
jbpm流程文件的部署
2011-07-23 00:32 1192jbpm流程文件的部署 (2010-05-05 14:51:5 ... -
BPM4.3总结二 Jbpm4.3使用文档
2011-07-23 00:30 1153JBPM4.3总结二 [此博文包含图片] (2010-05-0 ... -
JBPM4.3总结五 合同审批实例
2011-07-23 00:27 1359JBPM4.3总结五 [此博文包含图片] (2010-05-0 ... -
JBPM4.3总结四 2.9任务管理
2011-07-23 00:26 1062JBPM4.3总结四 (2010-05-05 11:53:32 ... -
JBPM4.3总结三 集成自定义用户表
2011-07-23 00:24 1577JBPM4.3总结三 (2010-05-05 11:54:56 ... -
JBPM4.3之任务管理
2011-07-22 12:37 1074JBPM4.3总结四(2010-05-05 11:53:32) ... -
jbpm frequently used url
2011-06-29 12:19 10681. http://old.family168.com/bb ... -
jbpm4 和 spring 的集成
2011-06-29 11:37 835jbpm4 内置了和 spring 的集成支持, 配置很简单, ... -
任务提交后为什么JBPM4_HIST_VAR不存在值
2011-06-29 11:05 1491JbpmProcessEngineUtil.getExecut ... -
权限问题
2011-06-29 09:05 1235机构 与 权限关系表:机构拥有与之关联的权限 应用 与 权限 ... -
jBPM4的运行期环境
2011-06-29 08:52 683一、运行期环境就是一个餐馆 二、jBPM4的运行期环境 E ... -
Jbpm4.3连接数据库配置
2011-06-29 08:35 1312Jbpm4.3连接数据库配置 收藏 1、我以mysql为例子 ... -
jbpm4 有18张表,简单介绍如下
2011-06-29 08:33 1814jbpm4 有18张表,简单介绍如下: JBPM4_DEP ... -
Drools
2011-06-28 20:59 1280Drools - The Business Logic int ... -
Activiti BPM Platform
2011-06-28 20:58 1122Activiti BPM Platform http://a ... -
jbpm之6 JBPM流程通过Aciton动态创建TaskInstance来实现“会签”
2011-06-28 20:57 834jbpm6(2007-03-14 23:32:38)转载 ... -
jbpm之6 JBPM流程通过Aciton动态创建TaskInstance来实现“会签”
2011-06-28 20:52 798jbpm6(2007-03-14 23:32:38)转载 ...
相关推荐
### jbpm4.2开发知识点概述 #### 一、jbpm简介 - **定义与特点**:jbpm(Java Business Process Model)是一个开源的工作流引擎,用于自动化业务流程的执行。它提供了一种灵活的方式来定义复杂的业务流程,并通过...
**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
**JBPM4.4入门详解** JBPM,全称Java Business Process Management...通过实践这个简单的jsp+servlet例子,你将能够初步掌握如何在实际应用中使用JBPM。在学习过程中,不断探索和实践,逐步提升你的业务流程管理能力。
【JBPM web(SSH+JBPM)例子】是一个基于Java技术栈实现的工作流管理系统示例,其中SSH代表Spring、Struts和Hibernate这三个流行的Java企业级开发框架的组合,而JBPM则是Business Process Management(业务流程管理...
【JBPM例子】是关于Java Business Process Management System (JBPM) 的一系列示例代码,用于展示如何在实际项目中使用这个工作流引擎。JBPM是一个开源的企业级平台,主要用于管理和执行业务流程。它提供了全面的...
这个"我自己写的jbpm小例子"旨在帮助用户快速理解jbpm的核心概念和基本操作,以轻松上手这个强大的工具。 首先,让我们深入理解jbpm的主要组件和功能: 1. **流程定义**:jbpm使用BPMN 2.0(Business Process ...
【jbpm5完整的例子】是针对企业业务流程管理(Business Process Management, BPM)的一个实践教程,其中涵盖了jbpm5框架的多个核心功能和用法。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的例子比较的少,所以上传上来和大家一起分享
**JBPM5.4详解** JBPM,全称Java Business Process Management,是一个开源的工作流管理系统,...通过提供的jbpm_03_for_ant示例程序,开发者可以深入学习和理解如何在实际项目中运用JBPM5.4,实现高效的工作流管理。
【jbpm3.2.3例子】是一个基于特定技术环境的流程管理实例,它涵盖了jbpm(Java Business Process Management)3.2.3版本的使用,该版本是jbpm流程引擎的一个早期迭代,用于实现业务流程自动化。在这个例子中,我们将...
**jbpm请假例子完整源代码**是一套基于jbpm流程引擎的示例应用,它用于演示如何在实际项目中利用jbpm实现一个简单的请假流程。jbpm是一个开源的工作流管理系统,它提供了强大的业务流程建模、执行和管理能力。本示例...
【标题】"第一个实现的jbpm的例子以及遇到的问题解决方案" jbpm是一个开源的工作流管理系统,用于设计、执行和管理业务流程。本示例主要讲解如何从零开始搭建一个基于jbpm的简单工作流应用,并分享在实践中遇到的...
在这个例子中,我们看到JSP(JavaServer Pages)作为前端展示层,与后台的jbpm服务进行交互,实现了一个完整的借款流程。 首先,jbpm是Java业务流程管理系统的代表,它提供了强大的工作流引擎,支持流程定义、流程...
这个"ssh+jbpm流程例子jar包2"是一个包含SSH和jbpm集成的示例项目,可能包括了以下关键知识点: 1. **SSH框架集成**:项目中会展示如何将Struts2、Spring和Hibernate整合在一起,实现从视图到模型再到数据访问的...