电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

想要数据总是一致?快试试苍穹插件里的KDTX TCC

来源:金蝶云社区作者:金蝶2024-09-235

想要数据总是一致?快试试苍穹插件里的KDTX TCC

苍穹低代码平台简化了开发流程,但与传统分布式事务TCC工作方式又有一定的冲突,这是因为集成在低代码中的一些数据更新操作(比如审核),很难单独分离成一个服务接口。在典型的TCC模式中,每个更新数据的操作都应该封装在一个定义好的分支事务服务接口中。


本次金蝶云·苍穹V5.0新特性提供了全新的解决方案,即在插件里使用TCC时,保证插件和TCC的每个分支事务的数据更新强一致,可以有效解决上述问题。典型场景如下:


在单据审核(更新1)时,调用余额模型服务(更新2),再调用序列号模型服务(更新3),如下图:



场景示意图





1 适用版本


该功能适用版本为金蝶云·苍穹V5.0.002及以上。


2 功能详情


小编将以实际案例场景为大家介绍开发者如何在插件里使用TCC解决分布式事务的问题。


场景假设:在单据审核的时候,需要扣减余额同时生成序列,该场景在数据一致性方面有以下3点要求:


1、审核、更新余额、生成序列号,这3个操作状态需要同步,要么都成功,要么都失败;


2、涉及到余额和序列号资源需要提前锁定,如果锁定失败(如余额不足),审核操作也需要同步失败


3、如果余额和序列号锁定成功,而且审核也成功,那么余额一定会扣减成功,序列号一定会生成。


接下来,小编为大家详细介绍操作步骤。


2.1 创建TCC服务


和KDTX(Kingdee Distributed Transaction,是苍穹平台的提供的分布式事务解决方案,目前支持TCC和最终一致2种模式)通常做法一样,首先要定义服务,这里我们创建2个TCC的服务:余额服务序列号服务


其中,新建一个余额的TCC服务,代码示例如下:


public class BalanceService extends TCCAdapterService {
    @Override
    public void Try(Object o) throws Exception {
        // 锁定余额
    }
    @Override
    public DtxResponse confirm(Object o, Object o1) throws Exception {
        // 扣减余额
    }
    @Override
    public void cancel(Object o) throws Exception {
        // 回滚余额
    }
}


新建一个序列号的TCC服务,代码示例如下:


public class SerialService extends TCCAdapterService {
    @Override
    public void Try(Object o) throws Exception {
        // 锁定序列号
    }
    @Override
    public DtxResponse confirm(Object o, Object o1) throws Exception {
        // 确认序列号
    }
    @Override
    public void cancel(Object o) throws Exception {
        // 取消序列号
    }
}


2.2 注册服务


把创建好的这2个TCC服务注册到ServiceFactory里,代码示例如下:


public class ServiceFactory {
    p

想要数据总是一致?快试试苍穹插件里的KDTX TCC

苍穹低代码平台简化了开发流程,但与传统分布式事务TCC工作方式又有一定的冲突,这是因为集成在低代码中的一些数据更新操作(比如审核),...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信