オリジナル記事
Learn MOAR in Summer ’22 with External Services & API Updates
Salesforceの開発は、自動化と統合が密接に関連しています。Salesforce APIの最新のアップデートに私たちが心を躍らせているのは、まさにそのためなのです。さらに、外部サービスがSalesforce Platformとして拡張を続けています。これにより、カスタムコードを記述することなく、複数のシステムで自動化を実現できます。今回のブログでは、外部サービスの新機能をすべてご紹介するとともに、Summer ’22のリリースで提供されるAPIの素晴らしいアップデートについてもお伝えします。
外部サービスを使うことで、開発者やシステム管理者はOpenAPI仕様の基盤となるプロセスを進め、Salesforce内の他のシステムの機能を呼び出すアクションを迅速に作成できるようになります。Salesforceのプロセスの自動化ツールを活用して、さまざまな自動化や統合を実現する上で、これは優れた方法です。
外部サービスの再利用がかつてないほど進んでいます。今回のリリースでは、外部サービスの登録アクションをApexから直接呼び出すことができるようになります。このプロセスは、Apex Http Classで外部サービスへのコールアウトを作成する方法に似ていますが、ボイラープレートコードを記述する必要はありません。これにより、社内で何度も統合を作成するオーバーヘッドを削減することができます。これまで、外部サービスの登録アクションはフローやボットを通してのみ可能でした。
以下では、架空の銀行WebサービスのAPI仕様を使って、外部サービスにスキーマを登録した際に自動的に作成されたクラスについて、Apexコードがハイライトしています。
"paths": { "/accounts/{accountName}": { "get": { "operationId": "getAccount", "summary": "Retrieves an account", "description": "Retrieves the account with specific name", "parameters": [ { "name": "accountName", "in": "path", "required": true, "description": "Name of the account", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The response when system finds an account with given name", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/accountDetails" } } } },
スキーマを外部サービスとして登録すると、必要とするクラスがすべて自動的に作成されます。社内の外部サービス設定ページからもアクセス可能です。この例では、getAccount、getAccount_Request、getAccount_Responseのメソッドがあります。
//Call External Services registered actions from Apex //Instantiate the External Services Apex class ExternalService.bankService service = new ExternalService.bankService(); //Set request ExternalService.bankService.getAccount_Request request = new ExternalService.bankService.getAccount_Request(); request.accountName = 'KevinWong'; try { //Make Callout ExternalService.bankService.getAccount_Response response = service.getAccount(request); system.debug ('200 response: id -->' + response.Code200.id); system.debug ('200 response: available balance -->'+ response.Code200.availableBal); } catch (ExternalService.bankService.getAccount_ResponseException exc){ system.debug('404 response: error message --> '+ exc.Code404.errorMessage); }
フローやApexにおいて登録が使われている場合(ボットは近日提供予定です)、互換性のある新しいAPI仕様のバージョンにアップデートできます。これまで、フローが使用する登録スキーマをアップデートすることはできませんでした。新しいスキーマのバージョンに互換性がない場合、どの操作やスキーマオブジェクトが使用されているか、どのフローが使用しているか、どのApexクラスが使用しているかについて、編集ワークフローから通知されます。この情報によって、既存のリファレンスのうちどれが互換性を持たないかを把握し、これを削除してからアップデートされた登録を保存することができます。
Summer ‘22のリリースでは、Bulk APIやUser Interface APIへのアップデートなど、数多くのAPIアップデートが利用できるようになります。
Bulk APIではいくつかの素晴らしいアップデートがあり、CPUの時間制限を10秒から60秒にするなど、大規模な非同期のワークロードをサポートするため、Apexをより適切に制限できるようになりました。これにより、大規模な統合も成功させられるという確信を持って、プラットフォームの真のイノベーションを進められるようになります。
User Interface APIでは、関連するリストや関連リストのバッチについて、レコードデータを取得できるようになりました。/ui-api/related-list-records/や/ui-api/related-list-records/batch/にPOSTリクエストを送信することで、APIを介してこれらにアクセスできます。また、関連するリストのレコードや情報を取得できる新しいワイヤーアダプターを使って、Lightning Webコンポーネントから直接APIにアクセスすることも可能です。
このモジュールには、関連リストのバッチのレコードやメタデータを取得できる、新しいワイヤーアダプターが含まれています。
関連リストのレコード、メタデータ、レコードカウントを取得するワイヤーアダプターは、現在広くご利用いただけます。
以下の例では、レコードから関連リストを取得し、parentRecordIdおよびrelatedLIstParamatersでgetRelatedListRecordsBatchワイヤーアダプターに渡しています。
import { LightningElement, wire } from 'lwc'; import { getRelatedListRecordsBatch } from 'lightning/uiRelatedListApi'; export default class LdsGetRelatedListRecordsBatch extends LightningElement { @wire(getRelatedListRecordsBatch, { parentRecordId: '001RM000003UNu6YAG', relatedListParameters: [ { relatedListId: 'Contacts', fields: ['Contact.Name','Contact.Id'] }, { relatedListId: 'Opportunities', fields: ['Opportunity.Name','Opportunity.Amount'] } ] }) }
すべてのAPIアップデートについて詳しくは、Summer ’22リリースノートのAPIアップデートおよび新機能をご覧ください。
製品マネージャーとDeveloper RelationsチームがSummer ‘22で最新機能についての情報をご紹介します。Developer Relationsの新しいコンテンツでは、チームメンバーのお気に入りの新機能を取りあげ、スピーディな開発をサポートします。2022年5月20日(金)9:00 a.m.(PST)に開催されるRelease Readiness Liveもお見逃しなく。今週は、Salesforce開発者ブログでも毎日Summer ’22についての記事をお届けしますので、ぜひチェックしてください。
さらに詳しい情報は、Summer ’22 trailmixをご覧ください。
Andrea Guzmanは外部サービスの製品マネージャーです。業界のAPI標準を活用したSalesforce連携製品を担当し、Salesforce Platform上で宣言型構成要素を作り出すことで、開発者やシステム管理者がシステム間の連携やワークフローを構築できるよう支援しています。プライベートでは旅行やハイキングを楽しみ、サッカーをプレーすることもあります。
Stephan Chandler-GarciaはSalesforceのシニアデベロッパーエバンジェリストです。主にアプリケーション開発、セキュリティ、Experience cloudを担当しています。Twitterで@stephanwcgをフォローしてください。