概要
Salesforce ConnectのGraphQLアダプターを使って外部オブジェクトを設定しました。
目的
Amazon RDS上に構築したMySQLデータベース内に格納されているデータを、Salesforce上のカスタムオブジェクトに対して一対多になるように読み込み、関連リストで表示できる状況を目指しました。
実施作業
- Salesforce ConnectのDynamoDBアダプターの検証
- DynamoDBを接続するパターンについて、要求を満たすか調査検討しました。
- 実際にSalesforce組織で接続して検証しました。
- Salesforce ConnectのGraphQLアダプターを使う場合のスキーマ要件を調査
- Salesforce組織と接続して検証
- 外部オブジェクトをその他のオブジェクトに関連させるには、外部参照関係を設定する必要があり、そのために外部IDを適切に設定する必要がありました。
- 結合に使いたいフィールドをヒアリングし、GraphQLスキーマに外部IDとして利用するためだけのフィールドを追加することで、目的の外部参照関係が設定できることを確認しつつ進めました。
- GraphQL APIの実装
- RDSのデータをGraphQL APIで提供するために、AppSyncとLambdaを使ってGraphQL APIを建てました。
- AppSyncとSalesforce間の認証はAWS署名バージョン4を使うことができますが、要望に沿ってAPI Key方式にしました。
- 全体をAWS CDKでコード管理し、GitHub Actionsを使ってCI/CDを構築しました。
- GraphQL APIには、Jestを使ってE2Eテストを構築しました。
- 設定手順書を作成
- Salesforce組織に対して外部オブジェクトを設定するために必要な以下のステップを明記した設定手順書を作成しました。
- 外部ログイン情報の作成
- 指定ログイン情報の作成
- 権限セットの作成
- 権限セットの割り当て
- 外部データソースの作成
- 外部IDの変更
- 外部オブジェクト間に外部参照関係を設定
- カスタムアプリケーションの作成
- カスタムタブの作成
- 権限セットの権限調整
- タブの表示設定
- 関連リストの表示設定
構築したシステムの構成
クリックして拡大表示タップして拡大表示
Salesforceの画面イメージ
クリックして拡大表示タップして拡大表示
所感
GraphQLアダプター・DynamoDBアダプター共に、書き込み可能オブジェクトに設定することで、Salesforce側で直接データソースのデータを作成・更新・削除することができて便利です。
Salesforce利用者としては、基本的にオブジェクトの種類(標準オブジェクト・カスタムオブジェクト・外部オブジェクト)を意識せずに利用できるメリットがあります。
Salesforce上のデータに関連するデータを表示したい場合に、定期的にカスタムオブジェクトに同期する体制などを作らずに直結できるパターンとして利用機会がありそうです。