ecology9的待办推送外部系统

news2024/11/16 1:58:36

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

问题描述

问题遇到的现象和发生背景:
泛微ecology9版本 如何将泛微产生的待办、已办通过HTTP的方式推送至外部系统

操作环境、软件版本等信息:
ecology版本:9.00.2310.02

尝试过的解决方法:
据说通过每个流程的 节点后操作,去触发,如果流程很多的话,那不是要配置很多流程类

我想要达到的结果:
有没有统一的地方写代码,把泛微产生的待办、已办统一推送至外部系统呢

解决方案

  如下是上述问题的解决方案,仅供参考:

  在泛微 Ecology9 版本中,将待办和已办通过 HTTP 推送至外部系统的需求可以通过以下几种方式实现。

方法 1:通过工作流的节点后操作

正如你所提到的,在每个流程的节点后操作中触发 HTTP 推送是一个常见的做法,但对于流程较多的场景,确实会导致配置工作量较大。

方法 2:使用统一的事件监听器(推荐)

Ecology 提供了一些监听器接口,可以通过监听待办事项的生成和完成事件,统一处理并推送至外部系统。

  1. 实现事件监听器
    泛微支持通过自定义事件监听器来拦截工作流状态的变化。可以实现一个监听器,监听待办的创建和完成事件,然后统一将这些事件推送到外部系统。

    • 监听器可以在 workflow 包的某些接口上实现,通常是基于 onCreate, onComplete 等方法来监听流程变化。
  2. 监听待办创建和完成事件
    泛微的待办和已办事项在创建时会触发特定的事件。可以编写 Java 代码或脚本,在这些事件触发时通过 HTTP 将数据推送至外部系统。

    大致流程如下:

    • 监听待办事件:监听待办事项的生成、完成等操作,统一在这些事件发生时调用 HTTP 接口。
    • 推送数据:根据监听到的事件,使用 HTTP 客户端库(如 HttpClient)将待办事项推送至外部系统。

    示例代码(伪代码):

    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.entity.StringEntity;
    
    public class WorkflowEventListener {
    
        public void onTaskCreate(Task task) {
            // 获取待办任务信息
            String taskInfo = task.getInfo();
            // 推送数据
            pushToExternalSystem(taskInfo, "create");
        }
    
        public void onTaskComplete(Task task) {
            // 获取已办任务信息
            String taskInfo = task.getInfo();
            // 推送数据
            pushToExternalSystem(taskInfo, "complete");
        }
    
        private void pushToExternalSystem(String taskInfo, String eventType) {
            try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
                HttpPost post = new HttpPost("http://external-system.com/api/task");
                post.setHeader("Content-Type", "application/json");
                String json = "{\"event\":\"" + eventType + "\", \"taskInfo\":\"" + taskInfo + "\"}";
                post.setEntity(new StringEntity(json));
                httpClient.execute(post);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
  3. 配置监听器
    在 Ecology9 的管理后台,找到相关的配置项,将自定义的监听器注册到工作流引擎中,这样就可以捕获所有的待办和已办事项。

方法 3:通过数据库触发器实现(不推荐)

如果对代码的开发和系统的扩展性有较高要求,可以考虑直接操作数据库,监听与待办事项相关的表的变化(如待办任务表 task、流程实例表 workflow 等),通过数据库触发器将这些变化推送到外部系统。

然而,这种方法直接操作数据库,风险较高,泛微的数据库结构可能随版本升级而发生变化,不推荐使用。

方法 4:统一调用外部系统接口

另一种做法是编写一个 统一的推送服务,当待办或已办事项生成时,统一通过内部消息队列或服务总线(如 Kafka、ActiveMQ 等)将待办信息推送至一个中间服务,再由该中间服务负责推送至外部系统。

这种架构更灵活,且便于后期维护。

总结

  • 最佳选择:通过 事件监听器 实现统一的待办、已办推送是推荐的做法,这样可以避免在每个流程节点后配置大量的触发动作,并且有较好的扩展性。
  • 其他方法:数据库触发器虽然可行,但不推荐,因为操作数据库可能会引发兼容性和维护问题。

  希望如上措施及解决方案能够帮到有需要的你。

  PS:如若遇到采纳如下方案还是未解决的同学,希望不要抱怨&&急躁,毕竟影响因素众多,我写出来也是希望能够尽最大努力帮助到同类似问题的小伙伴,即把你未解决或者产生新Bug黏贴在评论区,我们大家一起来努力,一起帮你看看,可以不咯。

  若有对当前Bug有与如下提供的方法不一致,有个不情之请,希望你能把你的新思路或新方法分享到评论区,一起学习,目的就是帮助更多所需要的同学,正所谓「赠人玫瑰,手留余香」。

☀️写在最后

  如上问题有的来自我自身项目开发,有的收集网站,有的来自读者…如有侵权,立马删除。再者,针对此专栏中部分问题及其问题的解答思路或步骤等,存在少部分搜集于全网社区及人工智能问答等渠道,若最后实在是没能帮助到你,还望见谅!并非所有的解答都能解决每个人的问题,在此希望屏幕前的你能够给予宝贵的理解,而不是立刻指责或者抱怨!如果你有更优解,那建议你出教程写方案,一同学习!共同进步。

  ok,以上就是我这期的Bug修复内容啦,如果还想查找更多解决方案,你可以看看我专门收集Bug及提供解决方案的专栏《CSDN问答解惑-专业版》,都是实战中碰到的Bug,希望对你有所帮助。到此,咱们下期拜拜。

码字不易,如果这篇文章对你有所帮助,帮忙给 bug菌 来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。

同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!

📣关于我

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云2023年度十佳博主,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿哇。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2163251.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Maven重点学习笔记(包入门 2万字)

Maven依赖管理项目构建工具 尚硅谷 5h 2023最新版 一,Maven简介 1.为什么学习Maven 1.1, Maven是一个依赖管理工具 1️⃣ jar包的规模 随着我们使用越来越多的框架,或者框架封装程度越来越高,项目中使用的jar包也越来越多。项目中&…

小红书开源StoryMaker:个性化图像生成模型,实现角色一致性与背景变化的完美结合

文章链接:https://arxiv.org/pdf/2409.12576 Github链接:https://github.com/RedAIGC/StoryMaker 模型链接:https://huggingface.co/RED-AIGC/StoryMaker 亮点直击 解决了生成具有一致面部、服装、发型和身体的图像的任务,同时允许…

关系数据库标准语言SQL(3,4)

目录 定义基本表 数据类型 模式与表 创建基本表 修改基本表 删除基本表 定义基本表 每行都定义一个列及其约束条件,最后加上表的约束条件。 其中sno,约束为primary key,表示它是主码,sname约束为unique表示它是唯一值&#x…

VScode的c/c++环境搭建

文章目录 前言1、下载VScode2、安装cpptools3、下载MinGW4、配置环境变量5、修改C/C配置文件5.1、编辑 launch.json 配置文件5.2、编辑 tasks.json 文件 6、运行7、其他 前言 用VS进行C/C开发,环境配置遵循以下步骤: 1.指定头文件目录。“配置属性”→…

【质优价廉】GAP9 AI算力处理器赋能智能可听耳机,超低功耗畅享未来音频体验!

当今世界,智能可听设备已经成为了流行趋势。随后耳机市场的不断成长起来,消费者又对AI-ANC,AI-ENC(环境噪音消除)降噪的需求逐年增加,但是,用户对于产品体验的需求也从简单的需求,升…

Spring源码学习:SpringMVC(3)mvcannotation-driven标签解析【RequestMappingHandlerMapping生成】

目录 前言mvc:annotation-driven标签概述mvc:annotation-driven标签解析【RequestMappingHandlerMapping生成】AnnotationDrivenBeanDefinitionParser#parse (解析入口)RequestMappingHandlerMapping的实例化类图afterPropertiesSetAbstractHandlerMetho…

Spring6梳理11——依赖注入之注入List集合类型属性

以上笔记来源: 尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解)https://www.bilibili.com/video/BV1kR4y1b7Qc 11 依赖注入之注入List集合类型属性 11.1 创建实体类Emp以及Dept Dept类中添加了遍历Emp…

最大似然估计,存在即合理

一、感性认识 认识的第一步来自感性的认识,先来感性的了解一下最大似然估计。现在,假设有两个学院,物理和外语学院。两个学院都各有特点,物理学院的男生占比大,外语学院女生占比大。如果在一次实验从两个学院中随机的…

记录linux环境下搭建本地MQTT服务器实现mqtt的ssl加密通讯

1、ubuntu安装mosquitto sudo apt-get update//安装服务端 sudo apt-get install mosquitto//安装客户端 sudo apt-get install mosquitto-clients 2、安装openssl 3、mqtts/tls加密传输 mosquitto原生支持了TLS加密,TLS(传输层安全)是SSL&…

828华为云征文 | 华为云 X 实例服务器存储性能测试与优化策略

目录 引言 1 华为云 X 实例服务器概述 2 存储性能测试方法与工具 2.1 测试方法 2.2 测试工具 3 FIO(Flexible I/O Tester)读写性能测试 3.1 顺序读写测试 3.2 随机读写测试 4 hdparm性能测试 4.1 实际读取速度测试 4.2 缓存读取速度测试 4.3…

乐鑫ESP-ZeroCode方案设备Matter协议开发新选择,设备无缝连接应用

随着科技的不断进步,智能家居正逐渐成为现代生活的一部分。物联网和智能家居行业应用取得了巨大的增长,一系列无线连接的智能设备涌入家庭,为家庭生活带来自动化和便利。 然而,随着设备数量的增加,用户开始面临一个挑…

LeetCode题练习与总结:删除链表中的节点--237

一、题目描述 有一个单链表的 head,我们想删除它其中的一个节点 node。 给你一个需要删除的节点 node 。你将 无法访问 第一个节点 head。 链表的所有值都是 唯一的,并且保证给定的节点 node 不是链表中的最后一个节点。 删除给定的节点。注意&…

CentOS下安装Kibana(保姆级教程)

前言 Kibana是一个开源的数据分析和可视化平台,通常与Elasticsearch一起使用,用于展示和分析大规模数据集。以下是关于Kibana的一些主要特点和功能: 数据可视化: Kibana允许用户将数据转化为交互式、实时的图形和可视化展示&…

从零开始,Docker进阶之路(三):Docker镜像与命令

一、Docker核心名词 镜像文件、容器、仓库 镜像:简单理解为就是一个安装包,里面包含容器所需要运行的基础文件和配置信息,比如:redis镜像、mysql镜像等。 镜像的来源方式: 1.自己做镜像,比如自己开发微服…

Vue3: readonly与shallowreadonl

目录 一.readonly 1.性质 2.作用 二.shallowReadonly 1.性质 2.作用 三.readonly 四.shallowReadonly 五.运行代码 Vue3中的readonly和shallowReadonly是两个用于创建只读响应式对象的函数。 一.readonly 1.性质 readonly函数会将一个对象或数组包装成一个完全只读…

22 基于51单片机的智能家居系统(DHT11、继电器、气体浓度监测)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,DHT11温湿度检测,CO,PM2.5检测,通过LCD1602显示,超过阈值报警, 继电器驱动风扇转动。通过按键切换选择设置各项…

【linux】gcc makefile

🔥个人主页:Quitecoder 🔥专栏:linux笔记仓 目录 01.gcc如何完成02.gcc选项03.函数库与动静态链接静态链接动态链接库文件特点和用途动态链接版本和兼容性 04.makefile自动推导 01.gcc如何完成 预处理(进行宏替换) 预处理功能主要…

SAM核心代码注释总结

最近看sam2,顺便注释了下代码,方便回顾和分享。 PS: tensor的维度都基于默认参数配置。 SAM _build_sam sam模块包含三个部分,ImageEncoderViT、PromptEncoder和MaskDecoder: def _build_sam(encoder_embed_dim,encoder_depth…

【开源免费】基于SpringBoot+Vue.JS墙绘产品展示交易平台(JAVA毕业设计)

本文项目编号 T 049 ,文末自助获取源码 \color{red}{T049,文末自助获取源码} T049,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

第Y1周:调用官方权重进行检测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、下载源码 从本周开始YOLO的学习啦。首先是先体验一下。教案选择的是YOLOv5s GITHUB的开源地址如下 github 开源地址 打开网页之后下载zip包解压到自己想…