- 浏览: 123682 次
- 性别:
- 来自: 黑龙江
文章分类
最新评论
-
Mr_lee_2012:
总有人无私的奉献着,感谢。。。
BPM jPDL 用户开发手册 3.2.3 (全文pdf) -
sinodragon21:
学习!
工作流之大局势 -
yuzhenling:
楼主大好人啊 大好人
BPM jPDL 用户开发手册 3.2.3 (全文pdf) -
楚天阔:
楼主 我居然下不下来。。。谢谢您分享了这么多好资料
jBPM各版本及新手工具包下载地址 -
bingxinhan_aman:
xiaor186 写道题目是工作流之大趋势,可是我只看到了工作 ...
工作流之大局势
第12章 任务分配
12.1. 任务
12.2. 任务实例
12.2.1. 任务实例生存期
12.2.2. 任务实例和图执行
l last:这个是默认值。当上一个任务实例完成时继续进行执行。当在节点的入口上没有任务被生成时,执行继续。
l first:继续进行执行当第一个任务实例完成时。当没有任务在这个节点的入口上创建时,执行继续。
l first-wait: 继续进行执行当第一个任务实例完成时。当没有任务在这个节点的入口上创建时,执行在任务节点里等待直到任务被创建。
l unsynchronized: 执行总是继续。不管任务被创建或仍然未完成。
public class CreateTasks implements ActionHandler { public void execute(ExecutionContext executionContext) throws Exception { Token token = executionContext.getToken(); TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();
TaskNode taskNode = (TaskNode) executionContext.getNode(); Task changeNappy = taskNode.getTask("change nappy"); // now, 2 task instances are created for the same task. tmi.createTaskInstance(changeNappy, token); tmi.createTaskInstance(changeNappy, token); }
}
|
12.3. 分派
对于jBPM,任务分派的push (personal task list) 和 pull (group task list)模型(往下看)可以应用在组合中。流程能够计算一个任务并将这个任务推进他/她的任务列表中。或可选的,任务能够被分配给一个参与者池(pool of actors),在那种情况下池中的每个参与者都能够将这个任务推进他/她的任务列表中。
12.3.1. 分派接口
public interface AssignmentHandler extends Serializable { void assign( Assignable assignable, ExecutionContext executionContext ); }
|
当一个任务实例创建时分派处理程序实现被调用。在那个运行时,任务实例能够被分配给一个或多个参与者。AssignmentHandler实现应该调用Assignable方法(setActorId or setPooledActors)来分配一个任务。这个Assignable既是一个TaskInstance也是一个SwimlaneInstance(等于流程角色)。
public interface Assignable { public void setActorId(String actorId); public void setPooledActors(String[] pooledActors); }
|
TaskInstances和SwimlaneInstances能够被分配给一个特定的用户或一例参与者池。分配TaskInstance给用户,需要调用Assignable.setActorId(String actorId)方法。而分配TaskInstance给候选参与者池,要调用Assignable.setPooledActors(String[] actorIds)方法。
当多个流程任务应该被分配给相同的人或参与者组时,可以考虑使用swimlane。
为了允许重用AssignmentHandlers的生成,每个AssignmentHandler的使用可以在processdefinition.xml中配置。21.2 委托部分有更多关于如何给assignment handlers增加配置的信息。
12.3.2. 分派数据模型
管理任务实例分派的数据模型和参与者的泳道实例如下。每个TaskInstance有一个actorId和一个pooled actors集合。
图12-1 分派模型类图
12.3.3. 个人任务列表
一个给定的用户要捕获个人任务列表,使用TaskMgmtSession.findTaskInstances(String actorId)。
12.3.4. 群组任务列表
l 在流程的task元素的pooled-actor-ids属性中指定一个表达式
l 在你的代码的任何地方使用TaskInstance.setPooledActorIds(String[])代码
l 在一个AssignmentHandler中使用assignable.setPooledActorIds(String[])
为给定的用户捕获群组任务列表,处理以下内容:制造一个包含用户的actorId和发表于这个用户的群组的所有的ids的集合。用TaskMgmtSession.findPooledTaskInstances(String actorId)或TaskMgmtSession.findPooledTaskInstances(List actorIds)你可以搜索不在个人任务列表中((actorId==null))的任务实例并且在池化的actorIds中可以 匹配。
12.4. 任务实例变量
任务实例可以有它自己的变量集和任务实例,也能“查看”流程变量。任务实例通常在一个执行路径(也就是令牌,token)上创建。这会创建一个父子关系在令牌和任务实例间,这同令牌他们自己的父子关系相类似。正常的范围规则应用在任务变量和相关的令牌的流程变量间。更多的关于范围的信息能够在11.4 变量范围部分找到。
12.5. 任务控制器
- 创建任务实例的变量的拷贝,防止流程完成前中间媒介更新任务实例变量影响流程变量,然后拷贝被提交给流程变量。
- 任务实例变量不是和流程变量一对一相关的。例如,假设流程变量'sales in januari'、'sales in februari'和'sales in march'。然后流程实例的表单也许需要显示3个月的销售平均值。
<task name="clean ceiling"> <controller> <variable name="a" access="read" mapped-name="x" /> <variable name="b" access="read,write,required" mapped-name="y" /> <variable name="c" access="read,write" /> </controller> </task>
|
public interface TaskControllerHandler extends Serializable { void initializeTaskVariables(TaskInstance taskInstance, ContextInstance contextInstance, Token token); void submitTaskVariables(TaskInstance taskInstance, ContextInstance contextInstance, Token token); }
|
<task name="clean ceiling"> <controller class="com.yourcom.CleanCeilingTaskControllerHandler"> -- 写你自己的任务控制器程序的配置—
</controller> </task>
|
12.6. 泳道
泳道(swimlane)是一个流程角色(role)。它是指定流程中通过相同的参与者(actor)来完成的多个任务的一个机制。所以在为给定的泳道创建第一个任务实例后,参与者将同一个泳道上随后所有任务记在流程中。泳道因此会有一个分派(assignment),而且所有引用泳道的任务不需要指定一个分派(assignment)。
12.7. 在开始任务中的泳道
一个任务能够在一个开始状态中被指定。那个任务同一个泳道相关联。当一个新的任务实例为这样一个任务创建时,当前的认证参与者将使用Authentication.getAuthenticatedActorId()方法被捕获并且那个参考者将被存储在开始任务的泳道中。
<process-definition>
<swimlane name='initiator' /> <start-state> <task swimlane='initiator' /> <transition to='...' /> </start-state> ...
</process-definition>
|
12.8. 任务事件
既然任务能够让事件和动作同他们相关联,那么异常程序也能指定在任务上。更多的关于异常处理的信息,查看10.7 异常处理部分。
12.9. 任务定时器
12.10. 定制任务实例
12.11. 身份构件
作为jBPM的扩展我们将提供(未来)一个构件去管理简单的用户-角色(user-roles)模型。这种用与角色间的多对多关系和定义在J2EE和servlet规范中的是同一模型,而且它将在新的开发中将是一个起始点。对更细节的问题感兴趣相关的贡献的话,大家可以去检出jboss jbpm jira上面的问题跟踪。
12.11.1. 身份模型
图12-3 身份模型类图
12.11.2. 分派表达式
<process-definition>
...
<task-node name='a'> <task name='laundry'> <assignment expression='previous --> group(hierarchy) --> member(boss)' /> </task> <transition to='b' /> </task-node> ...
|
first-term --> next-term --> next-term --> ... --> next-term where
first-term ::= previous | swimlane(swimlane-name) | variable(variable-name) | user(user-name) | group(group-name) and
next-term ::= group(group-type) | member(role-name) |
12.11.2.1. first-term
12.11.2.2. next-term
12.11.3. 移除身份组件
<mapping resource="org/jbpm/identity/User.hbm.xml"/> <mapping resource="org/jbpm/identity/Group.hbm.xml"/> <mapping resource="org/jbpm/identity/Membership.hbm.xml"/> |
protected ExpressionSession getExpressionSession(AssignmentContext assignmentContext); |
评论
贴下我的代码:
public class ExtendedTaskInstance extends TaskInstance { private static final long serialVersionUID = -7194269154745098870L; public String getFullName() { return getProcessDefinitionName() + "." + getName(); } }
映射文件代码:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <subclass name="com.itware.lxgl.domain.workflow.ExtendedTaskInstance" discriminator-value="X" extends="org.jbpm.taskmgmt.exe.TaskInstance"> </subclass> </hibernate-mapping>
然后我把jbpm.cfg.xml里面
<bean name="jbpm.task.instance.factory" class="com.itware.lxgl.domain.workflow.TaskInstanceFactoryImpl" singleton="true" />
taskINstanceFactoryIMpl代码如下:
public class TaskInstanceFactoryImpl implements TaskInstanceFactory { private static final long serialVersionUID = 1L; public TaskInstance createTaskInstance(ExecutionContext executionContext) { ExtendedTaskInstance ctaskin = new ExtendedTaskInstance(); return ctaskin; } }
差不多就是这样 但是我查询taskinstance还是taskinstance.而不是ExtendedTaskInstance。不知道该怎么弄,麻烦指导下。谢谢
因为那个没有翻译好
不好意思,让您失望了,全部翻译完成后,我会再校启遍稿的
现在实在是没有时间,只能草草地传上来了,也就是来个快速吧,大家对着英文先对付着看吧,意思应该不会有太大的出入的
发表评论
-
BPM jPDL 用户开发手册 3.2.3 (全文pdf)
2008-10-16 12:58 9064最近太忙了,实在没有时间详细校稿,应大家要求,现在在将全文转为 ... -
jBPM jPDL 用户开发手册 3.2.3 - 第24章
2008-09-27 08:35 2543第24章 可插拨架构 jBPM功能特性分裂成模块。每个模块都有 ... -
jBPM jPDL 用户开发手册 3.2.3 - 第23章
2008-09-27 08:31 1518第23章 工作流的TDD文件 23.1.工作流TDD介绍 既然 ... -
jBPM jPDL 用户开发手册 3.2.3 - 第22章
2008-09-27 08:30 1973第22章 安全 jBPM的安全属性还处于alpha阶段。本章归 ... -
jBPM jPDL 用户开发手册 3.2.3 - 第21章
2008-09-27 08:27 1909第21章 jBPM流程定义语言(JPDL) JPDL指定一个X ... -
jBPM jPDL 用户开发手册 3.2.3 - 第20章
2008-09-23 09:04 1823第20章 业务流程仿真 jBPM包含一个仿真组件,这个是jB ... -
jBPM jPDL 用户开发手册 3.2.3 - 第19章
2008-09-23 09:00 1981第19章 日志 日志的目标是保持追踪流程执行的历史。在运行时 ... -
jBPM jPDL 用户开发手册 3.2.3 - 第18章
2008-09-23 08:59 2070第18章 Web Services支持 本章描述了jBPM ... -
jBPM jPDL 用户开发手册 3.2.3 - 第17章
2008-09-23 08:57 3225第17章 邮件支持 本章描述了jBPM jPDL中随包发行的邮 ... -
jBPM jPDL 用户开发手册 3.2.3 - 第16章
2008-09-23 08:22 1659第16章 商务日历 本章描述了jBPM的商务日历。商务日历知道 ... -
jBPM jPDL 用户开发手册 3.2.3 - 第15章
2008-09-23 08:20 2077第15章 异步连续 15.1. ... -
工作流之大局势
2008-09-22 08:49 33721. 从奴隶社会到封建后期 工作流(WorkFlow)的概 ... -
jBPM jPDL 用户开发手册 3.2.3 - 第14章
2008-09-04 13:02 174914章 定时器 本章描述了jBPM如何和定时器工作一起工作。 ... -
jBPM jPDL 用户开发手册 3.2.3 - 第13章
2008-09-03 20:49 1639第13章 文档管理 这仍然是一个试验性的属性。 为了使用这个 ... -
jBPM jPDL 用户开发手册 3.2.3 - 第11章
2008-09-03 20:45 1989第11章 上下文 上下文是关于流程变量的。流程变量是维护同流程 ... -
jBPM jPDL 用户开发手册 3.2.3 - 第10章
2008-09-02 12:42 2852第10章流程建模 10.1. 概 ... -
jBPM jPDL 用户开发手册 - 第9章
2008-08-24 06:24 2345第9章Java EE 应用服务器工具 本章将描述jBPM提供的 ... -
jBPM各版本及新手工具包下载地址
2008-08-22 17:40 4416由于一些刚开始学习jBPM的朋友看文档时,一般会提到 j ... -
jBPM jPDL 用户开发手册 - 第8章
2008-08-22 08:13 2772第8章 jBPM 数据库 8.1. 切 ... -
jBPM jPDL 用户开发手册 - 第7章
2008-08-20 17:24 2839第7章持久化 大多数的情况,jBPM用于维护流程的执行跨度很 ...
相关推荐
jbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3....
- 修改jbpm-jpdl-3.2.3\db目录下的jbpm.jpdl.mysql.sql文件,为每个SQL语句末尾添加分号,以便正确执行脚本。 4. **jbpm-jpdl-suite-3.2.3部署**: - 在MySQL中执行修改后的jbpm.jpdl.mysql.sql脚本,初始化jbpm...
- **docs**目录:包含文档和手册,用于指导用户安装、配置和使用jBPM-jPDL。 - **samples**目录:提供了一些示例项目,帮助用户了解如何使用jBPM-jPDL实现具体业务流程。 安装配置jBPM-jPDL-suite-3.2.3通常涉及...
《JBoss_jBPM_jPDL用户开发手册_3.2.3.pdf》作为开发者的重要参考资料,详细介绍了如何使用jBPM和jPDL进行流程开发。手册内容可能涵盖: - **安装与配置**:指导读者设置开发环境,包括JBoss服务器的部署和jBPM的...
jbpm-jpdl-3.2.3.zip 是一个包含开源工作流引擎jbpm的版本3.2.3的压缩包。jbpm(Java Business Process Management)是一个强大的业务流程管理系统,它提供了完整的业务流程建模、执行和管理能力,特别适合于需要...
这个是jbpm-jpdl-3.2.3.zip的server部分,有60多兆, 只要将"jbpm-jpdl-3.2.3(没有server部分).rar"和这个合在一起就是整个的jbpm-jpdl-3.2.3.zip "jbpm-jpdl-3.2.3(没有server部分).rar"在我的另外一个上传资源里面
jbpm-jpdl-suite-3.2.GA.zip
《JBoss+jBPM+jPDL用户开发手册_3.2.3》是针对企业级应用开发的一个详尽指南,特别关注于工作流管理和流程自动化。这个手册详细介绍了如何使用JBoss中间件平台,结合jBPM(Java Business Process Management)和jPDL...
**jbPM jPDL 用户指南 (Version 3.2.3) - 第2章** jbPM(Java Business Process Management)是一种开源的工作流管理系统,专为Java开发者设计,它提供了业务流程建模、执行和监控的功能。jPDL(jBPM Process ...
**JBoss jBPM 用户开发手册v3.2.3中文版** jBPM(Java Business Process Management)是一个开源的工作流引擎,专为Java开发者设计,它提供了强大的业务流程管理和执行能力,使得开发者能够轻松地集成业务逻辑和...
6. JBoss+jBPM+jPDL用户开发手册_3.2.3.pdf:这可能是jBPM 3.2.3版本的官方用户手册,提供了该版本的详细技术指南和最佳实践。内容可能包括API使用、工作流生命周期管理、持久化机制、错误处理、自定义扩展等关键...
5. **文档和示例**:为了帮助开发者更好地理解和使用JBPM,通常会提供详细的用户手册和示例代码,指导如何配置、部署以及编程接口的使用。 6. **测试和调试工具**:可能包含了一些辅助工具,如命令行工具或调试器,...
这个是jbpm-jpdl-3.2.3的zip,本来这个是85M的zip, 我删除了server 文件夹(这个文件夹有60多M) 这个server部分在我的另外一个资源里面,一般开发用不到这个server文件夹 如果需要的话,就下载不需要积分, 这个没有...
jbpm-jpdl-3.2.3
工作流插件 activiti-5.15.1 jbpm-4.3 jbpm-4.4 jbpm-jpdl-suite-3.2.3
### jBPM开发:配置EclipseIDE开发环境详解 #### 一、配置开发工具 **1. 安装 Eclipse Designer到 Myeclipse6** - **步骤**: - 将`jbpm-jpdl-suite-3.2.3/designer/eclipse/plugins`目录下的所有文件及文件夹...
首先从网站上下载jBPM开发包(jbpm-jpdl-suite-3.2.3.zip),据说现在jBPM3已经升到3.2.6了,而且据说已经推出了jBPM4了。将jbpm-jpdl-suite-3.2.3.zip解压缩后,里面有个\designer文件夹,这个是eclipseIDE的jBPM...