Salesforce で法人番号を検索して取引先を更新する画面をノーコードで構築する (フロー+外部サービス)
顧客情報を整備することは、CRM の活用において必要不可欠な活動の 1 つです。特に BtoB 企業の場合は、国税庁が指定する法人番号を使用して法人情報を一意に特定することができます。法人番号を含む法人データは、gBizINFO という経済産業省が管理する情報提供サイトを使用しても検索が可能ですが、gBizINFO は REST API も提供されています。
Salesforce では、外部サービスと呼ばれる、OpenAPI (Swagger) で定義された REST API の仕様をインポートし、フローやプロセスで使用できる呼び出し可能アクションを生成する機能が提供されています。gBizINFO の REST API もこの外部サービス機能を用いてインポートすることができます。この外部サービス機能と画面フローを組み合わせることで、以下のように、取引先の名前で法人情報を検索し、検索結果に基づいて取引先の項目を更新するような高度な機能をノーコードで実装することができます。
この画面フローは、インストールして編集可能なパッケージとして公開しています。ぜひご自身の Sandbox や Trailhead Playground 環境等でも試してみてください。以下では画面フローの使用方法と実装内容のポイントについて説明します。
事前準備
gBizINFO の API キーを申請する
gBizINFO REST API の使用には API キーの発行が必要です。利用申請ページから各自申請してください。発行された API キーは画面フロー内で設定するため、控えておいてください。
Flow Action Base Package と Screen Component Base Package をインストールする
作成する画面フローでは、レコードではないコレクション変数に基づいて選択肢を動的に生成する必要があります。残念ながらこれは標準の画面フローでは実現が難しいですが、QuickChoice と呼ばれるサードパーティのコンポーネントを使用することで実現可能です。QuickChoice を含む、画面フローを便利に利用できるコンポーネント群である Screen Component Base Package と、このパッケージが依存する Flow Action Base Package をインストールしてください。
以下のページから Flow Action Base Package および Screen Component Base Package のインストール URL にアクセスできます。
本パッケージのインストール
Trailhead Playground の場合は、パッケージ Id 04t5G000003zeYAQAY
を使用するか、以下のリンクからインストールしてください。
使い方
API キーの設定
インストールされた画面フローを開き、左サイドバーから定数 constant_gBizInfo_ApiKey
を選択します。値を事前準備で取得した API キーに置き換えてください。
画面フローの使用
フローを有効化してください。その後、取引先の Lightning レコードページに画面フローを直接配置するか、クイックアクションを作成してページレイアウトに配置しても構いません。
実装方針
画面フローは大まかに以下のような処理を行なっています。
- 取引先の情報を取得する (※本来は recordId 変数はテキストではなく sObject 型を用いると明示的なレコード取得要素は不要になりますが、デバッグを利用するためにあえてテキスト型を使用しています)
- 外部サービスにより生成されたアクションを呼び出す(=gBizINFO の APIコール)
- 結果を加工してラジオボタンとして表示する(=QuickChoice コンポーネントを使う)
- 選択された値で元の取引先を更新する
法人情報は構造化されたフォーマットになっており、フロー内では自動生成される Apex 型の変数 (詳細は後述) として扱います。一方、画面表示する選択肢にはテキスト型の変数を使用する必要があるため、データの変換が必要になります。元のフローの見通しをよくするため、この変換処理はサブフローに移しています。初めての方にはやや複雑かもしれませんが、実際の API レスポンスと比較しながらフローの処理を眺めると理解が進むでしょう。
補足
外部サービスは OpenAPI のスキーマを Apex クラスとして定義する
コールアウトの結果が複雑なオブジェクトの場合に、それに対応する Apex クラスを定義することは、Salesforce で開発経験のある方には馴染みがあるかと思います。外部サービスでも同様に、 API Spec をインポートすると、呼び出し可能アクションが作成されるだけではなく、その API で定義されているスキーマ (型の情報) が Apex クラスとして作成されます。例えば、/v1/hojin
の 200 レスポンスは以下のようになりますが、
{
"id": null,
"errors": null,
"message": "200 - OK.",
"hojin-infos": [
{
"corporate_number": "6600000000000",
"postal_code": "1510000",
"location": "東京都渋谷区1-2-3 XXXビル",
"name": "テスト株式会社",
"status": "-",
"number_of_activity": "1",
"update_date": "2018-06-14T00:00:00+09:00"
},
{
"corporate_number": "7000000000000",
"postal_code": "1000000",
"location": "東京都港区1-2-3 YYYタワー",
"name": "テスト株式会社",
"status": "-",
"number_of_activity": "10",
"update_date": "2018-05-11T00:00:00+09:00"
}
]
}
これは以下のようなスキーマに基づいています。
"HojinInfoResponse": {
"type": "object",
"properties": {
"id": { "type": "string", "description": "リクエストid" },
"message": { "type": "string", "description": "メッセージ" },
"hojin-infos": {
"type": "array",
"description": "gBizINFOデータ",
"items": { "$ref": "#/definitions/HojinInfo" }
},
"errors": {
"type": "array",
"description": "エラー情報(エラーがある場合に出力します。)",
"items": { "$ref": "#/definitions/ApiError" }
},
}
}
上記のスキーマに基づいて、Salesforce 内部では以下のような Apex クラスが生成されます。
public class ExternalService__gBizInfo_HojinInfoReponse {
@AuraEnabled
public static String id;
@AuraEnabled
public static String message;
@AuraEnabled
public static List<ExternalService__gBizInfo_HojinInfo> hojinx2sinfos;
@AuraEnabled
public static List<ExternalService__gBizInfo_ApiErrors> errors;
}
よってフロー内ではこの Apex クラスの型の変数を作成することで、法人検索の API レスポンスを受け取れるようになります。同様に hojin-infos
の 1 つ 1 つの要素に対応する Apex クラスは ExternalService__gBizInfo_HojinInfo
で、フロー内ではこの型のコレクション変数を用いて hojin-infos
の情報を取得・操作しています。
QuickChoice を使用するためのデータ加工
QuickChoice コンポーネントを使用するには、テキストのコレクション変数が 2 つ 必要になります。選択肢の表示ラベル用と、選択肢の値用です。(値とラベルが同じ場合は 1 つでも可)
サブフローでは、法人情報のコレクション変数 (Apex型) をループして、2 つのテキスト型のコレクション変数に割り当て要素で値をセット(追加)する操作を行なっています。
コレクション変数に対する操作
コレクション変数から条件に合致する要素を取り出したり、コレクション変数を分割・マージしたりする操作は、プログラムであれば簡易にできますが、まだフローでは弱いところです。コレクション変数を操作するためのサードパーティの呼び出し可能アクションもありますが、今回は画面で選択された法人番号 (テキスト型) に一致する法人情報を、法人情報のリストから取得する というシンプルな操作のため、別のサブフローで、法人情報のリストをループして、条件に合致する要素を出力変数に格納する操作を行なっています。
参考リンク
Author And Source
この問題について(Salesforce で法人番号を検索して取引先を更新する画面をノーコードで構築する (フロー+外部サービス)), 我々は、より多くの情報をここで見つけました https://qiita.com/shunkosa/items/6eab319282a64c414d1f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .