首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

转载:jbpm4中替TASK指定角色用户

2012-06-27 
转载:jbpm4中为TASK指定角色用户在JBPM4中,为TASK指定某个角色的用户,是十分常见的需求,本文针对这个大概

转载:jbpm4中为TASK指定角色用户

在JBPM4中,为TASK指定某个角色的用户,是十分常见的需求,本文针对这个大概讲解下思路。?
?? 如有填写申请--审批两个流程,分别由申请岗和审批岗两个岗位的人去执行, 可以设计流程文件如下:?
? <task? g="513,209,92,52" name="确认到帐">?
<assignment-handler name="to 审核" to="审核"/>?
?? </task>?
???
?? <task? g="533,439,92,52" name="审核">?
<assignment-handler name="非其他选项" to="exclusive1"/>?
?? </task>?


可以看到,这里每个TASK中,都使用了assignment-handler,这里没个task的name,设定为跟角色的名称一样,则在每个AssignTask中,可以这样写:?

?

public class AssignTask  extends BaseBiz implements AssignmentHandler { ProcessEngine processEngine=Configuration.getProcessEngine();    TaskService taskService=processEngine.getTaskService();   public void assign(Assignable arg0, OpenExecution execution) throws Exception {      List<String> list_user=new ArrayList();      String pid=execution.getProcessInstance().getId();        TaskImpl taskImpl = (TaskImpl)arg0;        ExecutionImpl executionImpl = (ExecutionImpl)execution;     String activityname=executionImpl.getActivityName();       //如果当前结点为确认到帐,则为其分配qr,qr1两个用户,这两个用户可以从数据库中,根据角色读取       if (activityname.equals("确认到帐"))       { list_user.add("qr"); list_user.add("qr1");       }      //最后使用addCandidateUser把用户都加进去     for (String user : list_user) { arg0.addCandidateUser(user); } 

?

可以看到,在实际应用中,应该把比如“确认到帐”这样的角色的用户加载进来,放到list_user中去。?
?? 最后要注意的是,如果遇到FORK-JOIN的话,必须用JBPM 4.4,用4.3的话,会遇到BUG的,开始还以为我的这个方法不行,其实是JBPM4.3的一个BUG,换成4.4都OK了

转载:http://jackyrong.iteye.com/blog/1164758

?

?

总结:

?

1.在task节点配置assignment-handler, 指向你实现了AssignmentHandler接口的实现类。
2.在实现类里的assign方法里写分配的逻辑。前提是你的系统里有按角色或分组划分的权限系统,把部门领导都放到某个角色或者分组里去。
3. 在task节点加上candidate-group="部门领导所在的分组"
这种基于候选组的方式,扩展最灵活,就算人员有变化也不怕。

热点排行