# 第12节:在应用层编排抽奖过程

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!

# 一、开发日志

  • 分别在两个分库的表 lottery_01.user_take_activity、lottery_02.user_take_activity 中添加 state【活动单使用状态 0未使用、1已使用】 状态字段,这个状态字段用于写入中奖信息到 user_strategy_export_000~003 表中时候,两个表可以做一个幂等性的事务。同时还需要加入 strategy_id 策略ID字段,用于处理领取了活动单但执行抽奖失败时,可以继续获取到此抽奖单继续执行抽奖,而不需要重新领取活动。其实领取活动就像是一种活动镜像信息,可以在控制幂等反复使用
  • 在 lottery-application 模块下新增 process 包用于流程编排,其实它也是 service 服务包是对领域功能的封装,很薄的一层。那么定义成 process 是想大家对流程编排有个概念,一般这一层的处理可以使用可视化的流程编排工具通过拖拽的方式,处理这部分代码的逻辑。
  • 学习本章记得更新分支下的最新SQL语句,另外本章节还连带引入了需要MQ、Worker的场景,后续开发到这些功能的时候,会继续完善。

# 二、编排流程

  • 抽奖整个活动过程的流程编排,主要包括:对活动的领取、对抽奖的操作、对中奖结果的存放,以及如何处理发奖,对于发奖流程我们设计为MQ触发,后续再补全这部分内容。
  • 对于每一个流程节点编排的内容,都是在领域层开发完成的,而应用层只是做最为简单的且很薄的一层。其实这块也很符合目前很多低代码的使用场景,通过界面可视化控制流程编排,生成代码