博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iMatrix平台流程引擎之办理人设置分享!
阅读量:6431 次
发布时间:2019-06-23

本文共 2418 字,大约阅读时间需要 8 分钟。

hot3.png

1)       
iMatrix平台流程设计器设置:
     
19102841_gQ4m.png
   可以有四种配置:文档创建人、上一环节办理人指定、文档字段中指定的人员、按条件筛选。
2)        办理人设置的监听类:
  xml中配置监听类,如下:
<task name="填单"g="251,75,80,40">
    <assignment-handlerclass="com.norteksoft.wf.engine.core.AssignmentHandler"/>
         … … … …
</task>
  监听类AssignmentHandler实现jbpm的org.jbpm.api.task.AssignmentHandler接口
public classAssignmentHandler implements org.jbpm.api.task.AssignmentHandler
{
… … … …
//根据流程设计器配置的办理人,获得办理人列表:
candidates = TransactorConditionHandler.processCondition(conditions,execution,paramMap);
… … … …
if(candidates.size() == 1){
//将获得的办理人设置到jbpm任务中
     assignable.setAssignee(candidates.iterator().next());
}
else 
if(candidates.size() == 0){
      //没有办理人时抛出异常信息
     
throw 
newWorkflowException(WorkflowException.
NO_TRANSACTOR);
}
else{
     
for(String candidate :candidates){
     //将获得的办理人设置到jbpm任务的办理人候选人列表中
            assignable.addCandidateUser(candidate);
     }
}
… … … …
}
我们再来看看TransactorConditionHandler.processCondition的实现:
publicstatic  Set<String>processCondition(Map<TaskTransactorCondition, String> conditions,OpenExecution execution,Map<String,String> param){
… … … …
if("${documentCreator}".equals(userCondition)){
     //文档创建人,即为发起实例的人的登录名
     candidates.add(param.get(
DOCUMENT_CREATOR));
  }
else 
if("${previousTransactorAssignment}".equals(userCondition)){
     //上一环节办理人指定,当是这种情况时,需要弹出选人界面让上一环节办理人选择该环节的办理人
     candidates.add(CommonStrings.
TRANSACTOR_ASSIGNMENT);
  }
else 
if(userCondition.startsWith("${field[")){
     //文档字段中指定//${field[name_zn[name_en]]}
     … … … …
}
else{
    //按条件筛选
… … … …
}
}
生成任务时的处理方式是,根据jbpm任务生成imatrix的任务实体:
TaskService.java的generateTask方法:
public void generateTask(WorkflowInstance instance, StringexecutionId, String parentExecutionId){
  … … … …
  for(org.jbpm.api.task.Tasktask : jbpmTasks){
            … … … …
            if(task.getAssignee()== null){//任务有多个办理人
                     //获得jbpm任务的候选人列表,此处获得的人员列表为监听类AssignmentHandler中addCandidateUser中的人员
Iterator<ParticipationImpl> it =((TaskImpl)task).getParticipations().iterator();
… … … …
while(it.hasNext()){
     //创建imatrix的任务实体
     wfTask = createTask(instanceId, task.getExecutionId(),it.next().getUserId(), task.getActivityName(),groupNum);
//审批任务有多个办理人,且流程设计器中设置为多人办理时,将imatrix的认为设置为待领取
     if(!wfTask.getMoreTransactor()){                                                                                                     wfTask.setActive(TaskState.DRAW_WAIT.getIndex());
     }
… … … …
}else{//任务只有一个办理人
     tasks.add(createTask(instanceId, task.getExecutionId(),task.getAssignee(), task.getActivityName(),groupNum));
}
}

}

如有问题请登录iMatrix平台论坛:http://bbs.imatrix.net.cn/forum.php?mod=forumdisplay&fid=37 咨询。

转载于:https://my.oschina.net/imatrix/blog/155214

你可能感兴趣的文章
HDOJ 2034 人见人爱A-B
查看>>
Mysql学习笔记(二)数据类型 补充
查看>>
java通过抛异常来返回提示信息
查看>>
手动清理Oracle审计记录
查看>>
模态窗口其实就是在当前窗口调用系统的消息循环,响应用户的操作,将相关的消息发送到对应的窗口(转)...
查看>>
[20170310]关于在线日志与归档4.txt
查看>>
阿里云发布混合云存储阵列,助力企业数字化转型
查看>>
Linux下Wi-Fi的实现:wireless_tools和wpa_supplicant
查看>>
阿里云与Intel联合发布加密计算技术 神龙云服务器提供亚洲首个云上“芯片级”数据保护...
查看>>
四款新品发布:科沃斯机器人从家用到商用的进击之道
查看>>
linu下C语言之BMP图片操作编程(下)
查看>>
【PMP】PMBOK 笔记 第3章 项目管理过程
查看>>
关于数据科学的那些事
查看>>
内存管理Memory&amp;nbsp;OC——第九天
查看>>
童小军:用户是大数据的本质驱动力
查看>>
(cljs/run-at (JSVM. :all) "Metadata就这样哦")
查看>>
RSA总裁:三个安全问题拖延云计算实施
查看>>
MySQL 第八篇:自定义函数、存储过程、游标
查看>>
云计算平台只是提供云服务的第一步
查看>>
别让程序员的职业步伐停止在35岁,如何让我们走得更远
查看>>