Activiti 开发案例之动态指派任务

摘要:
以上是请假流程图,以下是流程任务节点的描述:员工启动请假流程,部门经理批准,然后进入人员审批拒绝,然后调整申请或直接结束流程。人员审批拒绝,然后进入休假取消阶段,并调整申请或直接结束流程。员工取消休假结束流程任务分配员工启动应用程序ProcessInstanceprocess=runtimeService。startProcessInstanceByKey(“离开”,businessKey,v

Activiti 开发案例之动态指派任务第1张

流程图

Activiti 开发案例之动态指派任务第2张

以上是一个请假的流程图,以下为流程任务节点描述:

  • 员工发起请假流程
  • 部门经理审批
  • 同意则进入人事审批
  • 拒绝则调整申请或者直接结束流程
  • 人事审批通过则进入销假环节
  • 人事审批拒绝则调整申请或者直接结束流程
  • 员工销假结束流程

任务分配

员工发起申请

ProcessInstance process = runtimeService.startProcessInstanceByKey("leave",businessKey, variables);
Task task = taskService.createTaskQuery().processInstanceId(process.getId()).active().singleResult();
//此时,不要应删除掉流程图中赋值的角色,否则会重复
taskService.addCandidateGroup(task.getId(),"部门经理");

部门经理审批

通过逻辑:

Map<String,Object> variables=new HashMap<String,Object>();
variables.put("approve", "true");
Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).active().singleResult();
//一定要认领任务之后,重新获取当前任务,然后分配角色。
taskService.claim(taskId, userId);
taskService.complete(taskId, variables);
task = taskService.createTaskQuery().processInstanceId(process.getId()).active().singleResult();
//此时,不要应删除掉流程图中赋值的角色,否则会重复
taskService.addCandidateGroup(task.getId(),"人事");

拒绝逻辑:

Map<String,Object> variables=new HashMap<String,Object>();
variables.put("approve", "false");
Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).active().singleResult();
//一定要认领任务之后,重新获取当前任务,然后分配角色。
taskService.claim(taskId, userId);
taskService.complete(taskId, variables);
task = taskService.createTaskQuery().processInstanceId(process.getId()).active().singleResult();
//applyId为申请人ID
taskService.addCandidateUser(task.getId(),applyId);

待办任务

API 查询

TaskQuery taskQuery = taskService.createTaskQuery();
List<Task>  list = taskQuery.taskCandidateOrAssigned(userId)

使用API的话,需要做视图映射,Activiti开发案例之创建用户表视图实现关联查询

SQL 查询

-- 多个用户或者角色可以用 IN 
select  distinct RES.* from ACT_RU_TASK RES 

left join ACT_RU_IDENTITYLINK I on I.TASK_ID_ = RES.ID_ 

WHERE SUSPENSION_STATE_ = '1' 

AND ( RES.ASSIGNEE_ ='99' or (RES.ASSIGNEE_ is null 

AND ( I.USER_ID_  = '99' or I.GROUP_ID_  = '部门经理'  ))) 

免责声明:文章转载自《Activiti 开发案例之动态指派任务》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用js实现图片的无缝滚动效果Wordpresss建站笔记:Astra主题修改底部菜单下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

activiti 工作流

1. 工作流的概念 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。 工作流管理系统(Workflow Management System, WfMS)是一个软件系统,它完成工作量...

eclipse安装Activiti Designer插件(转载:http://blog.csdn.net/qq_33547950/article/details/54926435)

为了完成毕业设计,需要学习Activiti。万事开头难,果然刚开始就遇到了问题。《Activiti实战》和视频教程里提供的安装Activiti Designer插件方法(即下文方法一)不能成功安装。各种百度之后大概有以下方法,其中方法二(改)实测安装成功,感谢网上的无名大神们。 方法一:在线安装(可能因网络等原因安装失败) 打开eclipse,在Hel...

jbpm 6 vs activities 5评估(持续更新、亲测实际项目评估)

最近我们有个使用了jbpm 6.2(6.2是一个较大的里程碑)的批处理模块,因为大BOSS一直觉得太重了,希望有更加轻量级的解决方案,因为我们基本上没有真正意义上流程的概念,只有静态的流程图,因为一直忙于其他事情,于是这周才正式开始研究jbpm的一些细节(前几年很多支持的项目中也接触过,不过更多的是解决一些故障类问题,本身对流程类的不感冒)。顺便研究了下j...

Spring boot 整合Activiti中遇到的问题

Pom.xml 配置<!-- activiti --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <vers...

eclipse安装activiti工作流插件

方式一:在有网络的情况下,安装流程设计器步骤如下: 1、点击eclipse上方工具栏的Help,选择Install New Software 2、弹出如下窗口,然后填写插件名称和安装地址 Name: Activiti BPMN 2.0 designer Location: http://activiti.org/designer/update/然后便是不...

Activiti如何替换已部署流程图

  首先交代下背景:我们有一个已经上线的activiti工作流系统,对于流程图的操作已经封装好部署,查看,删除的接口。此时客户提出要修改个别流程图里的节点名称。   我的第一个想法就是本地修改流程图bpmn文件,然后去客户端先调用删除接口删除旧流程图,然后调用部署接口添加修改后的流程图,然而事实上,因为系统已经上线,此时存在大量运行中的工作流数据,一旦执行...