書き込み可能な外部オブジェクト
外部データへのアクセスは、Salesforce とデータを保存する外部システム間の接続によって異なります。ネットワーク遅延や外部システムの可用性によっては、外部オブジェクトでの Apex の書き込みまたは削除操作でタイミングの問題が生じることがあります。
こうした接続の複雑性により、Apex は、外部オブジェクトで標準の insert()、update()、または create() 操作を実行することができません。代わりに、Apex では、書き込み実行で生じる可能性のある問題に対処するための一連の特殊なデータベースメソッドおよびキーワードを用意しています。外部オブジェクトでの DML 挿入、更新、作成、削除操作は、非同期か、あるいは特定の条件に一致したときに実行されます。
1public void createOrder () {
2 SalesOrder__x order = new SalesOrder__x ();
3 Database.SaveResult sr = Database.insertAsync (order);
4 if (! sr.isSuccess ()) {
5 String locator = Database.getAsyncLocator ( sr );
6 completeOrderCreation(locator);
7 }
8}外部オブジェクトでは、レコードの挿入、レコードの更新、レコードの更新/挿入、レコードの削除の DML 操作を非同期または条件に基づいて実行できます。DataSource 名前空間でクラスを使用して、非同期ジョブの一意の識別子を取得するか、更新/挿入、削除、または保存操作の結果リストを取得します。
外部オブジェクトで Apex メソッドを開始すると、ジョブがスケジュールされ、バックグラウンドジョブキューに配置されます。BackgroundOperation オブジェクトを使用すれば、API または SOQL を使用して書き込み操作のジョブの状況を表示できます。組織のジョブの進行状況および関連エラーの監視、統計の抽出、一括処理ジョブの処理、指定した期間内に生じたエラー数の確認などを行います。
使用状況に関する情報と例については、「Database 名前空間」および 「DataSource 名前空間」を参照してください。