低代码平台轻松玩转业务规则

news2024/10/6 0:32:53

规则,是运行、运作规律所遵循的法则。规则无处不在,社会活动中的规则通常由传统、公共认识形成,表现为该干什么或是不该干什么。在计算机应用系统中,经常会面对这样的场景,处理执行一个动作时,需要另外的条件同时成立,这种条件判断的逻辑被抽象成规则并大量应用。通过对规则的管理和使用,会使得系统在已抽象成业务规则的场景中,可以进行灵活管理,灵活应用。特别是多个场景下使用相同的规则,可确保因复用带来的成本降低和达成业务管理一致性。

业务规则抽象已经成为一种良好的设计模式,特别是在很多大型业务系统的实现中几乎通用。避无可避,不管是传统的高代码开发还是通过低代码方式实现,应用开发中都会面临着规则开发和使用的问题。

本文旨在探讨低代码模式下开发活动中对规则的处理,文中实际支撑平台为浩鲸灵犀开发平台。

业务规则抽象

在网购的体验中发现,购买一本书时,往往没有优惠。但当订单总金额满足一定条件时,就能够打折,如满300减50,或者免运费、送赠品等。实际上,不仅仅是购买书籍,购买其他商品时也存在各种折扣和优惠。

然而,在系统实现的过程中,如果为每个商品单独开发促销逻辑,对开发人员来说是一项巨大的工作量,因为电商平台上的商品种类、数量非常庞大。

实际上,大多数的商家,都是通过订单金额达量、商品数量达量,或者特殊商品属性等手段,来实现促销活动。可以将其抽象成一个通用的促销规则:根据订购的商品,进行优惠条件判断、优惠计算、最终输出优惠结果。商家只需要配置商品的优惠策略,系统就能够自动计算实现不同促销场景的逻辑。

图片

在系统中,实现以上规则的逻辑如下:

首先,需要考虑的数据包括用户订购的商品信息以及商家设置的商品优惠策略信息。这些数据将在规则的逻辑实现中被使用。

其次,逻辑判断过程包括以下几个步骤:

  • 判断是否有优惠策略。商品信息作为规则的传入参数,判断该商品是否有配置优惠策略。

  • 判断优惠条件是否成立。根据订购的商品信息和商家配置的优惠策略,计算是否满足优惠的条件。

  • 优惠计算。根据配置的优惠方式,进行打折计算、赠品计算或者免运费计算等。

  • 输出优惠结果。规则计算后的优惠结果输出给业务系统,完成商品价格的调整。

接下来将介绍如何通过低代码来完成以上规则的配置。

业务规则配置

在低代码中,复杂规则配置开发主要依靠直观的图形配置界面,以"入参+组件+出参"的方式,通过简单的拖拽和配置操作,实现规则数据配置、逻辑配置及结果反馈。

图片

第一步 参数配置,包括以下几个方面:

入参数据:通过可视化功能,用户可以定义规则的入参数据。

从案例中可以看到,规则的入参是订购的商品列表,因此以表单的方式进行参数配置,支持以结构树的方式进行展示,支持属性、对象、数组等不同形式的参数配置,是一种比较好的实践。

应用数据:规则中可能需要使用到应用的业务数据。因此,规则开发过程中需要支持集成SQL服务、编排服务、对象操作服务等方式来获取数据,并且能够将这些数据与规则的逻辑组件结合起来进行应用。

案例中,商品优惠策略信息,属于商家在系统中配置的数据。在浩鲸灵犀开发平台中,规则逻辑编排时获取内部数据是非常简单的事情,因为其内置了一个对象引擎,封装了各种对象操作组件,只需要进行对象、动作、条件的选择即可轻松完成数据的操作,如下图:

图片

除了入参数据和应用参数外,很多规则的实现过程中还涉及到外部数据和系统变量。

  • 外部数据:指的是不在本应用内的数据,需要通过接口的方式获取。这需要支持可视化的方式集成外部接口,获取数据并进行操作。
  • 系统变量:如登录信息、环境信息等系统变量,也是逻辑判断中不可或缺的数据。因此,支持可视化的方式操作这些变量,也是必不可少的功能。

第二步:逻辑配置

在低代码平台中实现逻辑的方式是通过数据和动作的组合来完成的。针对各种逻辑需求,应该提供各种逻辑组件的配置,包括:

比较:规则逻辑配置过程中,支持字符串、数据、属性与对象以及数组的比较,以实现规则条件的定义。比如判断两个字符串是否相等、对数据进行大小比较、判断属性是否存在于对象中,或者判断一个数组是否包含某个元素等。

计算:提供各种计算功能的配置,比如数据计算、字符或者数组的长度计算等。

流程控制:能够根据判断条件配置程序的执行路径,如循环、跳出、分支、退出等。

组件组合:可以通过定义组件的执行顺序来实现串联,从而实现组件的组合。

获取商家配置的优惠策略信息,判断商品是否有配置优惠,并进行优惠计算的过程,只需要按顺序配置 “数据组件”获取商品优惠策略信息,“比较组件”判断是否有优惠策略,“计算组件”进行打折计算,就可以轻松完成规则逻辑的编排。

图片

第三步:结果反馈

在配置过程中,以显性化的方式配置规则的返回参数,易于规则的开发和理解。

第四步:测试验证

调试时,执行过的节点高亮展示,形成执行线路图。每个节点的执行时间、时长、入参、出参、执行状态,根据执行顺序进行展示,为规则执行过程中的问题排查提供了非常好的手段。

图片

以上是规则配置的过程,下面我们继续介绍规则的使用。

业务规则使用

在许多场景中,业务系统需要通过多个规则才能完成完整的业务校验。以商品订购的场景为例,在订单提交前进行业务校验,校验的规则可能有上百个。因此,为了更好地实现规则的开放调用,需要以规则事件的维度做好规则的封装,同时支持传统应用和低代码应用的集成。

图片

首先,事件配置,事件是指业务系统调用规则的时机或者动作,用于说明和区分业务系统在不同代码中的埋点,同时规范埋点的参数要求。事件配置主要完成两项操作:

  1. 参数规范定义:根据业务系统的需求,自定义埋点参数规范,以适配各个业务系统。同一个事件下的所有规则都遵循统一的参数规范。
  2. 规则执行的策略编排:支持在事件中对规则的执行顺序和策略进行编排,包括条件、串行、并行等不同的策略。

其次,规则集成,针对应用的不同,规则集成的方式有两种:

  1. API方式:针对传统的应用,需要通过在系统代码中进行埋点,实现规则事件的调用。
  2. 服务节点方式:针对低代码应用,业务逻辑主要通过编排服务来实现。因此,在编排服务中需要支持通过“事件”组件来绑定事件服务,从而实现对规则的调用。

图片

业务规则管理

除了规则的配置开发和对外开放使用,规则的管理还包括规则的发布上线、规则的生失效管理以及对规则的日志分析。

发布上线:不同的低代码实现,规则的保存形式有所不同,一般以编译文件的形式保存,如Java、PHP,或者使用Python、Groovy脚本等。而灵犀平台选择了以数据的方式进行存储。在发布规则时,只需要导出规则数据,然后在运行环境中进行数据的导入,即可实现规则的发布,无需进行环境部署或代码编译构建的复杂操作。这种方式简化了规则发布的流程,提高了开发效率。

生/失效管理:在规则设计中,可以设定规则的生效时间和失效时间,只有在指定的时间段内规则才会生效。这项功能对于季节性规则或限时促销规则非常有用,可以避免规则在过期后继续生效,从而避免不必要的冲突和问题。同时,规则生/失效状态的管理也非常重要。通过规则状态的控制,可以及时根据业务要求进行规则的调整和决策。

规则日志:日志在规则管理中有两个重要部分。首先,操作日志记录了对规则的逻辑调整和状态变更等操作,方便问题的溯源。其次,运行日志记录了规则执行时的输入参数、输出结果、执行时间、耗时和异常原因等,有助于快速定位和解决问题。

除了支持可视化、图形化的规则开发、使用和管理功能,我们还需要重点关注配置效率和配置灵活性这两方面的问题:

01 配置效率问题

在配置规则过程中,不同复杂度的参数对象,会导致配置效率降低,遇到多规则开发场景时,效率问题愈发凸显。所以,我们需要增强工具自身能力,通过自动生成、缺省默认、一键操作、批量处理等方式来应对效率问题:

自动生成参数:在事件上,增加规则创建的入口,创建规则时,自动通过事件的参数规范生成规则的参数,并允许对参数进行裁剪。

自动参数赋值:在规则编排过程中实现参数自动赋值功能。在服务编排中加入事件节点时,或者在事件中加入规则时,都可以根据参数名称自动匹配上下文进行赋值。

报文一键生成参数:在事件和规则配置参数时,支持通过报文一键生成参数配置,在传统开发过程中,高效的ctrl+c和ctrl+v能够得到很好的应用。

批量加入规则:在事件编排中增加批量规则组件,在组件中可以批量选择多个规则加入到事件中。组内可以定义规则执行的策略,如串行或者并行。这样既能简化事件编排画布,又能提升加入规则的效率。

增加运维视图:在事件中增加关联规则的视图,同时在规则设计器中也增加关联的事件视图,在调整规则时就可以清晰地评估其影响范围。

02 配置灵活性问题

与传统规则引擎不同,低代码平台的规则执行策略是通过事件编排来实现的,执行过程会遇到所有规则执行结果合并、同一事件下参数相互依赖和共享等问题。因此,技术上需要支持规则结果的汇总计算、支持事件级的数据总线,实现数据的共享和传递。

图片

增加规则结果计算组件。每加入或删除一个规则,会自动将规则的结果和返回参数记录到该组件中。在组件中支持设置结果返回的策略,例如:全部规则校验成功时返回成功,或者只要有一个成功就返回成功。

引入事件级dataBus数据总线。在事件启动环节初始化数据总线,在事件结束后销毁数据储存空间。在此过程中,每个规则都可以向数据总结写入数据和读取数据。

针对复杂业务规则开发,浩鲸灵犀开发平台提供了非常便利的开发工具,在大量项目中落地使用。通过浩鲸灵犀开发平台让开发人员能够轻松完成规则的配置工作,真正实现了业务规则可视化管理、图形化开发,开发效率大幅提升,可做到实时发布非常灵活。在接下来继续与大模型技术结合,实现更智能化的业务规则管理和决策支持、自动化的规则验证和修正、业务规则的执行和监控相结合等技术突破,未来可期。

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

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

相关文章

【从零学习python 】29. 「函数参数详解」——了解Python函数参数的不同用法

文章目录 函数参数详解一、缺省参数二、不定长参数三、缺省参数在*args后面可变、不可变类型总结 进阶案例 函数参数详解 一、缺省参数 调用函数时,缺省参数的值如果没有传入,则取默认值。 下例会打印默认的age,如果age没有被传入&#xf…

UI设计师的主要职责说明(合集)

UI设计师的主要职责说明1 职责: 1、负责公司移动端、PC端产品相关的交互、UI等设计 2、负责公司宣传册、海报、运营物料、banner等设计 3、负责公司品牌相关的视觉设计 3、制定相关设计规范,提高产品的可用性、不断优化产品体验; 4、与PM、运营紧密…

Labview选项卡之实现被选择选项卡工作

文章目录 前言一、使用选项卡二、实现被选择选项卡工作1、需求2、分析3、实现①、前面板②、程序框图 三、效果展示四、源码自取 前言 有些时候,我们做界面,需要好多个界面切换。如果是同一个 VI 里界面切换,一般都是选项卡了。切换不同选项…

解锁编程的新契机:深入探讨Kotlin Symbol Processor (KSP)的编写

解锁编程的新契机:深入探讨Kotlin Symbol Processor (KSP)的编写 1. 引言 随着软件开发领域的不断发展,新的工具和技术不断涌现,以满足开发者在构建高效、可维护和创新性的代码方面的需求。Kotlin Symbol Processor(KSP&#xf…

ssm+vue网上花店设计源码和论文

ssmvue网上花店设计源码和论文017 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用&#xf…

无涯教程-Perl - setgrent函数

描述 此功能将枚举设置(或重置)到组条目集的开头。该函数应在第一次调用getgrent之前调用。 语法 以下是此函数的简单语法- setgrent返回值 此函数不返回任何值。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perl -wwhile( ($name,$passwd,$gid,$members)getgrent…

算法与数据结构-哈希算法

文章目录 什么是哈希算法哈希算法的应用安全加密唯一标识数据校验散列函数负载均衡数据分片分布式存储 什么是哈希算法 哈希算法的定义和原理非常简单,基本上一句话就可以概括了。将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是…

Github上git lfs oid sha256文件无法下载的解决方案

问题:github上sha文件无法下载&文件超出限制 当我克隆Github上的一个库时,其中有一个包的内容格式如下: version https://git-lfs.github.com/spec/v1 oid sha256:一堆数字和字母 size 一堆数字 这堆东西类似百度网盘的下载链接和密码&a…

深入理解Python装饰器:解析高阶函数与代码美学

文章目录 🍀引言🍀什么是装饰器?🍀装饰器的基本用法🍀带参数的装饰器🍀类装饰器🍀总结 🍀引言 当谈到Python编程中的高级特性时,装饰器(decorators&#xff0…

深入理解索引B+树的基本原理

目录 1. 引言 2. 为什么要使用索引? 3. 索引的概述 4. 索引的优点是什么? 4.1 降低数据库的IO成本,提高数据查找效率 4.2 保证数据库每一行数据的唯一性 4.3 加速表与表之间的连接 4.4 减少查询中分组与排序的执行时间 5. 索引的缺点…

abp(net core)+easyui+efcore实现仓储管理系统——组织管理升级之下

在“组织管理”列表页面中使用鼠标勾选想要进行修改的组织信息,然后点击“修改”按钮。如下图。 14.此时会弹出“修改组织信息”界面,但界面上没有显示我们勾选的那一条组织信息的任何数据。如下图。 15.由于我们的功能主要都在javascript中写的&#x…

Python语言入门简介

一、Python的历史 关键点: Python是一种用途广泛、解释性、面向对象的程序设计语言。 Python是新西兰的Guido van Rossum在1990 年创建的,它以英国流行喜剧“Monty Python的飞行马戏团”命名。van Rossum将Python开发作为一个嗜好,Python 因其简单、简洁…

聊聊在集群环境中本地缓存如何进行同步

前言 之前有发过一篇文章聊聊如何利用redis实现多级缓存同步。有个读者就给我留言说,因为他项目的redis版本不是6.0版本,因此他使用我文章介绍通过MQ来实现本地缓存同步,他的同步流程大概如下图 他原来的业务流程是每天凌晨开启定时器去爬取…

硬盘文件恢复怎么做?文件恢复,问题已解决!

“请问一下可以帮我恢复硬盘里的文件吗?我之前删除了一些重要的文件和数据,但是最近我突然想起来那些文件是很有用的,有没有什么好的方法可以帮我恢复硬盘中的文件呢?” 硬盘作为电脑的存储设备,电脑用户通常会将各种重…

du -mh命令

du 命令查看每个文件夹大小(du 命令用法详解),du 命令的英文全拼是 disk usage,意思是占用的磁盘空间,该命令可以显示目录或文件的大小。 在执行“ du ”命令时,使用“ -h ”参数会以“人类可读格式”显示…

Android高手进阶教程(三)之----Android 中自定义View的应用.

大家好我们今天的教程是在Android 教程中自定义View 的学习&#xff0c;对于初学着来说&#xff0c;他们习惯了Android 传统的页面布局方式&#xff0c;如下代码: <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"htt…

C#Winform中读取Excel表格数据并显示到DataGridView控件实例

本文讲解Winform中读取Excel表格数据并显示到DataGridView控件实例 首先创建winform项目,添加控件DataGridView和button 修改CS文件 using System; using System.Data; using System.Data.OleDb; using System.Diagnostics; using System.Windows.Forms;namespace DataGridv…

OpenAI推出新产品GPTBot:可爬取网络数据,为GPT-5做准备

昨天发的《量子论公众号是如何半年做到10000粉的&#xff1f;》&#xff0c;好像没人感兴趣&#xff0c;那以后不发此类话题了。 今天的内容也是翻看Hacker News上的帖子里发现的。 近期&#xff0c;OpenAI官网介绍了一款新产品GPTBot。可是&#xff0c;这款产品对我们没什么用…

Clickhouse基于文件复制写入

背景 目前clickhouse社区对于数据的写入主要基于文件本地表、分布式表方式为主&#xff0c;但缺乏大批量快速写入场景下的数据写入方式&#xff0c;本文提供了一种基于clickhouse local 客户端工具分布式处理hdfs数据表文件&#xff0c;并将clickhouse以文件复制的方式完成写入…

直播源码异步处理技术:应对处理大量用户请求的挑战

在网络技术的快速发展背景下&#xff0c;直播源码平台已经成为了人们社交娱乐的重要工具&#xff0c;直播源码平台的用户会在平台内进行观看直播、短视频&#xff0c;与其他用户进行交流、交谈。由于直播源码平台用户数量的逐日增加&#xff0c;使得直播源码平台每天要应对、处…