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

表达式引擎之活动任务系统设计

表达式引擎之活动任务系统设计

🔥超硬核技术分享|表达式规则引擎设计全攻略✨ 三步打造高可用活动系统!

需求描述

业务方希望通过任务来驱动用户对小程序的活跃度,比如打卡、分享、提问、报名等等操作来获得一些奖励,比如积分、商品等等。

任务一般是围绕活动产生的,所以基于活动纬度去配置任务是比较合理的。

业务难点

  • 确定任务的行为,以及接入行为管理。比如打卡、分享、提问,都是用户的行为,如何统一将行为管理起来,方便后续拓展。
  • 任务的规则是一个难点,每个任务能不能完成是由行为规则决定的,规则如何配置?
  • 任务完成之后,奖励的处理?【积分、商品、回调…】

因此,针对一系列复杂的逻辑处理,需要有一套规则引擎来接管所有复杂的逻辑,为后续复杂业务的灵活性打下基础,毕竟开个好头,后续就不难了。

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

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

业务设计

表结构设计

活动表
字段名称类型说明
activity_codeVARCHAR(32)唯一标识活动的编码
typeTINYINT活动类型:share(分享类)/user(用户类)
nameVARCHAR(64)活动名称
start_timeDATETIME活动开始时间
end_timeDATETIME活动结束时间
statusTINYINT活动状态:0无效/1有效
expression_configTEXT活动特殊配置(JSON格式存储规则表达式)
subscribe_eventsVARCHAR(255)订阅的事件编码集合(多个用逗号分隔,如:register,order)
任务表
字段名称类型说明
moduleVARCHAR(32)所属模块(如:新人任务/日常任务)
task_codeVARCHAR(32)唯一任务编码
titleVARCHAR(64)任务名称(如:每日签到)
iconVARCHAR(128)任务图标URL
descriptionVARCHAR(255)任务描述(前端展示用)
reward_typeVARCHAR(16)奖励类型:points(积分)/goods(实物商品)
reward_valueINT奖励数值(积分数量/商品ID)
用户任务日志表
字段名称类型说明
log_idBIGINT日志唯一编号(自增主键)
task_codeVARCHAR(32)关联任务编码
task_titleVARCHAR(64)任务标题快照(防止任务修改后历史记录丢失)
user_idBIGINT用户唯一标识
reward_pointsINT实际发放的积分值
detailTEXT任务完成详情(JSON格式存储行为参数,如:{share_count:3,days:7})

流程设计

流程图

1、针对用户可能触发的行为在接口进行埋点

2、将行为数据发送到消息队列中

3、活动系统负责订阅所有用户的行为事件。

4、将该任务需要关注到的用户行为进行绑定到活动表的【订阅的事件编码集合】字段中进行关联

5、当用户行为匹配到对应的活动【任务】数据时,开始消费该数据,数据的逻辑都在【表达式规则引擎】中配置。

6、规则引擎负责该任务相关的【行为、条件、奖励、回调】四层模型进行划分

表达式规则引擎配置

🌟核心价值 ✅ 灵活配置规则 ✅ 实时生效机制 ✅ 全链路追踪 💡一套引擎搞定:邀请裂变+任务系统+营销活动

规则配置案例:

规则配置

四层颜色对应四种模型: 行为(浅绿) - 条件(紫色) - 奖励(绿色) - 回调(蓝色),根据自己的诉求在模型中进行迭代配置。

每个分支中都涵盖了业务表达式,表达式中涵盖业务函数或者上下文变量等等

比如:

  • 行为: event == ‘question’ // 提问
  • 条件: xxx_expression_repeatable() // xxx只能被成功执行一次,不可重复执行
  • 奖励: task_reward_info(‘xcx_share_day’) // 完成某个指定任务
  • 回调: send_msg(‘短信码’) // 发送短信

以上只是业务函数释义,可根据自己的业务定制自己的函数进行配置。比如xx天分享才能得到奖励等等。

一个复杂的任务过程,被抽象成一个个通用的业务函数,可以应用到各个场景进行重组,得到最终的业务表达式,这也是引擎带来的优势。

当业务迭代到最后,所有的业务基本上大部分都能够被这些能力覆盖,对团队的效率、质量都会有大的提升。

详细介绍可以参考引擎:

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

相关文章:

  • 《我的Python觉醒之路》之转型Python(十五)——控制流
  • 杰理可视化SDK-手机三方通话控制
  • 如何高效安装和配置WordPress:从基础依赖到高级设置
  • 《笔记》Android 获取第三方应用及查看应用信息、apk大小、缓存、存储,以及第三方清除缓存
  • 用maven生成springboot多模块项目
  • qt介绍图表 charts 一
  • 学习threejs,使用MeshLambertMaterial漫反射材质
  • 自带多个接口,完全免费使用!
  • 第N7周:调用Gensim库训练Word2Vec模型
  • Java---SpringMVC(2)
  • B2B2B 商城模式系统:开启企业高效协作新征程
  • 【C++经典例题】反转字符串中单词的字符顺序:两种实现方法详解
  • 基于关键词的文本知识的挖掘系统的设计与实现
  • 20250317笔记本电脑在ubuntu22.04下使用acpi命令查看电池电量
  • WebGL学习
  • 时尚复古新艺术风品牌海报徽标设计衬线英文字体安装包 Blessing – Art Nouveau Font
  • 【软考-架构】5.3、IPv6-网络规划-网络存储-补充考点
  • log4j2漏洞:反弹shell
  • maven导入本地jar包
  • C++抽象与类的核心概念解析
  • 广西壮族自治区党委副书记、自治区政府主席蓝天立接受审查调查
  • 韧性十足的中国外贸企业:“不倒翁”被摁下去,还会再弹起来
  • 乌克兰谈判代表团由12人组成,乌防长率领
  • 汤加附近海域发生6.4级地震
  • 杭州钱塘区3宗涉宅用地均以底价成交,共计成交金额25.73亿元
  • 中国科学院院士徐春明不再担任山东石油化工学院校长