AX で顧客を作成するときに、顧客を外部システムに作成する必要があります。私の頭に浮かんだ最初の解決策は、外部パーティの Web サービスを AX にあまりにも多く消費することでした。
しかし、分散トランザクションをどのように実装しますか??
AX で顧客を作成するときに、顧客を外部システムに作成する必要があります。私の頭に浮かんだ最初の解決策は、外部パーティの Web サービスを AX にあまりにも多く消費することでした。
しかし、分散トランザクションをどのように実装しますか??
統合オプションは多数ありますが、SQL に直接挿入することはお勧めしません。それは本当に悪い解決策です。明らかな理由は、AOT の外部でレコードの挿入を行うと、AOT に保持されているビジネス ロジックが壊れるという事実です。データベースは、データの永続化とデータの読み取りと書き込みの最適化のみを目的としています。AOT のビジネス ロジックは、レコードの作成および更新時にすべてのロジックを保持します。
私の意見では、唯一の選択肢は x++ コードを使用することです。標準 AX には、この目的のための特別なクラス「AxCustTable」があります。このクラスを使用して、統合する場合、顧客データが生涯にわたって最適な状態であることを確認します。システム間のデータ転送に関しては、多くの選択肢があります: * テキストファイル * Xml ファイル * Web サービス * 別の SQL データベースからデータを読み取る * など
CustTable にデータを書き込むときに、現在および将来のすべてのビジネス ロジックが引き続き有効であることを確認してください。データベース レベルで CustTable にデータを直接挿入すると、その依存関係が効果的に解消されます。
幸運を!
分散トランザクションをどのように実装しますか?
ならない!
しかし、それは問題ですか?顧客データの変更はめったになく、トランザクション スコープが必要になることはめったにありません。
Linked Serverを作成し、ダイレクト SQL (クラス ODBCConnection) で分散トランザクションを使用できます。
すべての要件を完全に記述していません。これが私が考えていることです。
これには Message Queue を使用します。ユーザーが AX で顧客を作成するときに、外部システムが顧客を保存できない場合があります (ダウンタイムなど)。外部システムがアプリケーションの邪魔になりすぎないようにします...