- 浏览: 915356 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
天天来注册:
...
try catch finally 用法 -
tadpole_java:
谢谢你的分享。
二十七、Qt数据库(七)QSqlRelationalTableModel(转) -
359449749tan:
android之EditText文本监听(addTextChangedListener) -
michael_wang:
人过留名 多谢分享
Android NOtification 使用 -
wilsonchen:
wangqi0614 写道这个删除是删除所有的把?能不能值删除 ...
Android的SharedPreferences保存与删除数据简单实例
开源世界的版本问题,永远是入门者的噩梦,简单记录一些资料。
目前jbpm主要有3 4 5三个版本,用5的目前很少,用4的也不多,主要是用的3
然后3.1和3.2的界面不同,3.1用jbpm而3.2用jbpm-console,3.2的功能多些支持用户管理而3.1的界面很好。
主要用3.1.4-startkit和3.2.3-startkit。
开发环境建议
1. jbpm-starters-kit-3.1.4.zip 下载地址:
http://nchc.dl.sourceforge.net/project/jbpm/jBPM%203/jbpm-3.1.4/jbpm-starters-kit-3.1.4.zip
2. JBossIDE-1.6.0.GA-Bundle-win32.zip 下载地址:
http://jaist.dl.sourceforge.net/project/jboss/JBossIDE/JBoss%20IDE%201.6.0.GA/JBossIDE-1.6.0.GA-Bundle-win32.zip
学习资料
3.1.4
严重建议,手把手:http://www.99inf.net/SoftwareDev/Java/43324.htm
会签(悲催的BlogJava又被墙了):http://www.blogjava.net/liuwentao253/archive/2008/09/22/230339.html
直接贴代码吧,主要有三个文件,原文有个condition的小错误
1/4 processdefinition.xml
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="meeting">
<swimlane name="requester">
<assignment expression="user(ernie)" />
</swimlane>
<swimlane name="chief">
<assignment expression="user(bert)" />
</swimlane>
<swimlane name="boss">
<assignment expression="user(grover)" />
</swimlane>
<swimlane name="cosinger">
<assignment class="com.hjz.jbpm.study.CosingerAssiHandler"></assignment>
</swimlane>
<start-state name="start">
<task name="newprj">
<controller>
<variable name="amount" access="read,write,required" mapped-name="金额"></variable>
</controller>
</task>
<transition name="to_submit" to="提交申请"></transition>
</start-state>
<task-node name="提交申请">
<task name="tc_prj_submit" swimlane="requester"></task>
<transition name="to_chiefapprove" to="tc_prj_chiefapprove"></transition>
</task-node>
<task-node name="tc_prj_chiefapprove">
<task name="tc_prj_chiefapprove" swimlane="chief"></task>
<transition name="approve" to="tc_prj_countersign"></transition>
<transition name="disapprove" to="提交申请"></transition>
</task-node>
<task-node name="tc_prj_countersign" signal="last-wait"
create-tasks="false">
<task name="tc_prj_countersign">
<event type="task-end">
<action
class="com.hjz.jbpm.study.TaskEndCountersign">
</action>
</event>
</task>
<event type="node-enter">
<action name="createInstance"
class="com.hjz.jbpm.study.CreateTaskInstanceCountersign">
</action>
</event>
<transition name="approve" to="amount_decision"></transition>
<transition name="disapprove" to="提交申请"></transition>
</task-node>
<decision name="amount_decision">
<transition name="to_end" to="end1"></transition>
<transition name="to_bossapprove" to="tc_prj_bossapprove"><condition>#{amount >= 500}</condition></transition>
</decision>
<task-node name="tc_prj_bossapprove">
<task name="tc_prj_bossapprove" swimlane="boss"></task>
<transition name="approve" to="end1"></transition>
<transition name="disapprove" to="提交申请">
</transition>
</task-node>
<end-state name="end1"></end-state>
</process-definition>
//2/4 com.hjz.jbpm.study.CreateTaskInstanceCountersign.java
package com.hjz.jbpm.study;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.graph.exe.Token;
import org.jbpm.graph.node.TaskNode;
import org.jbpm.taskmgmt.def.Task;
import org.jbpm.taskmgmt.exe.TaskMgmtInstance;
public class CreateTaskInstanceCountersign implements ActionHandler {
private static final long serialVersionUID = 1L;
public void execute(ExecutionContext executionContext) throws Exception {
Token token = executionContext.getToken();
TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();
TaskNode taskNode = (TaskNode) executionContext.getNode();
Task task = taskNode.getTask("tc_prj_countersign"); ?????????ldap ??????????????????????
tmi.createTaskInstance(task, token).setActorId("ernie");
tmi.createTaskInstance(task, token).setActorId("bert");
tmi.createTaskInstance(task, token).setActorId("grover");
}
}
//3/4 com.hjz.jbpm.study.CosingerAssiHandler.java
package com.hjz.jbpm.study;
import org.jbpm.graph.exe.*;
import org.jbpm.taskmgmt.def.*;
import org.jbpm.taskmgmt.exe.Assignable;
public class CosingerAssiHandler implements AssignmentHandler {
private static final long serialVersionUID = 1L;
public void assign(Assignable assignable, ExecutionContext executionContext) {
String[] a = { "ernie", "bert", "grover" };
assignable.setPooledActors(a);
}
}
//4/4 com.hjz.jbpm.study.TaskEndCountersign.java
package com.hjz.jbpm.study;
import java.util.Collection;
import java.util.Iterator;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.taskmgmt.exe.TaskInstance;
import org.jbpm.taskmgmt.exe.TaskMgmtInstance;
public class TaskEndCountersign implements ActionHandler {
private static final long serialVersionUID = 1L;
public void execute(ExecutionContext executionContext) throws Exception {
Boolean isDisapprove = Boolean.valueOf((String) executionContext.getVariable("isDisapprove"));
if (isDisapprove.booleanValue()) {
TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();
TaskInstance ti = executionContext.getTaskInstance();
final String actorId = ti.getActorId();
Collection c = tmi.getSignallingTasks(executionContext);
for (Iterator it = c.iterator(); it.hasNext();) {
TaskInstance task = (TaskInstance) it.next();
if (!(actorId.equals(task.getActorId())) && (!task.hasEnded())) {
task.end("disapprove");
}
}
}
}
}
3.2.3
BPM jPDL 用户开发手册 3.2.3 (全文pdf) http://zhangym.javaeye.com/blog/253544
目前jbpm主要有3 4 5三个版本,用5的目前很少,用4的也不多,主要是用的3
然后3.1和3.2的界面不同,3.1用jbpm而3.2用jbpm-console,3.2的功能多些支持用户管理而3.1的界面很好。
主要用3.1.4-startkit和3.2.3-startkit。
开发环境建议
1. jbpm-starters-kit-3.1.4.zip 下载地址:
http://nchc.dl.sourceforge.net/project/jbpm/jBPM%203/jbpm-3.1.4/jbpm-starters-kit-3.1.4.zip
2. JBossIDE-1.6.0.GA-Bundle-win32.zip 下载地址:
http://jaist.dl.sourceforge.net/project/jboss/JBossIDE/JBoss%20IDE%201.6.0.GA/JBossIDE-1.6.0.GA-Bundle-win32.zip
学习资料
3.1.4
严重建议,手把手:http://www.99inf.net/SoftwareDev/Java/43324.htm
会签(悲催的BlogJava又被墙了):http://www.blogjava.net/liuwentao253/archive/2008/09/22/230339.html
直接贴代码吧,主要有三个文件,原文有个condition的小错误
1/4 processdefinition.xml
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="meeting">
<swimlane name="requester">
<assignment expression="user(ernie)" />
</swimlane>
<swimlane name="chief">
<assignment expression="user(bert)" />
</swimlane>
<swimlane name="boss">
<assignment expression="user(grover)" />
</swimlane>
<swimlane name="cosinger">
<assignment class="com.hjz.jbpm.study.CosingerAssiHandler"></assignment>
</swimlane>
<start-state name="start">
<task name="newprj">
<controller>
<variable name="amount" access="read,write,required" mapped-name="金额"></variable>
</controller>
</task>
<transition name="to_submit" to="提交申请"></transition>
</start-state>
<task-node name="提交申请">
<task name="tc_prj_submit" swimlane="requester"></task>
<transition name="to_chiefapprove" to="tc_prj_chiefapprove"></transition>
</task-node>
<task-node name="tc_prj_chiefapprove">
<task name="tc_prj_chiefapprove" swimlane="chief"></task>
<transition name="approve" to="tc_prj_countersign"></transition>
<transition name="disapprove" to="提交申请"></transition>
</task-node>
<task-node name="tc_prj_countersign" signal="last-wait"
create-tasks="false">
<task name="tc_prj_countersign">
<event type="task-end">
<action
class="com.hjz.jbpm.study.TaskEndCountersign">
</action>
</event>
</task>
<event type="node-enter">
<action name="createInstance"
class="com.hjz.jbpm.study.CreateTaskInstanceCountersign">
</action>
</event>
<transition name="approve" to="amount_decision"></transition>
<transition name="disapprove" to="提交申请"></transition>
</task-node>
<decision name="amount_decision">
<transition name="to_end" to="end1"></transition>
<transition name="to_bossapprove" to="tc_prj_bossapprove"><condition>#{amount >= 500}</condition></transition>
</decision>
<task-node name="tc_prj_bossapprove">
<task name="tc_prj_bossapprove" swimlane="boss"></task>
<transition name="approve" to="end1"></transition>
<transition name="disapprove" to="提交申请">
</transition>
</task-node>
<end-state name="end1"></end-state>
</process-definition>
//2/4 com.hjz.jbpm.study.CreateTaskInstanceCountersign.java
package com.hjz.jbpm.study;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.graph.exe.Token;
import org.jbpm.graph.node.TaskNode;
import org.jbpm.taskmgmt.def.Task;
import org.jbpm.taskmgmt.exe.TaskMgmtInstance;
public class CreateTaskInstanceCountersign implements ActionHandler {
private static final long serialVersionUID = 1L;
public void execute(ExecutionContext executionContext) throws Exception {
Token token = executionContext.getToken();
TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();
TaskNode taskNode = (TaskNode) executionContext.getNode();
Task task = taskNode.getTask("tc_prj_countersign"); ?????????ldap ??????????????????????
tmi.createTaskInstance(task, token).setActorId("ernie");
tmi.createTaskInstance(task, token).setActorId("bert");
tmi.createTaskInstance(task, token).setActorId("grover");
}
}
//3/4 com.hjz.jbpm.study.CosingerAssiHandler.java
package com.hjz.jbpm.study;
import org.jbpm.graph.exe.*;
import org.jbpm.taskmgmt.def.*;
import org.jbpm.taskmgmt.exe.Assignable;
public class CosingerAssiHandler implements AssignmentHandler {
private static final long serialVersionUID = 1L;
public void assign(Assignable assignable, ExecutionContext executionContext) {
String[] a = { "ernie", "bert", "grover" };
assignable.setPooledActors(a);
}
}
//4/4 com.hjz.jbpm.study.TaskEndCountersign.java
package com.hjz.jbpm.study;
import java.util.Collection;
import java.util.Iterator;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.taskmgmt.exe.TaskInstance;
import org.jbpm.taskmgmt.exe.TaskMgmtInstance;
public class TaskEndCountersign implements ActionHandler {
private static final long serialVersionUID = 1L;
public void execute(ExecutionContext executionContext) throws Exception {
Boolean isDisapprove = Boolean.valueOf((String) executionContext.getVariable("isDisapprove"));
if (isDisapprove.booleanValue()) {
TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();
TaskInstance ti = executionContext.getTaskInstance();
final String actorId = ti.getActorId();
Collection c = tmi.getSignallingTasks(executionContext);
for (Iterator it = c.iterator(); it.hasNext();) {
TaskInstance task = (TaskInstance) it.next();
if (!(actorId.equals(task.getActorId())) && (!task.hasEnded())) {
task.end("disapprove");
}
}
}
}
}
3.2.3
BPM jPDL 用户开发手册 3.2.3 (全文pdf) http://zhangym.javaeye.com/blog/253544
发表评论
-
判断两二叉树相等
2014-05-29 00:13 1143bool IsBSTEqual(BNode* root1, ... -
数据去重
2014-05-29 00:11 858引用 使用数据结构丰富的脚本语言,如Python,利用其中的字 ... -
判断一个整数是否为2的次方幂
2014-05-28 23:56 890/* 判断一个整数是否为2的次方幂 */ bool ... -
实现Comparable接口,进行排序
2014-05-28 23:47 8830import java.util.ArrayList; ... -
Struct2详解
2014-05-21 15:14 932引用 Servlet的缺点: 1、web.xml配置比较多 2 ... -
Tomcat 下配置https
2014-05-13 17:56 641引用 今天按照网上的教程做了一下在Tomcat下配置https ... -
常用方法
2014-04-25 20:24 791[color=red]String[/color] ... -
java nio和io的比较
2014-04-16 19:49 1761引用 第一部分:简单介绍NIO 服务器在合理时间内处理 ... -
Struts2、Spring3、HIbernate4总结
2014-04-16 10:35 872引用 第一部分:Struts2 1 ... -
Finally的使用总结
2014-04-15 22:02 904//清单一: public class ... -
Fibonacci数列的递归与非递归
2014-04-15 20:57 742//非递归实现 //f(1)=1,f(2)=1,f(n) ... -
Java中的异常
2014-04-14 09:42 656引用 Throwable包括两个子类:Error和Except ... -
JVM的垃圾回收机制
2014-04-13 18:39 874引用 堆被划分为新生代和旧生代, 新生代包含Eden 和 S ... -
集合类总结
2014-04-04 15:54 696引用 一. 总的框架 总的有Collection和Map Co ... -
设计模式之策略模式
2014-04-01 17:07 635main ======================= ... -
设计模式之责任链模式
2014-04-01 16:32 755main ======================= ... -
设计模式之访问者模式
2014-03-31 18:57 874main ======================= ... -
设计模式之工厂模式
2014-03-31 11:33 647main ======================= ... -
设计模式之观察者模式
2014-03-30 15:04 876main =============== ... -
Java虚拟机JVM详解
2014-03-29 12:13 1338引用 第一部分:JVM基本结构 1.什么是JVM 一个java ...
相关推荐
本资料主要围绕jbpm的核心组件——jPDL进行讲解,帮助学习者深入理解jbpm的工作原理和应用。 jPDL(jBPM Process Definition Language)是jbpm使用的一种基于XML的语言,用于描述业务流程。它提供了一系列的元素和...
【JBPM4学习资料详解】 JBPM4是一款基于Java的企业级工作流管理系统,它提供了一套完整的流程定义、执行和管理的解决方案。本资料主要涉及Java Web模块的学习,特别关注JBPM4的集成和配置。 **一、导入必要的包** ...
斯坦福特jbpm入门资料,内容不错,由浅入深,系统讲解了jbpm,是不错的入门资料噢
### jBPM学习资料知识点详解 #### 一、jBPM概述 jBPM,即Java Business Process Management,是一款基于J2EE的轻量级工作流管理系统,专为简化业务流程设计与执行而生。该项目自2004年加入JBoss家族以来,成为其...
关于“JBPM4.4资料的其他补充”,可能是为了补充之前发布资料中缺失的部分,可能包含以下内容: 1. **示例项目**:可能包含额外的示例代码或项目,帮助初学者快速理解如何在实际项目中应用JBPM4.4。 2. **文档更新...
总的来说,这个主题资料包提供了jbpm4和jbpm5的基础知识、实战经验和用户操作指导,对于想要学习或深化jbpm流程管理框架理解的开发者非常有价值。通过学习这些文档,开发者可以掌握jbpm的核心概念,熟练地设计和部署...
文档《JBPM流程引擎资料》详细介绍了如何利用JBPM开发流程应用,涵盖了从框架构造到节点处理的方方面面。 首先,文档提到了jBPM的基本概念。jBPM是一个轻量级流程引擎,它允许开发者以模块化的方式管理业务流程。...
整理的别人JBPM4 学习资料, 工作流学习文档
超好用!一看就明白,是jbpm菜鸟们的老师。介绍怎么来实现jbpm。
### jBPM简介与关键技术知识点 #### 一、jBPM概述 jBPM是一个开源的、纯Java的、轻量级的商业流程管理(Business Process Management, BPM)工作流引擎。它支持多种可执行流程语言,并且可以在任何JavaEE应用...
jbpm5资料是一个关于JBoss jBPM 5的资源集合,主要包含了深入浅出_jBPM_电子书.doc、Packt.Publishing.Business.Process.Management.with.JBoss.jBPM.Jul.2007.pdf和jBPM5_用户手册-中文版.pdf这三份文档。jBPM...
jbpm jbpm4.3.jar DDDDDDDD
【jbpm资料大全(个人收集)】 jbpm(Java Business Process Management)是开源社区Red Hat维护的一个业务流程管理系统,它提供了全面的工作流和业务流程管理功能。jbpm旨在帮助开发者和业务分析师设计、执行、监控...
【jbpm学习资料汇总】 jbpm,全称是Java Business Process Management,是一个开源的工作流管理系统,主要用于业务流程的建模、执行和管理。它提供了一种灵活的方式,使得开发人员和业务分析师能够协同工作,创建、...
这个"jBPM开发资料文档合集"包含了丰富的学习资源,包括教程、资料、源码和代码示例,主要关注的是jbpm4版本。 jbPM4是jbPM框架的一个重要版本,它提供了一整套工具和服务来支持业务流程管理(BPM)。以下是一些关于...
jbpm,全称为Java Business Process Management,是一...无论是想要了解jbpm,还是准备在项目中实施,这些资料都将是非常宝贵的资源。通过深入学习和实践,你可以掌握jbpm的核心功能,从而有效地管理和自动化业务流程。
jbpm使用案例,非常不错,大家都来看看吧。
### JBPM学习资料step by step #### 重要知识点解析 **标题:** "JBPM学习资料step by step" - **解读:** 本标题指明了文档的主要内容是关于JBPM的学习指南,并且是以逐步(step by step)的方式进行讲解。 **...
**jbpm3基本资料与代码总结** jbpm(Java Business Process Management)是一个开源的工作流管理系统,专注于业务流程的建模、执行和管理。jbpm3是该系统的第三个主要版本,它提供了一整套工具和API,帮助开发者...