产品经理的需求善变,利用规则引擎减少80%的需求变更成本

经常有技术团队的小伙伴抱怨最烦的就是产品经理发起需求变更,才做了三周,改了八回需求......

其实这个故事,每天都在开发团队中上演,作为 IT的 leader 来透视这个问题,要辩证的看待,其实80% 的可能性都是如下2个方面之一,那么搞定下面两个方面就搞定80%的需求变更,这个都是妥妥的开发成本或者项目利润。

1、人的问题:需求人员说不清楚、产品经理无法抽象,简单成为二传手,到技术人员手中的需求肯定会持续更改,那么这总结为人的问题,如果是需求方的人说不清楚,那么就需要升级,找到能够说清楚,能够排版的人,否则无法解决;如果是产品经理的问题,每天摸鱼划水,那么做“传声筒”,没有对需求进行理性的分析抽象,那么赶紧裁掉 ,及时止损才是正道。

2、业务本身的问题:比如风控规则,所谓道高一尺魔高一丈,每天都在较劲寻找对方的突破点;又例如员工考核 ,每个岗位可能都是不一样的考核方式,而且很可能领导一句话就增加一种考核模式,那么这种常常变化的业务,就需要采用规则引擎去做抽象判断。

那么对于上述的第一条我就不过多做赘述,针对第二条,我们自己实现的方式给大家讲讲,算是抛砖引玉。

我们应该把经常变化的场景转化为产品技术考虑的业务因子、判断条件、决策模型, 举例说明下, 例如在做“行政机构合规性执法的判断”的场景中,会把执法人员执法结果纳入到决策判断模型中, 这个过程是不断持续扩展的,如下图所示:

那么这种判断,就不适合写 if... else... then.... 多层的判断嵌套 ,因为业务需求可能会经常发生变化,那么就应该把业务和判断解耦。

那么这里如何解耦这个过程,我们以软开企服的 jvs-rules的规则引擎举例说明,大致分为四个大的步骤:

一、判断的数据来源

在我们的业务场景中,判断数据的来源大致有几个方面: a.入参(通过业务系统调用的时候传入进去);b.本地的数据库(内网自有数据);c.三方API数据(外部系统数据)

  • 入参可以通过jvs-rules 的入参设置去解决,一旦配置入参,在自动生成API时,会自动添加这项需要传入的数据;

设置入参后,系统会自动更新API调用的 接口要求:

  • 本地数据库数据接入,在业务执行中,除了出参以外,还常常用到了 本地的数据的数据,那么就可以在数据源中配置对应数据库的接入,解决调用本地数据来源的问题;

动态直连访问业务数据库:

这里数据库的接入提供多种数据库的方式:

  • 三方外部系统的接入,可以通过API 、甚至离线文件等方式接入

API接入界面配置化:

二、判断因子的挖掘加工

在解决了数据接入的问题,就需要考虑数据与真实的业务判断有差异的情况下,如何搞定数据挖掘的问题,例如上文提到的行政执法的结果是一个文本,需要解析出来里边的执法金额,用于决策判断,那么如何实现呢?

系统提供了函数式 加工数据的方式(类excel 数据加工),可以提供系统自带的很多函数 对各种数据进行加工(入参、本地数据库、三方api 获取),得到我们想要的业务结果,例如上图,就是通过入参执法的结果,其中包括了大写的执法金额,需要把这些数据解析出来,转换成小写,得到最后可以判断的 “处罚金额”的变量。

这种数据加工包括“函数式”加工取数、“SQL脚本”取数据、“任务式”加工取数,如下图所示:

三、业务规则的拼装与仿真(详见后续章节)

四、规则的部署与业务调用(详见后续章节)

总结

JVS-Rules,是对用户比较友好的规则引擎解决方案,可以有效降低配置门槛和开发工作量,JVS提供基础性开源方案,支持商用与源码开放。

​​https://gitee.com/software-minister​​

​​https://gitee.com/software-minister/jvs-rules​​

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

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

相关文章

《对马岛之魂:导演剪辑版》新鲜出炉,AOC电竞显示器与你并肩作战!

超越PS版本的画面表现,AOC U27G3XM助你轻松拉满游戏体验! 近日,《对马岛之魂:导演剪辑版》正式登陆PC平台。这款备受期待的作品不仅在战斗机制和故事内容上进行了创新,还引入了更高级的图形选项和更丰富的自定义设置。…

Android 绑定服务的5个问题。

1.android studio 目录结构改变了。为什么会报R 资源文件找不到。 在写项目的时候经常需要改到。 gradle文件里的域名名字要改变下。 2.Caused by: android.app.BackgroundServiceStartNotAllowedException: Not allowed to start service Intent { cmpcom.zjtzsw.sbkDevice/…

oracle 数字或者小数格式化

select trim(. from to_char(1,fm9999990.9999)),trim(. from to_char(0.1,fm9999990.9999)) from dual

视觉SLAM十四讲:从理论到实践(Chapter8:视觉里程计2)

前言 学习笔记,仅供学习,不做商用,如有侵权,联系我删除即可 一、目标 1.理解光流法跟踪特征点的原理。 2.理解直接法是如何估计相机位姿的。 3.实现多层直接法的计算。 特征点法存在缺陷: 二、光流(Optical Flow) …

【Qt知识】Qt中的对象树是什么?

在深入Qt编程的世界时,你会频繁遇到一个核心概念——对象树(Object Tree)。这个概念是Qt框架管理内存、处理事件和组织用户界面元素的基础。 什么是Qt对象树? 如果你的Qt应用程序就像一片茂盛的森林,而这片森林中的每…

C++学习笔记(22)——多态

目录 [TOC](目录) 比喻与理解1. 多态的概念2. 多态的定义及实现2.1多态的构成条件2.2 虚函数2.3虚函数的重写2.3.1 虚函数重写的两个例外:1. 协变(基类与派生类虚函数返回值类型不同)2. 析构函数的重写(基类与派生类析构函数的名字不同) 2.4 C11 override 和 final2…

如何保证每次画出的都同一张人脸?AI绘画Stable Diffusion的Reference only教程

Ai绘画有一个很现实的问题,要保证每次画出的都是同一个人物的话,很费劲。 Midjourney就不必说了,人物的高度一致性一直得不到很好的解决。而在Stable Diffusion(SD)中,常用办法是通过同一个Seed值&#xf…

【Python Cookbook】S01E16 同时对数据做转换和换算

目录 问题解决方案讨论 问题 当换算(sum(), min(), max())同时遇到转换或筛选,怎么做? 解决方案 有一种非常优雅的方法,可以将数据换算和转换结合在一起——在函数参数中使用 生成器表达式。 一个直观的案例&#…

ATA-7030高压放大器应用分享:铁电体和压电材料

经过多年研究探索,Aigtek安泰电子功率放大器目前已拥有一众完善的系列功放产品,可为超声测试、生物医疗、水声测试、压电驱动、电磁驱动、MEMS测试等众多研究项目提供系统性的行业测试方案,其中对于压电极化测试、铁电极化测试,Ai…

GPT-4o:人工智能新纪元的突破与展望

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

香橙派AI Pro开箱初体验

一、前言 上周很荣幸在CSDN上收到香橙派的测评邀请,这是一款专为边缘计算和嵌入式AI应用设计的高性能计算平台。因为之前一直做的是GPU Tensorrt部署相关工作,对边缘计算平台也不是很熟悉,花了一些时间摸索,今天我就简单与大家分…

动态二维码与静态二维码,有何区别,如何使用?

近年来,二维码势不可挡席卷而来,并在我们的生活中占据了一席之地,付款、加好友、点餐、活动签到、电子门票、商品信息查询、分享内容等等,哪都有它。 二维码诞生于日本,就是用特定几何图形,按规律在平面上分…

使用python绘制华夫饼图

使用python绘制华夫饼图 华夫饼图效果代码 华夫饼图 华夫饼图(Waffle Chart)是一种数据可视化图表,用于显示数据在一个网格中的分布情况。它类似于饼图,通过将数据划分为等大小的方块来表示不同类别的比例。华夫饼图的优势在于它…

解决 Mac Django 连接Mysql 出现 image not found 问题

最近在使用 Django 框架,因为升级到4.2版本了,对应的本机 Mysql 5.7 就不适用了,于是升级到了 Mysql 8.0,写好代码之后出现如下错误: 仔细分析一下错误的描述: ImportError: dlopen(/Library/Frameworks/P…

1122 找奇葩

solution 目标数&#xff1a;出现次数为奇数次&&该数本身为奇数 #include<iostream> using namespace std; const int maxn 1e5 10; int flag[maxn] {0}; int main(){int n, x;scanf("%d", &n);for(int i 1; i < n; i){scanf("%d&qu…

EIS 2019 webshell

请求中可以确定是http POST流量 同时可以判断是 蚁剑的流量 进一步过滤 http.request.method "POST" 直接追踪其tcp流 得到 列举部分 eVAl(cHr(0x40).ChR(0x69).ChR(0x6e).ChR(0x69).ChR(0x5f).ChR(0x73).ChR(0x65).ChR(0x74).ChR(0x28)直接输出一下 内容 <…

DeepMind:从LLMs到VLMs,不用看图就能理解图?

论文标题&#xff1a; FlexCap: Generating Rich, Localized, and Flexible Captions in Images 论文作者&#xff1a; Debidatta Dwibedi, Vidhi Jain, Jonathan Tompson, Andrew Zisserman, and Yusuf Aytar 参与机构&#xff1a; Google DeepMind, Carnegie Mellon Uni…

Quantlab 4.1:基于Deap遗传算法多股票因子挖掘

原创文章第549篇&#xff0c;专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 遗传算法本身并不复杂&#xff0c;但gplearn的实现&#xff0c;把问题复杂化了&#xff0c;尤其在因子挖掘这个场景。 使用deap进行因子挖掘的代码在如下位置&#xff1a; import …

Nexus3(nexus-3.19.1-01)忘记管理员密码

1、停服 ./nexus stop 2、进入OrientDB控制台&#xff1a; cd /apply/nexus3/nexus-3.42.0-01/lib/support/ java -jar ./nexus-orient-console.jar 3、在控制台执行&#xff1a; connect plocal:/apply/nexus3/sonatype-work/nexus3/db/security admin admin 4、重置密码…

Redis之常用实战场景

1.Redis数据丢失场景 1.1 持久化丢失 采用RDB或者不持久化&#xff0c;就会有数据丢失&#xff0c;因为是手动或者配置以快照的形式来进行备份。 解决: 启用AOF&#xff0c;以命令追加的形式进行备份&#xff0c;但是默认也会有1s丢失&#xff0c;这是在性能与数据安全性中寻…