`
flashdream8
  • 浏览: 675498 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jBPM中任务分派和组织建模的分析

    博客分类:
  • JBPM
阅读更多

任务分派和组织建模是jBPM工作流引擎中两个重要的模块。作为一个设计出色,结构清晰的工作流引擎,jBPM在这两个模块的设计和实现上都有其值得学习的地方。

1.      任务分派

任务分派是所有工作流引擎都要支持的一个重要功能模块。其主要功能是管理任务的创建和分派。

1.1.   任务和任务实例

任务(task)是流程定义的组成部分,它定义了在流程运行期间如何创建和分配任务实例。在jBPM中,任务是可以定义在任务节点(task-node)和流程定义(process-definition)中的。

任务实例(taskInstance)在被创建后会被分配给一个用户。jBPM中使用actorId (java.lang.String)作为用户的标识。所有创建好的任务实例都会存储在数据表JBPM_TASKINSTANCE中。用户可以在JBPM_TASKINSTANCE表中使用actorId进行查询,就能够得到相应人员的任务列表。

1.2.   泳道和泳道实例

泳道(swimlane)是一个流程定义的元素。它用来支持在流程定义中将多个任务分配给同一个或者一组用户的功能。

在流程运行时,当第一次遇到任务实例分配给一个泳道的时候,引擎会创建相应的泳道实例(swimlaneInstance),并计算对应的用户,其后所有分配给这个泳道的任务实例都会分配给相同的用户。

1.3.   任务分派模式

jBPM的任务分派有两种模式,分别是推(push)模式和拉(pull)模式。

推模式是在任务分派的时候,直接将任务实例分派给一个指定的用户,任务实例进入这个用户的个人任务列表中。

拉模式是将任务实例分派给一组用户,这个任务实例会出现在组所有用户的组任务列表中。组用户需要首先将任务实例拉到自己的个人任务列表中才能够执行此任务。当有一个组用户取出了任务实例后,引擎就会将该任务实例从其他的组用户的组任务列表中去除。

1.4.   任务分派数据模型

 

PooledActorpooledActors集合的元素的类型。

每个TaskInstanceSwimlaneInstance都可以分派给一个用户或者一组用户。如果分配一个用户,那么这个任务实例就直接进入了该用户的个人任务列表,如果分配给一组用户,那么这个任务实例就处于这一组用户的组任务列表中。

1.5.   任务分派接口

jBPM通过接口AssignmentHandler实现任务分派。

public interface AssignmentHandler extends Serializable {

  void assign( Assignable assignable, ExecutionContext executionContext );

}

任务在定义的时候指定对应的AssignmentHandler接口实现类。引擎在创建任务实例的时候会调用接口中的assign方法。其实现应该调用参数assignable的方法对任务进行分派。

TaskInstanceSwimlaneInstance实现了接口Assignable

public interface Assignable {

  public void setActorId(String actorId);

  public void setPooledActors(String[] pooledActors);

}

调用Assignable.setActorId(String actorId)方法可以将一个任务实例分派给一个用户,调用Assignable.setPooledActors(String[] actorIds)方法可以将一个任务实例分派给一组用户。

2.      组织建模

工作流引擎的组织建模问题一直都是一个难以统一解决的问题。不同应用背景,其组织模型会千差万别,因此jBPM采用了以非常简单的组织模型,并且能够非常容易的让使用者替换使用自己的组织模型。

jBPM为了能够将组织模型与引擎核心模块相分离,在引擎中只使用最基本的人员模型,而不使用任何其他的组织模型,其人员模型也只是使用一个String类型的actorId作为标识来进行任务分派。

2.1.   默认组织模型

jBPM提供了一个默认的组织模型,其对应的类为identity包和子包下面。使用的时候生成一个独立的identityjar包,可以单独部署。

 

 

其中User代表一个用户或者能够提供某种服务的实体。Group代表一种可以有隶属管理的组织,比如组,公司,部门等。Membership表示usergroup之间多对多的关系。所有的这些都从Entity类继承而来。

如果用户使用jBPM自带的默认组织模型,那么在使用jPDL(jBPM自己的工作流建模语言)定义流程的时候,还可以使用任务分派的扩展定义。

 

2.2.   组织建模的可替换性

如果用户需要在应用中使用自己的组织模型,那么在部署jBPM的时候,只要从它的hibernate.cfg.xml文件中去掉UserGroupMembership三个类对应的配置项,这样就可以在部署的时候不需要jBPM.identity包了。

在每个任务分派类(实现了AssignmentHandler接口的类)的  void assign( Assignable assignable, ExecutionContext executionContext )方法中,只需要根据用户自己组织模型计算得到最终的任务执行人,然后以任务执行人的Id作为参数调用assignable.setAcotrId(String)或者assignable.setPoolActors(String[]),就可以将任务实例分派给指定的人员了。

 

<转:http://blog.csdn.net/dust_bug/archive/2007/04/11/1559844.aspx>

分享到:
评论

相关推荐

    jbpm中文用户指南

    BPMN是一种图形化表示业务流程的方法,jbpm的用户指南会详细介绍如何使用BPMN符号来设计流程图,包括开始事件、结束事件、任务、网关、事件和数据对象等,以及它们在jbpm中的具体实现。 3. **jbpm工作流** 工作流...

    jbpm中文用户手册

    在"jBPM4.1中文用户手册"中,读者可以找到关于这些特性和功能的详细解释,包括如何创建和部署BPMN模型、配置工作流引擎、使用任务服务、集成规则引擎等操作步骤。此外,手册可能还会涵盖错误处理、性能调优、安全...

    JBPM视屏教程共9节 jBPM 4视频教程07组织机构

    首先,组织机构在jBPM中的实现基于"组织单元"(Organizational Unit)的概念,它可以是一个部门、团队或者项目组,每个组织单元可以包含多个用户和角色。组织单元的设定使得权限管理和任务分配更为清晰和灵活。 ...

    jBPM源码分析jBPM源码分析

    jBPM源码分析jBPM源码分析jBPM源码分析jBPM源码分析

    jbpm中文指南(包括3和4的)

    jbpm是一款开源的工作流程管理系统,它提供了业务流程建模、执行和管理的能力,广泛应用于企业的业务流程自动化中。本指南旨在帮助用户理解和掌握jbpm的核心概念、功能以及实际操作方法。 ### jbpm3 知识点 1. **...

    jbpm3.1中文文档

    3. **工作流定义**:jbpm中的流程定义文件(.bpmn或.jpdl)描述了流程的各个步骤、决策点、事件和任务。学习如何编写和解析这些文件对于定制流程至关重要。 4. **任务管理**:jbpm允许用户分配和管理任务,包括任务...

    jbpm4jbpm5

    jbpm4.3表结构和表字段说明文档通常会详细介绍jbpm4中涉及的数据库表,包括实体如任务实例(TaskInstance)、流程实例(ProcessInstance)、工作项(WorkItem)等的表结构和字段。这些信息对于开发者来说至关重要,...

    jbpm中文教程-详细

    jbpm支持多种任务分配策略,包括人工任务和自动任务。 3. 实例(Process Instance):当流程被启动时,就会创建一个实例。每个实例代表了流程的一个具体执行。 4. 变量(Variable):在流程中,可以设置和修改变量...

    jBPM4.3中文开发手册

    jbPM(Java Business Process Management)是一个开源的工作流管理系统,专注于业务流程的建模、执行和监控。jbPM4.3是该系统的早期版本,但仍然包含了丰富的功能和工具,为企业级业务流程管理提供了强大的支持。本...

    jBPM6中英文对应帮助文档

    jBPM6提供了工作流服务,如任务服务、事件服务和信号服务等,这些服务可以用于处理流程中的任务分配、通知、事件触发等操作。任务服务允许用户在流程中定义人工作业,而事件服务则可以帮助实现流程的异步处理和响应...

    jbpm4.4中文开发指南

    9. **开发工具**: 配套有jbpm工作台(jbpm Workbench),一个可视化的流程设计和管理工具,方便开发者和业务分析师进行流程模型的设计和测试。 10. **社区支持**: jbpm4.4作为开源项目,拥有活跃的社区,提供官方...

    jBPM4.1中文开发指南

    在jBPM4.1中,可以通过定义流程图来表示工作流,这些流程图可以直观地展示任务的执行顺序和条件。 **2. 活动(Activity)**:活动是工作流中的基本单元,它可以是任何类型的操作,如人工任务、自动任务或子流程等。...

    jBPM教学视频(07组织机构.zip)

    在jBPM中,组织机构管理是通过用户、组和角色的概念来实现的。用户代表系统中的个体,组则是一组用户的集合,而角色则定义了用户在流程中的职责和权限。 - **用户(User)**: 用户是系统的操作者,可以参与流程的...

    jbpm4.4 中文手册

    5. **任务管理**:jbpm4.4提供了任务服务,包括任务分配、完成、查询等功能,使得业务流程中的任务可以被正确地执行和跟踪。 6. **规则引擎**:jbpm4.4集成了JBoss Drools,一个强大的规则引擎,使得业务逻辑可以...

    JBPM3.2与Spring结合时任务调度的实现.doc

    JBPM3.2与Spring的整合主要是为了实现任务调度的功能,这在企业级应用中是非常重要的,因为它能够自动化执行定时任务,如流程启动、数据同步、报告生成等。在JBPM3.1.x版本中,通过SpringModules提供的`spring-...

    JBPM教学课件PPT

    2. 任务服务:JBPM提供了任务服务,用于管理流程中的任务,如任务创建、分配、完成和查询等。 3. 决策服务:通过与Drools(一个规则引擎)集成,JBPM可以实现基于规则的决策节点,动态调整流程路径。 四、流程监控 ...

    JBPM4.0源码以及分析

    PVM是JBPM中的虚拟机,它是流程执行的基础。PVM负责解析流程定义(JPDL)并执行流程实例。PVM的设计理念是事件驱动的,它通过状态机模型来表示流程的执行状态。当流程实例运行时,PVM会根据接收到的事件来触发相应的...

Global site tag (gtag.js) - Google Analytics