エンタープライズメッセージングプラットフォームイベント
たとえば、ソフトウェアシステムは、プリンタインクカートリッジに関する情報が含まれるイベントを送信できます。登録者はこのイベントを登録し、プリンタのインクレベルを監視して、低インクレベルのカートリッジを交換するための注文を実行できます。
プラットフォームイベントは、カスタムオブジェクトを定義する方法と同じ方法で、Salesforce で定義されます。プラットフォームイベント定義を作成するには、定義に名前を付けて、カスタム項目を追加します。カスタム項目は、イベントメッセージで送信されるデータを定義します。プラットフォームイベントは Salesforce のデータ型のサブセットをサポートします。「プラットフォームイベント項目」を参照してください。次の表に、プリンタインクイベントのカスタム項目の定義のサンプルを示します。
| 項目名 | 項目 API 参照名 | データ型 |
|---|---|---|
| Printer Model (プリンタモデル) | Printer_Model__c | Text |
| Serial Number (シリアル番号) | Serial_Number__c | Text |
| Ink Percentage (インクレベル) | Ink_Percentage__c | Number |
Apex または API を使用して、プラットフォームイベントを公開および消費できます。プラットフォームイベントは Apex トリガを通じて Salesforce プラットフォームと統合します。トリガは Salesforce プラットフォーム上のイベントコンシューマであり、イベントメッセージをリスンします。外部アプリケーションが API 経由で、またはネイティブ Force.com アプリケーションが Apex 経由でイベントメッセージを公開すると、そのイベントのトリガが起動されます。トリガはイベント通知に応答してアクションを実行します。プリンタインクの例を使用すると、プリンタを監視しているソフトウェアシステムは、インクレベルが低くなったときに API コールを実行してイベントを公開します。プリンタイベントメッセージには、プリンタモデル、シリアル番号、およびインクレベルが含まれます。プリンタがイベントメッセージを送信すると、Salesforce で Apex トリガが起動されます。トリガはケースレコードを作成し、新しいカートリッジの注文を実行します。
外部アプリケーションは、CometD を使用してチャネルを登録することで、イベントメッセージをリスンできます。Visualforce ページや Lightning コンポーネントなどのプラットフォームアプリケーションも CometD を使用してイベントメッセージを登録できます。
プラットフォームイベントおよび sObject
プラットフォームイベントは特別な種類の Salesforce エンティティであり、多くの点で sObject に似ています。イベントメッセージはプラットフォームイベントのインスタンスです。これは、レコードがカスタムオブジェクトのインスタンスであるということに似ています。ただし、カスタムオブジェクトとは異なり、イベントレコードの更新または削除はできません。また、イベントレコードを Salesforce ユーザインターフェースに表示できないほか、プラットフォームイベントにページレイアウトはありません。プラットフォームイベント定義を削除すると、プラットフォームイベント定義は完全に削除されます。
プラットフォームイベントの参照および作成権限を設定できます。プロファイルまたは権限セットでユーザに権限を付与します。
プラットフォームイベントおよびトランザクション
プラットフォームイベントは、カスタムオブジェクトとは異なり、Force.com プラットフォームのデータベーストランザクション内で処理されません。このため、プラットフォームの公開をロールバックすることはできません。次の点に注意してください。
- API を使用してプラットフォームイベントを公開した場合、allOrNoneHeader API ヘッダーは無視されます。
- Apex の setSavepoint() および rollback() データベースメソッドはプラットフォームイベントではサポートされません。
プラットフォームイベントを公開する場合、DML 制限と他の Apex ガバナ制限が適用されます。