我有一个要求,当我在 AX 中创建客户时,我将客户创建到外部系统中。我想到的第一个解决方案是将外部方 Web 服务也消耗到 AX 中。
但是它将如何实现分布式事务?
我有一个要求,当我在 AX 中创建客户时,我将客户创建到外部系统中。我想到的第一个解决方案是将外部方 Web 服务也消耗到 AX 中。
但是它将如何实现分布式事务?
您的集成选项很多,但我不建议直接插入 SQL。这是一个非常糟糕的解决方案。显而易见的原因是,在 AOT 之外插入记录会破坏保留在 AOT 中的业务逻辑。数据库仅用于持久化数据和优化数据的读写。AOT 中的业务逻辑负责在创建和更新记录时保存所有逻辑。
在我看来,您唯一的选择是通过 x++ 代码。为此,标准 AX 有一个特殊的类“AxCustTable”。如果您的集成,您希望使用此类来确保您的客户数据在整个生命周期中处于最佳状态。至于系统之间的数据传输,您的选择有很多: * 文本文件 * Xml 文件 * Web 服务 * 从不同的 sql 数据库读取数据 * 等等
只需确保当您将数据写入 CustTable 时,所有当前和未来的业务逻辑仍然有效。将数据直接插入数据库级别的 CustTable 将有效地打破这种依赖关系。
祝你好运!
您可以通过直接 SQL(ODBCConnection 类)创建链接服务器并使用分布式事务
它将如何实现分布式事务?
它不会!
但这有关系吗?客户数据很少更改,也很少需要事务范围。
您没有完整地编写所有要求。所以这就是我的想法。
我会为此使用消息队列。当用户在 AX 中创建客户时(停机时间或其他时间),外部系统可能无法保存客户。我不会让外部系统过多地妨碍我的应用程序......