基于jeecg-boot的flowable流程提供一种动态设置发起人部门负责人的方式

181 篇文章 13 订阅
订阅专栏
85 篇文章 3 订阅
订阅专栏
45 篇文章 2 订阅
订阅专栏

更多功能看演示系统

gitee源代码地址

后端代码: https://gitee.com/nbacheng/nbcio-boot

前端代码:https://gitee.com/nbacheng/nbcio-vue.git

在线演示(包括H5) : http://122.227.135.243:9888

    这里给大家提供一种动态设置下个节点为发起人部门负责人的方式,当然也可以通过其它方式来完成这种功能。

    注意这里需要那个节点要设置为部门负责人,那就在这个节点的前面一个节点进行设置。

    目前设置任务监听器如下:

    类型为创建

    监听器类型为java类

    名称为:com.nbcio.modules.flowable.listener.SetDeptHeadTaskListener

SetDeptHeadTaskListener 具体代码如下:

package com.nbcio.modules.flowable.listener;

import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.service.delegate.DelegateTask;
import org.jeecg.common.util.SpringContextUtils;
import org.springframework.stereotype.Component;

import com.nbcio.modules.flowable.apithird.service.IFlowThirdService;

import java.util.Map;
import java.util.List;
import java.util.ArrayList;

/**
 * 根据发起人动态设置发起人的部门领导
 * @author nbacheng
 * @date 2023-3-02
*/

public class SetDeptHeadTaskListener implements TaskListener{

	private static final long serialVersionUID = 1L;
	private TaskService taskService = SpringContextUtils.getBean(TaskService.class);
	private IFlowThirdService flowThirdService = SpringContextUtils.getBean(IFlowThirdService.class);
	RuntimeService runtimeService = SpringContextUtils.getBean(RuntimeService.class);
	
	@Override
	public void notify(DelegateTask delegateTask) {
		
		String taskId = delegateTask.getId();

        // 获取流程发起人
		ProcessInstance processInstance = runtimeService
                .createProcessInstanceQuery()
                .processInstanceId(delegateTask.getProcessInstanceId())
                .singleResult();
        String startUserId = processInstance.getStartUserId();
        // 获取部门负责人列表
		List<String> depIds = flowThirdService.getDepartIdsByUsername(startUserId);
		List<String> DepHeadlist = new ArrayList<String>();
		for(String depId: depIds) {
			List<String> depList = flowThirdService.getDeptHeadByDepId(depId);
			if(depList != null) {
				DepHeadlist.addAll(depList);
			}
			
		}
		// 部门负责人列表去重
		List<String> listDistinctResult = new ArrayList<String>();
		if(!DepHeadlist.isEmpty() ) {
		    for (String str : DepHeadlist) {
		        if (!listDistinctResult.contains(str)) {
		        	listDistinctResult.add(str);
		        }
		    }
		}
		
		Map<String, Object> map = taskService.getVariables(taskId);
		map.put("SetDeptHeadTaskListener", listDistinctResult);
		taskService.setVariables(taskId, map);
	}
}

在流程定义发起地方增加下面代码

if(nVariablesMap.containsKey("SetDeptHeadTaskListener")) {//是否通过动态设置发起人部门负责人的任务监听器
						  taskService.complete(task.getId(), variables);
						  Task nexttask = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).active().singleResult();
						  if(Objects.nonNull(nexttask)) {
							  if(Objects.nonNull((List<String>) nVariablesMap.get("SetDeptHeadTaskListener"))) {
								  if(((List<String>) nVariablesMap.get("SetDeptHeadTaskListener")).size() == 1) {//是否就一个人
									  taskService.setAssignee(nexttask.getId(), ((List<String>)nVariablesMap.get("SetDeptHeadTaskListener")).get(0).toString());
							          return Result.OK("设置发起人部门负责人的任务监听器流程启动成功.");
								  }
								  else {
									  for (String username : ((List<String>) nVariablesMap.get("SetDeptHeadTaskListener"))) {
	        							  taskService.addCandidateUser(nexttask.getId(), username);
	        						  }
						             return Result.OK("设置多个发起人部门负责人的任务监听器流程启动成功,目前用户可通过签收方式完成审批."); 
								  }
								  
							  }
							
						  }
						  
					}

在流程任务完成里增加如下代码

if (Objects.nonNull(taskVo)) {
    		if(nVariablesMap.containsKey("SetDeptHeadTaskListener")) {//是否通过动态设置下一个节点是发起人部门负责人审批的任务监听器
    			if(taskService.createTaskQuery().processInstanceId(taskVo.getInstanceId()).taskDefinitionKey(nextFlowNode.getUserTask().getId()).active().count() == 1) {//一个目标用户任务节点只能设置一次
    	    		  Task nexttask = taskService.createTaskQuery().processInstanceId(taskVo.getInstanceId()).taskDefinitionKey(nextFlowNode.getUserTask().getId()).active().singleResult();
    				  if(Objects.nonNull(nexttask)) {
    					  if(Objects.nonNull((List<String>) nVariablesMap.get("SetDeptHeadTaskListener"))) {
    						  if(((List<String>) nVariablesMap.get("SetDeptHeadTaskListener")).size() == 1) {//是否就一个人
        						  taskService.setAssignee(nexttask.getId(), ((List<String>)nVariablesMap.get("SetDeptHeadTaskListener")).get(0).toString());
        						  return;
        					  }
        					  else {
        						  for (String username : ((List<String>) nVariablesMap.get("SetDeptHeadTaskListener"))) {
        							  taskService.addCandidateUser(nexttask.getId(), username);
        						  }
        						  return;
        					  }
    					  }
    				  }
    			}	  
			}
    	}

具体流程图设置如下:

 效果图如下:

 

Flowable深入浅出-13 Flowable-BPMN操作流程流程进展查看之流程
01-17
Flowable深入浅出-13 Flowable-BPMN操作流程流程进展查看之流程图,欢迎在我的专栏查看该文章(第13篇),专栏地址:https://blog.csdn.net/houyj1986/column/info/31755
基于jeecg-bootflowable流程增加部门经理审批功能
宁波阿成的博客
08-10 1118
基于jeecg-bootflowable流程增加部门经理审批功能
JEECG/SpringBoot集成flowable流程框架
最新发布
Counter-Strike大牛
04-23 811
yml增加flowable配置 项目中新增配置文件 FlowableConfig SecurityConfiguration 流程Controller 创建流程【*.bpmn20.xml】 排除冲突 MybatisPlusSaasConfig: 将 替换为: 测试 提交请假申请 http://localhost:8080/jeect-boot/askForLeave/employeeSubmit?name=Bruce&reason=有事&days=3&employeeNo=213http://lo
flowable 自定义任务者的配置【例为同节点顺序审批配置】
杨鑫的博客
10-26 5356
在审批流中,我们经常遇到,一个任务节点,需要部门主管一层层的审批,但任务又不能同时发放,目前直接的flowable分配,貌似解决不了【也可能个人没了解到】,所以,我们可以做一个自定义监听器。 如下图 部门主管,可能需要上三层主管按照层级审批,如何配置成活动的呢?直接上配置 首先,多实例类型选串行,采集设置assigneelist 完成条件配置${nrOfCompletedInsta...
基于jeecg-bootflowable支持动态人员设置
宁波阿成的博客
05-18 1060
基于jeecg-bootflowable支持动态人员设置 通用的支持动态人员设置,包括动态设置多实例流程
jeecg-boot仿版本
08-25
jeecg-boot仿版本
Flowable设置流程发起人
胥平勇的博客
01-19 4234
FLowable设置流程发起人一种方式 直接调用原生的api设置流程的启动人 // set Flowable authenticated Authentication.setAuthenticatedUserId("123"); runtimeService.startProcessInstanceByKey("ceshi"); Authentication.setAuthenticatedU...
基于jeecgbootflowable流程支持服务任务的功能
宁波阿成的博客
12-17 1800
基于jeecgbootflowable流程支持服务任务的功能 ServiceTask
项目实训jeecg集成flowable工作流
热门推荐
qq_48308138的博客
05-06 1万+
jeecg集成flowable
flowable 使用流程发起人分配
路过君的博客
07-20 2224
flowable 使用流程发起人分配
基于jeecg-boot3.0和flowable6.7.2的NBCIO 亿事达企业管理平台后端V1.0.0代码
07-14
NBCIO 亿事达企业管理平台后端代码,基于jeecg-boot3.0和flowable6.7.2,初步完成了集流程设计、流程管理、流程执行、任务办理、流程监控于一体的开源工作流开发平台,同时增加了聊天功能、大屏设计器、网盘功能和...
workflow-bpmn-modeler-jeecgboot V0.1.0
07-14
workflow-bpmn-modeler-jeecgboot 为了适应jeecg-boot做了在原来workflow-bpmn-modeler组件基础上修改与调整,同时做了一些bug修正。
基于RuoYi-VUE版本开发的OA协同办公系统源码 集成Flowable流程引擎
08-12
2.部门管理:配置系统组织机构,树结构展现支持数据权限。 3.岗位管理:配置系统用户所属担任职务。 4.菜单管理:配置系统菜单,操作权限,按钮权限标识等。 5.角色管理:角色菜单权限分配、设置角色按机构进行数据...
Springboot +Flowable设置任务处理人的四种方式(二)
weixin_40991408的博客
05-04 1378
Springboot +Flowable设置任务处理人的四种方式(二)
JEECG集成flowable
书读百遍,其义自见
03-25 3961
目录一、后端1、新建子工程 pom.xml引入2、配置类2.1 数据库连接2.2 权限配置2.3 这个主要是用来覆盖flowable获取当前用户的逻辑3、主工程3.1 重写类 SecurityUtils3.2 新增发布流程的逻辑3.2 配置文件二、前端1、去官网下载包,然后把flowable-modeler的static复制到前端工程public目录下2、修改配置2.1 修改 app-cfg.js2.2 修改public/flowable/scripts/common/providers-config
jeecg集成flowable
liuxianwen1990的博客
06-28 1832
参考https://ask.csdn.net/questions/683348 /** * 生成数据源. @Primary 注解声明为默认数据源 */ @Bean(name = "dataSource") @ConfigurationProperties(prefix = "spring.datasource.dynami...
基于jeecg-bootflowable流程跳转功能实现
宁波阿成的博客
08-24 1097
前端代码:https://gitee.com/nbacheng/nbcio-vue.git。后端代码: https://gitee.com/nbacheng/nbcio-boot。在线演示(包括H5) : http://122.227.135.243:9888。今天我们实现nbcio-bootflowable流程跳转功能。更多nbcio-boot功能请看演示系统。界面实现,就是点击跳转出来的窗口。gitee源代码地址。
基于jeecgbootflowable流程支持online表单(三)
宁波阿成的博客
11-15 1608
基于jeecgbootflowable流程支持online表单(三) 这部分主要是实现online表单的各种形式表单,包括主从表表单,同时录入采用现有官方的模式录入数据,通过选择已有数据的方式进行流程申请与审批,免去各种录入组件等兼容性问题。
jeecgboot flowable
08-09
Jeecgboot Flowable是一个流程引擎,它是Jeecgboot框架的一部分。Jeecgboot Flowable是基于Flowable流程引擎的二次封装和扩展。 Flowable是一个开源的BPMN(业务流程建模和记号化)流程引擎,它提供了一套强大的工具和API,用于创建、管理和执行各种类型的工作流程。使用Flowable,我们可以轻松地设计和实现复杂的工作流。 Jeecgboot Flowable利用Flowable的功能集成到Jeecgboot框架中,使得在Jeecgboot框架上开发和管理工作流程变得更加简单和高效。Jeecgboot Flowable提供了一系列的API和页面,用于定义和部署工作流程、管理任务和用户、监控工作流程执行,以及生成工作流程的报表等。 使用Jeecgboot Flowable,我们可以轻松地创建和管理各种类型的工作流程,如审批流程、订单流程、采购流程等。我们可以通过定义流程图,设置节点和任务,以及指定流程变量和表单等来自定义工作流程。通过Jeecgboot Flowable提供的页面,我们可以实时监控工作流程的执行情况,查看任务状态和执行日志。 总之,Jeecgboot Flowable是一个基于Flowable流程引擎的框架扩展,它提供了一套完整的工作流程管理解决方案。通过使用Jeecgboot Flowable,我们可以轻松地创建、管理和监控复杂的工作流程,提高工作效率和管理效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • VUE里修改element-ui的显示层次与上下间隔 6285
  • 基于Jeecgboot前后端分离的流程管理平台 6243
  • 海购 5641
  • 打造高逼格、可视化的监控系统平台 5390
  • node node-sass sass-loader版本对应问题,对于npm编译大家经常遇到这个问题 4494

分类专栏

  • java开发 181篇
  • jeecg-boot 45篇
  • flowable 172篇
  • vue3 62篇
  • nbcio-boot 85篇
  • ruoyi-nbcio 137篇
  • mysql 14篇
  • 前端vue 132篇
  • 若依 57篇
  • jenkins 6篇
  • vue 18篇
  • 表单设计器 7篇
  • nodejs 5篇
  • ruoyi-nbcio-plus 52篇
  • oracle 1篇
  • AI 5篇
  • 人工智能 3篇
  • java 3篇
  • xxl-job 1篇
  • 百度 2篇
  • centos 1篇
  • nginx 1篇
  • java表达式引擎 1篇
  • minio 2篇
  • linux 7篇
  • ruoyi 2篇
  • formdesigner 1篇
  • ChatGPT
  • jeecgboot 1篇
  • android 48篇
  • python 2篇
  • 投资理财 1篇
  • 宜搭 1篇
  • 钉钉开发 2篇
  • 个人生活 13篇
  • MTK 1篇
  • 大数据 3篇
  • SAP 30篇
  • 网络 1篇
  • 数据库 42篇
  • 系统管理 61篇

最新评论

  • 基于若依的ruoyi-vue3.8.7的flowable支持指定接收人的流程审批后端部分

    weixin_44713649: 那遗憾了表情包以为你发了3.8.7可能有

  • 基于若依的ruoyi-vue3.8.7的flowable支持指定接收人的流程审批后端部分

    宁波阿成: 目前没有

  • 基于若依的ruoyi-vue3.8.7的flowable支持指定接收人的流程审批后端部分

    weixin_44713649: 这个3.8.7版本项目有地址吗,大佬

  • 基于jeecg-boot的NBCIO 亿事达企业管理平台

    水君无悔: 可以用来做二次开发吗?

  • Flowable 7.0.1 release

    宁波阿成: 那你怎么没看plus版本呢,用的就是7.0.1

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 基于jeecgboot-vue3的Flowable流程-我的任务(四)
  • 基于jeecgboot-vue3的Flowable流程-我的任务(三)
  • 基于jeecgboot-vue3的Flowable流程-我的任务(二)
2024
06月 2篇
05月 27篇
04月 38篇
03月 35篇
02月 15篇
01月 22篇
2023年198篇
2022年96篇
2019年1篇
2016年6篇
2015年1篇
2014年95篇
2013年37篇
2012年39篇
2011年60篇
2010年8篇
2009年37篇

目录

目录

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁波阿成

你的支持,是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司杭州网站优化软件多少钱陇南建站公司雅安网站排名优化多少钱酒泉百度竞价推荐淄博如何制作网站报价景德镇百度seo报价潮州百度关键词包年推广哪家好海北网站优化排名哪家好湛江百度标王哪家好张家界百度爱采购价格韶关网站设计模板公司阜阳网站seo优化哪家好湘潭网站优化推广和田网站改版价格长春网页制作报价商洛网站优化按天扣费云浮网站推广工具价格丹竹头英文网站建设公司吉安模板网站建设价格鄂州网站关键词优化推荐肇庆SEO按天收费公司洛阳网站推广南昌SEO按天计费推荐双龙网站改版多少钱宜春网站设计模板推荐台州seo网站推广价格威海企业网站制作推荐海口百度竞价包年推广价格景德镇关键词按天收费公司大同关键词按天计费报价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化