`
wuxufeng8080
  • 浏览: 49442 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

ActorID & PooledActors

    博客分类:
  • jBPM
阅读更多

jBPM有两种分配任务的模式,推模式和拉模式。

推模式:系统主动分配任务给actorID。推模式只有一个人能参与这个任务。通过actorId指定用户

拉模式:actorId去申请这个任务。拉模式的任务可以是多个人参与的,但是只能有其中的一个人能结束。通过PooledActors指定用户群。

当同时指定了这两个属性的时候,actorId才是真正被指定的参与者。只有这个参与者才能完成这个任务,其他的在PooledActors里面的用户,是无法得到这个任务的,所以也没有办法处理这个任务。

设置用户

推模式:Assignable.setActorID(String actorId)

拉模式:Assignable.setPooledActors(String[] actorIds)

得到用户任务列表

推模式:TaskMgmtSession.findTaskInstances(String actorId)

拉模式:TaskMgmtSesion.findPooledTaskInstances(String actorId)  TaskMgmtSession.findPooledTaskInstances(List actorIds)

到今天才真正了解了为什么有些人把pooledActors翻译成候选参与者,因为当有真正的参与者的时候,候选参与者是没有权利查看并完成任务的。

又或者只设置了pooledActors的那个taskInstance称之为共享任务。只要在pooledActors数组里面的用户都可以查看并完成这个任务。所以防止冲突,需要把执行任务的这个候选参与者升格为参与者,即把这个用户设置到actorID里面,如果需要重新把这个任务作为共享任务,只需要把actorId这个属性设置为null.

以上是今天研究用户权限的一些体会。经过这几天的研究,发现jBPM没有想象中的负责,不过还有很多的地方没有没有搞清楚,继续努力......

分享到:
评论
3 楼 cun2001 2007-09-14  
楼上你说的问题在实际应用中是存在的,有可能A中的Actor已经处理并结束了任务实例,这样B再处理肯定会出错,可以在B操作时判断该任务实例是否已经有Actor,若有的话则抛异常(“该任务已被处理”)。
2 楼 whk1007 2007-07-20  
写的非常好.可是在实际开发过程中,却不太好处理.比如A和B同时读取了这个TASKINSTANCE,如果A先把自己的ACTOR付给了TASKINSTANCE. 可是这个时候,B已经读取了这个TASKINSTANCE,只不过还没来的及在A之前SETACTOR,那么当B再接着操作时,就会出错了.因为这时,TASKINSTANCE已经属于A了.
1 楼 ladyloveme 2007-07-18  
写的很好!!

相关推荐

    jbpm安装及使用方法

    如果不存在,再去找task属性里 assignmentDelegation(分配代理类)通过代理类(即我们自己写的实现AssignmentHandler这个接口的类)指定ActorId或 PooledActors。 13. jbpm的用户角色管理 jbpm在用户角色管理上共...

    数据库设计样题1

    外码:Series.SeriesID引用Studios.StudioID, Episodes.SeriesID引用Series.SeriesID, Characters.SeriesTitle引用Series.Title, Characters.ActorID引用Actors.ActorID, Characters.EpisodeID引用Episodes....

    jbpm任务分配管理.doc

    在jbpm中,任务实例(Task instance)是由一个`actorId`标识的,这个`actorId`通常对应于执行任务的用户或用户组。任务实例的数据存储在数据库的`jbpm_taskinstance`表中,以便于查询和管理。当你需要获取某个用户...

    jbpm5持久化及流转流程剖析

    例如,"OrganizationEntity"可能是一个自定义的实体类,用于存储与组织结构相关的数据,如用户组(groupId)和用户(actorId)。在流程启动时,将这些信息初始化到数据库中,确保流程运行时能够正确地识别和分配任务...

    struts2<s:if>使用心得

    1. **初始化数据**:创建一个任务列表,每个任务包含`actorId`和`name`字段。 2. **渲染页面**:遍历任务列表,对于每个任务使用上面提到的`&lt;s:if&gt;`结构进行条件判断,根据任务的状态动态显示任务信息。 ### 总结 ...

    一个jbpm实例说明

    在XML代码中,`start-state`是流程开始,`transition`定义了从一个状态到另一个状态的流转,`task-node`表示任务节点,`assignment`用于指定任务由哪个角色(actorId)来完成。在此例中,"部门经理审批"任务节点的`...

    合区_合区_雷霆合区文字教程_arrangepnd_雷霆教材_

    1.先处理【二区】的所有表的角色...以下是以二区为例子,到二区的库去执行以下语句:二、导入之前要先把一区globaluser表和actors表的userid字段的自动递增关掉三、导入之前要先把actors表的actorid字段的自动递增关掉

    jbpm5 工作流

    首先,当启动一个任务流程时,会通过线程启动TaskServer,初始化OrganizationEntity,并将流程所需的groupId和actorId存储到数据库中。接着,根据.bpmn2或.bpmn文件加载流程定义到内存中,注册相关对象如...

    homebridge-selve:用于自卷帘的Homebridge插件

    每个百叶窗都有一个name ,一个device (配对期间在工具应用中使用的相同ActorID(0-63))和可选参数来显示中间位置的虚拟按钮。 示例config.json: " platforms " : [ { " name " : " Selve " , " platform " : ...

    example_sql.zip_Creating

    ActorID INT PRIMARY KEY, Name VARCHAR(100) NOT NULL ); ALTER TABLE dbo.Movies ADD FOREIGN KEY (Director) REFERENCES dbo.Actors (Name); ``` 这样,`Movies`表中的`Director`字段就引用了`Actors`表中的`...

    jbpm5 持久化及流转流程剖析.docx

    1. **启动任务流程时序图**:首先启动TaskServer,这个过程中会持久化Organization实体,如groupId和actorId。然后,流程被启动,包括解析BPMN2文件、开启事务、使用KSession执行任务。 2. **执行StartNode和...

    JBPM新手学习笔记(强烈推荐)

    每个任务节点需要指定执行任务的实体,这通常通过`&lt;assignment&gt;`标签来完成,例如`&lt;assignment actorId="部门经理"&gt;`指定了该任务由部门经理来执行。 5. **过渡(Transition)**:过渡定义了流程实例从一个节点到另...

    Node如何后台数据库使用增删改查功能

    actorId: 'SELECT first_name FROM actor WHERE actor_id=?' } } module.exports = SQL; ``` 然后,在`user.js`文件中,我们将导入`userSql.js`并创建对应的路由来处理HTTP请求。 **1. 增(Insert)** 在Node....

    movies

    INNER JOIN Actors a ON m.ActorID = a.ActorID; ``` 3. **WHERE 子句**:过滤特定条件的记录,如查找评分高于平均值的电影。 ```sql SELECT * FROM Movies WHERE Rating &gt; (SELECT AVG(Rating) FROM Movies); ```...

    JBPM工作流框架详解(JSP应用)

    1.了解工作流的相关概念;2.JBPM的插件安装与配置;3.创建与配置工作流;4.创建简单的工作流;5.创建动态请假工作流;6.发布工作流;7.启动工作流;...11.创建JBPM的各种接口实例实现动态设置actorId的值

    OSWorkFlow 工作流系统设计知识的详细讲解

    &lt;wf:task name="Approval" type="simple" actorId="#{user.id}"&gt; ``` 在这个例子中,我们定义了一个简单的审批流程,包括开始、审批和结束三个阶段。审批任务可以根据结果的不同流向不同的下一步。 ##...

    Jbpm类结构

    - `actorId`: 字符串类型,表示负责人ID。 - `swimlaneInstances`: 泳道实例列表,数量范围为0到n个。 泳道用于将任务分配给不同的角色或团队成员。 #### 21. `org.jbpm.taskmgmt.exe.TaskInstance` 此类用于表示...

    JPA的多表复杂查询的方法示例

    @JoinColumn(name = "actorId", foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT)) public Actor actor; @ManyToOne @JsonIgnore @JoinColumn(name = "regionId", foreignKey =...

Global site tag (gtag.js) - Google Analytics