# 第12节:在应用层编排抽奖过程
作者:小傅哥
博客:https://bugstack.cn (opens new window)
沉淀、分享、成长,让自己和他人都能有所收获!
- 应用分支:211003_xfg_ApplicationActivityProcess (opens new window)
- 路由组件:db-router-spring-boot-starter
打包最新路由组件包
(opens new window) - 描述:在 application 应用层调用领域服务功能,编排抽奖过程,包括:领取活动、执行抽奖、落库结果,这其中还有一部分待实现的发送 MQ 消息,后续处理。
# 零、优秀作业
- 应用层编排抽奖流程 @微风 (opens new window)
- 在应用层编排抽奖过程 @一点江南 (opens new window)
- 在应用层编排抽奖过程 @BerserkD (opens new window)
- 需要将之前写的领域层进行编排,实现完整的抽奖服务 @Chin (opens new window)
- 应用层抽奖活动过程编排 @Geroge Liu (opens new window)
- 应用层编排抽奖流程 @微风 (opens new window)
- 对12节进行了学习,因为表内又增添字段了,本来是又有点迷茫的,但是在单元测试的时候出了bug,就一步步地打断点调试,将整个流程又走了一遍,感觉就很清晰了。@在九月 (opens new window)
- 开发application层,对前面章节的流程进行编排,发现并完善之前章节遗留的bug @AD钙奶 (opens new window)
- 在这一章节的学习中我首次了解到幂等性的事务 @星期一 (opens new window)
- 花了挺多时间梳理了下整个抽奖流程,复习了下前面的内容 @错否 (opens new window)
- 从六月初学到现在七月中旬,开始逐渐理解整个抽奖系统的设计思路了。对于小白来说,如果咬牙坚持下来,收获也是巨大的。比起做四五个零碎的项目,做一个lottery项目就囊括了所有需要掌握的技巧知识。 (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触发,后续再补全这部分内容。
- 对于每一个流程节点编排的内容,都是在领域层开发完成的,而应用层只是做最为简单的且很薄的一层。其实这块也很符合目前很多低代码的使用场景,通过界面可视化控制流程编排,生成代码