实践案例 | 巧用操作参数+状态机,个性化组装事件订阅

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

实践案例 |  巧用操作参数+状态机,个性化组装事件订阅

小编推荐


在企业数字化转型的征途中,跨系统的数据流转常常是棘手的难题。央企巨头如何破解跨库事务的难题,确保业务流程的顺畅和数据的一致性?答案就藏在本期实践案例中。


跟随小编步伐,一起探索如何巧用操作参数和状态机,打造个性化的事件订阅,让业务流转不再有障碍~



业务背景


某大型央企,是一家以金属、矿产品的开发、生产、贸易和综合服务为主,同时兼营金融、房地产、物流业务的大型国际化企业集团在业财一体化的背景下,不同模块间需要互相传递数据。


客户业务系统、财务系统、主数据系统等多个系统都是以苍穹为基座,按不同业务场景划分模块,进行分库分表。这就导致不同模块间的协同会出现跨库事务、跨库写入的问题。


客户希望能够提供高效的方案来解决下述痛点和诉求:

1、 跨模块调用操作要保证事务一致性

2、 财务调用操作后,需要调用业务端操作,将财务端金额等字段反写到业务单据但是由于财务单据与业务单据存放在不同的库,同一事务里跨库写入会报错

3、 对特殊的业务场景,要求保证操作幂等性


业务流程图


解决方案

1. 整体思路

通过业务事件中心,以事件驱动的方式,打破业务壁垒串联财务端到业务端的流程。同时利用事件订阅自带的异步特性,解决同一事务不能跨库写入的问题。使用状态机描述单据初始状态开始,响应不同事件并执行对应动作,从而引起状态转换,直到单据变为终结状态具体而言:


先将不同模块的操作抽象为不同【事件】,然后按照执行顺序排列为每个事件设计触发状态响应状态下游操作订阅上游操作,同时设置事件订阅操作参数,传递上游操作的响应状态到下游,在进行下一步操作,先校验上级操作响应状态是否等于下游操作的触发状态从而保证整体流程事务一致性和下游业务操作幂等性整体流程如下:


【初始状态】->财务端A操作】->(校验操作A状态)->【业务B操作】->(校验操作B状态)->财务端C操作->(校验操作C状态)->【最终状态


注:状态机是一种数学模型,用于描述系统或程序在不同状态之间转换的行为。它由一组状态、转移条件和动作组成。

状态机常用于处理事件驱动编程模型,当系统接收到不同的事件时,状态机可以根据当前状态和事件类型执行相应的操作和状态转换。


2. 关键步骤及效果展示

【流程服务云】→【业务事件中心】→【事件定义】 →【新增】创建三个事件定义,并打开【传递操作参数】开关。


在操作中绑定插件,将要传递的操作参数设置好,采取设置操作变量的方式,将要传递的key和value随事件的触发传递给业务事件中心:this.operateOption.setVariableValue("key", "value");

上游操作插件代码示例如下把上游操作执行后的状态传递给下游


按照实际业务将不同业务排序,下游操作订阅上游操作填写【操作参数配置】,设置操作参数为【上游操作】


下游操作获取操作参数,并校验状态。如果状态通过校验,则执行下游操作。否则,直接返回。

下游操作的插件代码示例如下,用来取上游传递下来的状态

方案的可推广价值


1. 利用事件订阅异步执行的特性,可解决跨库写入报错的业务场景。

2. 通过传递操作参数,执行下游操作前进行状态校验保证异步操作事务一致性和下游操作幂等性。

3. 可根据实际业务具体的需求,灵活组装各个模块的操作,从而实现不同的业务流程。在助力系统保持弹性的同时快速适应变化应对未来业务的不确定性


注意事项


1、事件订阅有失败重试策略,对于幂等要求的操作,要注意选择正确的【错误处理策略】。


相关资料

https://vip.kingdee.com/knowledge/specialDetail/282527627108140288?category=283974464923236608&id=549892035956494080&productLineId=29&lang=zh-CN





#往期推荐#


# 实践案例 | 单据审核人显示流程中指定节点审批人


# 实践案例 | 一张单据支持多个单据体独立审批

# 实践案例 | 灵活高效的动态流程方案

实践案例 | 待办任务列表支持自定义单据字段


更多精彩内容,“码”上了解!↓



实践案例 | 巧用操作参数+状态机,个性化组装事件订阅

小编推荐在企业数字化转型的征途中,跨系统的数据流转常常是棘手的难题。央企巨头如何破解跨库事务的难题,确保业务流程的顺畅和数据的一致...
点击下载文档
上一篇:消息中心应用介绍下一篇:事件拆分
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息