当前位置: 首页 > news >正文

基于jeecgboot-vue3的Flowable流程仿钉钉流程设计器-发送信息服务处理

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。

1、因为仿钉钉设计器里发送消息处理是一个服务任务,所以要根据这个服务任务进行处理

2、这里目前只对消息进行处理,就是用websocket的发送方式

输入相应的内容,这里也用扩展属性来处理

3、相应的后端代码如下:

public class NotifyNode extends AssigneeNode {private List<NotifyTypeEnum> types;private String subject;private String content;@Overridepublic List<FlowElement> convert() {ArrayList<FlowElement> elements = new ArrayList<>();// 服务节点ServiceTask serviceTask = new ServiceTask();serviceTask.setId(this.getId());serviceTask.setName(this.getName());serviceTask.setAsynchronous(false);serviceTask.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_CLASS);serviceTask.setImplementation("org.jeecg.modules.flowable.ServiceTask.notifyDelegate");//增加扩展属性 add by nbachengMap<String, List<ExtensionElement>> extensionElements = new HashMap<String, List<ExtensionElement>>();ExtensionElement extensionElementTotal = new ExtensionElement();extensionElementTotal.setName("flowable:properties"); ExtensionElement eElementUser = new ExtensionElement();eElementUser.setName("flowable:property");ExtensionAttribute eAttributeUserName = new ExtensionAttribute();eAttributeUserName.setName("name");eAttributeUserName.setValue("notifyUserList");eElementUser.addAttribute(eAttributeUserName);ExtensionAttribute eAttributeUserValue = new ExtensionAttribute();eAttributeUserValue.setName("value");eAttributeUserValue.setValue(StringUtils.join(this.getUsers(), ","));eElementUser.addAttribute(eAttributeUserValue);extensionElementTotal.addChildElement(eElementUser);ExtensionElement eElementSubject = new ExtensionElement();eElementSubject.setName("flowable:property");ExtensionAttribute eAttributeSubjectName = new ExtensionAttribute();eAttributeSubjectName.setName("name");eAttributeSubjectName.setValue("subject");eElementSubject.addAttribute(eAttributeSubjectName);ExtensionAttribute eAttributeSubjectValue = new ExtensionAttribute();eAttributeSubjectValue.setName("value");eAttributeSubjectValue.setValue(this.getSubject());eElementSubject.addAttribute(eAttributeSubjectValue);extensionElementTotal.addChildElement(eElementSubject);ExtensionElement eElementContent = new ExtensionElement();eElementContent.setName("flowable:property");ExtensionAttribute eAttributeContent = new ExtensionAttribute();eAttributeContent.setName("name");eAttributeContent.setValue("content");eElementContent.addAttribute(eAttributeContent);ExtensionAttribute eAttributeContentValue = new ExtensionAttribute();eAttributeContentValue.setName("value");eAttributeContentValue.setValue(this.getContent());eElementContent.addAttribute(eAttributeContentValue);extensionElementTotal.addChildElement(eElementContent);extensionElements.put("notifyUserList", CollUtil.newArrayList(extensionElementTotal));serviceTask.setExtensionElements(extensionElements);elements.add(serviceTask);// 下一个节点的连线Node child = this.getChild();SequenceFlow sequenceFlow = this.buildSequence(child);elements.add(sequenceFlow);// 下一个节点if (Objects.nonNull(child)) {child.setBranchId(this.getBranchId());List<FlowElement> flowElements = child.convert();elements.addAll(flowElements);}return elements;}
}

4、相应的效果图

相关文章:

  • 记录安装android studio踩的坑 win7系统
  • 某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]
  • 集合的流式API与数据库查询:深入比较与实践
  • 【21】两数交换
  • 脚本运行:在 IPython 中执行 Python 脚本的步骤
  • UE4-字体导入
  • Java之数组应用-选择排序-插入排序
  • Hyperledger顶级项目特点和介绍
  • java8函数式编程学习(一):lambada表达式和stream流的使用
  • Vue学习---vue 防抖处理函数,是处理什么场景
  • leetcode刷题日记-岛屿数量
  • OpenTeleVision复现及机器人迁移
  • 实验八: 彩色图像处理
  • Winform上位机TCP客户端/服务端、串口通信
  • Elasticsearch:Golang ECS 日志记录 - zerolog
  • 5、React组件事件详解
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • CSS实用技巧干货
  • Django 博客开发教程 8 - 博客文章详情页
  • Lsb图片隐写
  • Mocha测试初探
  • rabbitmq延迟消息示例
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 仿天猫超市收藏抛物线动画工具库
  • 老板让我十分钟上手nx-admin
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 算法-图和图算法
  • 网络应用优化——时延与带宽
  • 硬币翻转问题,区间操作
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 你对linux中grep命令知道多少?
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #define
  • (23)Linux的软硬连接
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (力扣题库)跳跃游戏II(c++)
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (强烈推荐)移动端音视频从零到上手(下)
  • (十八)三元表达式和列表解析
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET6实现破解Modbus poll点表配置文件
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .NET性能优化(文摘)
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • @Responsebody与@RequestBody
  • [\u4e00-\u9fa5] //匹配中文字符