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

表达式引擎之通用的开屏页后端接口设计

表达式引擎之通用的开屏页后端接口设计

场景需求

公司小程序的开屏页代表了公司近期需要推出的一些活动、新课程发布等等关键的动向,也是希望用户第一时间触达小程序时能够接受到关键的信息。

但是开屏页虽然仅仅只是展示一张图片或者一个页面,但是背后的一些逻辑可能不是这么简单。

一、需求场景全解析

1.1 为什么要做智能开屏页?

▫️ 用户分级曝光
VIP用户看活动A,新用户看活动B,精准匹配身份标签

▫️ 节日氛围拉满
春节弹窗C,情人节弹窗D,自动切换时间主题

▫️ 动态数据绑定
跳转链接+弹窗文案+配图URL,一套接口全搞定

1.2 传统方案痛点

❌ 硬编码if-else逻辑爆炸
❌ 多维度叠加规则难维护
❌ 规则越复杂后期难描述
❌ 每次改需求都要发版上线


二、表达式引擎解决方案

2.1 核心优势

可视化规则:思维导图,简洁明了
配置即生效:改规则不用改代码
多维度决策:时间+身份+设备自由组合
数据动态注入:图文链接实时更新
规则追踪:规则运行情况一目了然

接入引擎

1、代码接入

你可以先定义一个controller进行接口入口,当然这里不做赘述

ClientExpressionSubmitRequest submitRequest = new ClientExpressionSubmitRequest();
// 业务组编码,比如活动、小程序
submitRequest.setBusinessCode(businessGroupCode);
// 业务码:活动码、小程序对应的开屏编码
submitRequest.setExecutorCode(executorCode);
// 用户编号
submitRequest.setUserId(userId);
// 业务编号
submitRequest.setUnionId(unionId);
// 事件码: 可不填,可以理解为同一个接口的不同业务类型,可在引擎中进行分类
submitRequest.setEventName(eventName);
// 追踪编号 : 可不填,有追踪系统可用
submitRequest.setTraceId(TraceHelper.getTraceId());
// 请求对象
submitRequest.setRequest(request);
// 调用引擎
final Boolean result = clientEngineFactory.invoke(submitRequest, envContext.getSourceMap());
log.info("执行引擎返回结果:{} -> {}", result, envContext.getResultContext());
return envContext.getResultContext();

配置规则

1、定义规则组

定义规则

2、配置规则
配置规则

内部业务函数就不做过多赘述,可以根据自己的业务进行定制,然后配置即可。

🔸 fn_env_put_value('xmas_img','https://x.jpg') 上传圣诞主题图
🔸 fn_record_result_context('link',xmas_link) 绑定跳转链接

物料信息通过公共函数:fn_env_put_value('xxx_img','http://xxxx.jpg') 设置到全局上下文中,经过规则判断符合之后,加入到结果上下文函数中:fn_record_result_context('showImg',xxx_img)

以上都是引擎自带的公共函数,无需自己编写,可通过地址进行了解。

表达式规则引擎开源地址:

  • https://github.com/liukaixiong/expression-mind-map-engine
  • https://gitee.com/liukaixiong/expression-mind-map-engine

http://www.kler.cn/a/590249.html

相关文章:

  • 【软件工程】03_软件需求分析
  • 从零开始学Vue:打开前端新世界的大门
  • linux------------------linux基础指令
  • [IP]UART
  • Linux文件IO——缓冲区磁盘上的文件管理
  • 【商城实战(39)】Spring Boot 携手微服务,商城架构焕新篇
  • linux 信号量概念
  • 电机控制常见面试问题(十三)
  • 深度学习-简介
  • Spring Boot 集成高德地图电子围栏
  • DBA(数据库管理员)常用的 Linux 命令
  • 【开源免费】基于SpringBoot+Vue.JS电商应用系统(JAVA毕业设计)
  • HTML 基础夯实:标签、属性与基本结构的学习进度(一)
  • FPV无人机战术演练仿真系统技术详解
  • 网络世界探索之旅:初始网络
  • KUKA机器人编程之signal的应用(包括创建组输入和组输出)
  • Day09 -实例:拿到加密密文进行解密
  • Tomcat新手登峰指南:从零到部署的原子化实践
  • repo init 错误 Permission denied (publickey)
  • 机器学习扫盲系列(2)- 深入浅出“反向传播”-1