公開コールバックに関するベストプラクティス
SObjectType.newSObject で作成された同じイベントオブジェクトを再公開しない
SObjectType.newSObject(recordTypeId, loadDefaults) Apex メソッドを使用してイベントオブジェクトを作成する場合は、同じイベントオブジェクトを複数回公開しないことをお勧めします。このイベントオブジェクトには EventUuid 値が設定されるため、イベントオブジェクトを複数回公開すると、一意ではない EventUuid 値がコールバックで追跡されることになります。EventUuid 値が重複すると、予期しない結果が生じる場合があります。API 参照名 Event_Name__e event = new Event_Name__e() を使用して作成するイベントについては、この動作は該当しません。
コールバックを使用して個々のイベントではなくイベントのリストを公開する
EventBus.publish コールでコールバックを使用している場合、複数のイベントを公開するときは、イベントのリストを作成し、それらのイベントを 1 回の EventBus.publish コールで公開することをお勧めします。すべてのイベントに対して EventBus.publish コールを 1 回使用する方が、イベントごとにコールを実行するよりも効率的です。これは、公開コールで使用される Apex ガバナ制限が減少するためです。また、システムでは、イベントのリストへのコールバック実行を一括処理することが試みられます。
次の例では、イベントのリストが作成され、次にそのリストがイベント変数を介して EventBus.publish コールに渡されます。このスニペットでは、コールバックインスタンスを使用して、publish メソッドが 1 回コールされます。
一方、次の例は、避けるべき処理を示しています。この例では、コールバックを使用して公開メソッドを 10 回コール、つまりイベントごとにコールを実行しており非効率です。複数のイベントを 1 回の公開コールで一括処理する場合よりも多くのコールバック実行が後で発生する可能性があります。
コールバックを使用して特定のプラットフォームイベント種別のイベントのリストを公開する
API 参照名を使用してイベントを作成する場合、コールバックを使用してイベントのリストを公開できるのは、特定のプラットフォームイベント種別でリストを定義した場合に限られます。汎用の sObject 種別はサポートされていません。たとえば、イベントのリストは次のように定義できます。
次のようには定義できません。
こうして、コールバックを使用してイベントを公開できます。