更多ruoyi-nbcio功能请看演示系统
gitee源代码地址
前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio
演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/
更多nbcio-boot功能请看演示系统
gitee源代码地址
后端代码: https://gitee.com/nbacheng/nbcio-boot
前端代码:https://gitee.com/nbacheng/nbcio-vue.git
在线演示(包括H5) : http://218.75.87.38:9888
1、因为根据网友的要求,希望流程任务可以设置为任何人,就是指定接收人,这个接收人是在流程流转的时候进行动态选择的
2、主要的后端代码如下,具体看开源项目代码:
对流程启动的时候做特殊处理,同时在任务完成这里做一些处理
else if(StringUtils.equalsAnyIgnoreCase(nextFlowNode.getUserList().get(0).getUserName(), "${approval}")) {//对接收人做特殊处理 //taskService.complete(task.getId(), variables);return R.ok("流程启动成功给发起人,请到我的待办里进行流程的提交流转.");}
// 处理下一级接收人if(ObjectUtil.isNotEmpty(taskBo.getNextApproval())) {this.assignNextApproval(bpmnModel, taskBo.getProcInsId(), taskBo.getNextApproval());}/*** 指派下一任务接收人* @param bpmnModel bpmn模型* @param processInsId 流程实例id* @param userIds 用户ids 这个实际上换成userNames了*/private void assignNextApproval(BpmnModel bpmnModel, String processInsId, String userIds) {// 获取所有节点信息List<Task> list = taskService.createTaskQuery().processInstanceId(processInsId).list();if (list.size() == 0) {return;}Queue<String> assignIds = CollUtil.newLinkedList(userIds.split(","));if (list.size() == assignIds.size()) {for (Task task : list) {taskService.setAssignee(task.getId(), assignIds.poll());}return;}}
3、前端处理
增加一个指定接收人,并增加逻辑判断
else if (val === 'APPROVAL') {//userTaskForm.assignee = "${approval}";userTaskForm.assignee = "${getNextApprovalHandler.getApproval(execution)}";userTaskForm.text = "指定接收人";}
4、效果图如下:
下面的张三是通过审批的时候进行指定的