進行状況の追跡を始めよう
Trailhead のホーム
Trailhead のホーム

フローでの外部サービスの使用

学習の目的

この単元を完了すると、次のことができるようになります。

  • Flow Builder ツールボックスで、外部サービスアクションを見つける。
  • 外部サービスアクションを使用してシンプルなフローを作成する。

外部ビジネスアクションにアクセスするフローの作成

これまでに学び、設定したことを実践するフローを作成しましょう。スキルを試し、ビジネスプロセスを実装する準備はできていますか? では、始めましょう。 
メモ

メモ

前の単元の指定ログイン情報と外部サービス登録によって、外部 Web アクションが Salesforce 組織のフローから参照できるようになります。

プロジェクト: よりパーソナライズされたエクスペリエンスを提供するために、Acme 銀行は Salesforce を使用して口座に対する営業活動を追跡したいと考えています。Acme の新しいビジネスプロセスを使用すれば、Acme 銀行の担当者が Salesforce に口座レコードを追加できるようになり、口座種別などの口座の詳細と口座は銀行のバックエンドサービスアカウントと同期されます。このビジネスプロセスでは、Salesforce 内の顧客情報 (ユーザ) の更新も同期されます。 
このプロセスを自動化するには、このバックエンド銀行サービスを外部サービスとして登録します。銀行サービスが登録されると、銀行サービスの口座操作 (追加、更新、取得) は、Flow Builder などのツールで Salesforce 内のユーザに表示され、アクセス可能になります。この時点で、Acme 銀行の担当者が口座にアクセスするたびに自動的に口座の詳細を銀行サービスから Salesforce に追加/更新するフローを作成するために必要なものがすべて揃っています。 

これらのビジネスアクションの一部は、後の Challenge で実行して強化することになりますが、作成する新しいビジネスプロセスは次のようになります。 

ステージとロジックを詳しく見て、情報の流れを確認しましょう。

銀行サービスのフローを表す 5 つの要素が表示されている Flow Builder

  1. [Employee Bank Record (従業員銀行レコード)] 画面: Acme 銀行の担当者が画面で入力する情報から口座名と口座種別を取得します。
  2. [Add account (口座の追加)] アクション: Acme 銀行サービスを外部サービスに登録したため、すべてのアクションをフロー内で使用できます。addAccount アクションを選択し、組織とバックエンドの銀行サービスの間で使用する変数に割り当てられる入力と出力を指定します。 
  3. [Account updated (口座更新)] 決定: ロジックによって口座が存在しているかどうか、更新または作成が必要かどうかを評価します。
  4. [Assign updated account (更新された口座の割り当て)]: 口座が存在する場合は、既存の口座の口座 ID を割り当て、ユーザの口座を更新するために渡します。
  5. [Update user account record (ユーザの口座レコードの更新)]: 口座が存在しない場合は、口座を作成して更新し、口座が存在する場合は更新します。

フロー内の外部サービスアクション

前の単元から読み進んできた場合には、外部サービスウィザードを使用して外部サービスを登録し、外部サービスアクションがウィザードに表示されています。アクションを確認するために、Flow Builder に移動しましょう。

  1. [Setup (設定)] から、[Quick Find (クイック検索)] ボックスに「Flow」(フロー) と入力し、[Flows (フロー)] を選択します。
  2. [新規フロー] をクリックして [画面フロー] を選択し、[作成] をクリックします。
  3. ツールボックスで [要素] タブを選択し、[アクション] をキャンバスにドラッグします。
  4. 前の単元で使用したスキーマに基づいて外部サービスがインポートしたアクションを確認するには、[検索条件] を [種別] に変更し、[外部サービス] を選択して、検索ボックスをクリックします。
  5. 外部サービス登録 (この例では BankService) ごとにまとめられたアクションを表示するには、[検索条件] を [カテゴリ] に変更し、[BankService] を選択して、検索ボックスをクリックします。使用可能な BankService のアクションを確認したら、次に進みます。
  6. [キャンセル] をクリックして [設定] に戻ります

外部サービス登録で追加されたアクションのリスト

たとえば、外部サービスウィザードに表示されていた getAccount メソッドのほか、addAccount、DeleteAccount、updateAccount も示されます。これらの外部サービスアクションは、架空の銀行に関連するメソッドで、情報を検索したり、口座レコードを追加したりするためにフローで使用できます。外部サービスにははるかに多くのメソッドを設定できます。その数は、各自が使用する特定のサービスや、ユースケースに基づいてスキーマをどのように定義するかによって異なります。

いよいよこれらのアクションを独自のフローで使用します。 

まず、ユーザオブジェクトに 2 つのカスタム項目 ([Account Type (口座種別)] と [Account ID (口座 ID)]) を作成しましょう。

  1. [設定] から、[オブジェクトマネージャ] を選択して、[ユーザ] を選択します。
  2. [項目とリレーション] をクリックして、[新規] (カスタム項目) をクリックします。
  3. [データ型] で [テキスト] を選択し、[次へ] をクリックします。
  4. [項目の表示ラベル] に「Account Type」(口座種別) と入力し、[長さ] に「25」と入力します。残りはデフォルトのまま、[次へ] をクリックします。
  5. 組織で使用するプロファイルの項目レベルセキュリティが参照可能に設定されていることを確認して、[次へ][保存 & 新規] の順にクリックします。
  6. [テキスト][次へ] の順に選択します。
  7. [項目の表示ラベル] に「Account ID」(口座 ID) と入力し、[長さ] に「25」と入力します。残りはデフォルトのまま、[次へ] をクリックします。
  8. 組織で使用するプロファイルの項目レベルセキュリティが参照可能に設定されていることを確認して、[次へ][保存] の順にクリックします。

銀行のクライアントに関連付けられた特定の項目が必要な理由については後でわかりますが、ここではクライアントの Maria Thompson のユーザレコードを作成しましょう。

  1. [設定] から、[クイック検索] ボックスに「ユーザ」と入力し、[ユーザ] を選択します。
  2. [新規ユーザ] をクリックします。
  3. [名] に「Maria」と入力します。
  4. [姓] に「Thompson」と入力します。
  5. [ユーザライセンス] には、[Salesforce] を選択します。
  6. [プロファイル] で、[標準ユーザ] を選択します。
  7. ここではテスト組織を使用しているため、あなた自身のメールアドレスを使用します。
  8. 使用するユーザ名とニックネームを入力して保存します。
ユーザ Maria Thompson に 2 つのカスタム項目 ([Account Type (口座種別)] と [Account ID (口座 ID)]) があることを確認できます。 

これで、フローを使い始めることができます。

外部サービスアクションを使用したフローの作成

準備はいいですか? では、架空の銀行の口座レコードを作成しましょう。この口座レコードは、組織の 1 つの口座に対する署名権限がある従業員のものです。

画面
  1. [Setup (設定)] から、[Quick Find (クイック検索)] ボックスに「Flow」(フロー) と入力し、[Flows (フロー)] を選択します。
  2. [新規フロー] をクリックして [画面フロー] を選択し、[作成] をクリックします。
  3. ツールボックスから、[画面] 要素をキャンバスにドラッグします。
    • 表示ラベル: Employee Bank Record (従業員の銀行レコード)
    • API 参照名: Employee_Bank_Record
  4. 入力画面コンポーネントのリストから、[テキスト] コンポーネントを 2 つ、画面キャンバス [フローの表示ラベル] にドラッグします。
  5. 最初の [テキスト] コンポーネントをクリックします。
    • 表示ラベル: Name on Account (口座名義)
    • API 参照名: Name_on_Account
  6. 2 番目の [テキスト] コンポーネントをクリックします。
    • 表示ラベル: Account Type (口座種別)
    • API 参照名: Account_Type
  7. [完了] をクリックします。
  8. [完了] をクリックします。
  9. [保存] をクリックしてフローを保存し、フローのプロパティを設定します。
    • フローの表示ラベル: Employee Bank Record (従業員の銀行レコード)
    • フローの API 参照名: Employee_Bank_Record
  10. [保存] をクリックし、警告を無視します。
ヒント

ヒント

フローの作成中には、作業内容を失わないように早めに、そして頻繁に保存してください。


まだフローに画面要素を追加しただけです。次は、このスキーマに特有の要素を追加し、フローが addAccount メソッドを使用して、架空の銀行に口座レコードを作成するようにしましょう。 

定義上、アクション要素はフローの外部のアクションを実行します。アクション要素を選択すると、外部サービスによって登録された呼び出し可能アクションが表示され、実行されます。ここで使用するのは口座を追加するアクションです。

アクション

  1. ツールボックスから、[アクション] 要素をキャンバスにドラッグします。
  2. [検索条件] を [種別] に変更し、[外部サービス] を選択して、検索ボックスをクリックします。
  3. [addAccount] を選択します。
    • 表示ラベル: Add Account (口座の追加)
    • API 参照名: Add_Account
  4. [入力値を設定] の下で、次の項目を [含める] に設定します。
    • accountName
    • accountType
  5. [accountName] に「Name」(名前) と入力して、[Name_on_Accountt] を選択します。 
  6. [accountType] には「Type」(種別) と入力して、[Account_Type] を選択します。
  7. [手動割り当て変数 (詳細)] をオンにします。
  8. [出力値を保存] の下の [_201] で、[新規リソース] を選択します。
  9. [新規リソース] で次のように設定します。
    • リソース種別: 変数
    • API 参照名: account
    • データ型: Apex 定義
    • Apex クラス: ExternalService__BankService_accountDetails
    • フロー外部での可用性: [入力で使用可能] および [出力で使用可能]
  10. [完了] をクリックします。
  11. [出力値を保存] の下の [_409 Exception] で、[新規リソース] を選択します。
    • リソース種別: 変数
    • API 参照名: updatedAccount
    • データ型: Apex 定義
    • Apex クラス: ExternalService__BankService_accountDetails
    • フロー外部での可用性: [入力で使用可能] および [出力で使用可能]
  12. [完了] をクリックします。

addAccount アクションの入力と出力が表示されている Flow Builder



次に、口座がすでに存在しているかどうかを評価するロジックを追加します。フローが実行されると、口座が存在しない場合にはフローは口座作成パスに転送されてから、ユーザの口座の更新に進みます。口座がすでに存在する場合 (デフォルトの結果) は、更新に転送され、その口座を割り当てます。この種類の評価と分岐ロジックは決定要素に最適です。 

決定
  1. ツールボックスの [要素] タブから、[決定] をキャンバスにドラッグします。
  2. [新規意思決定] ウィンドウで、次の値を入力します。
    • 表示ラベル: account updated? (口座更新?)
    • API 参照名: account_updated
  3. [結果] セクションに [新しい結果] と [デフォルトの結果] の 2 つの結果がリストされています。
  4. [新しい結果] が選択されていることを確認し、[結果の詳細] セクションで次の値を入力します。
    • 表示ラベル: account created (口座作成)
    • API 参照名: account_Created
    • [結果を実行するタイミング] で [すべての条件に一致] を選択します。
    • [リソース] に次の条件を入力します。
      リソース
      演算子

      updatedAccount
      null
      $GlobalConstant.True
  5. [デフォルトの結果] を選択し、次のように入力します。
    • 表示ラベル: account updated (口座更新)
  6. [完了] をクリックします。
メモ

メモ

[account updated (口座更新)] には条件がありません。これは、デフォルトの結果であるためです。フローで口座を作成するための条件が満たされない場合、フローは常にこのパスを進み、口座を更新します。

割り当て
  1. ツールボックスから、[割り当て] をキャンバスにドラッグします。
  2. [新規割り当て] ウィンドウで、次の値を入力します。
    • 表示ラベル: assign updated account (更新された口座の割り当て)
    • API 参照名: assign_updated_account
  3. [変数値を設定] で、次の値を入力します。
    変数
    演算子

    account.id
    次の文字列と一致する
    UpdatedAccount.id
  4. [完了] をクリックし、警告を無視します。
ヒント

ヒント

[変数] の値をコピーして貼り付けることはできません。変数を設定するには、「account」と入力し、[Apex で定義された変数] の下の [account] をクリックし、[id] を選択します。

この例の画面フローでは Apex で定義されたリソースを使用してフローを架空の銀行に接続します。口座名義と口座 ID を使用して Salesforce のユーザレコードを更新する必要があります。その後、フローと架空の銀行の間で渡す 2 つの変数を定義できます。

レコードを更新

  1. ツールボックスから、[レコードを更新] 要素をキャンバスにドラッグします。
  2. [新規のレコードの更新] ウィンドウで、次の値を入力します。
    • 表示ラベル: update user account (ユーザの口座の更新)
    • API 参照名: update_user_account
  3. [レコードを識別する条件を指定し、項目を個別に設定] を選択します。
  4. [このオブジェクト種別のレコードを更新] で、次のように設定します。
    • オブジェクト: ユーザ
  5. [ユーザレコードを絞り込み] で、次のように設定します。
    • 条件の要件: 条件を満たしている
    • 項目: LastName
    • 演算子: 次の文字列と一致する
    • 値: Name_on_Account
  6. [ユーザレコードの項目値を設定] で、次のように設定します。
    • 項目: Account_Id__c
    • 値: account_id ([Apex 定義] の下)
  7. [+ 項目を追加] を選択します。
    • 項目: Account_Type__c
    • 値: Account_Type ([画面コンポーネント] の下)
  8. [完了] をクリックします。

従業員のユーザレコードの 2 つのレコード変数も必要です。

2 つのレコード (単一) 変数の作成

  1. [ツールボックス] から、[マネージャ] タブを選択します。
  2. [新規リソース] をクリックし、次のプロパティを設定した変数を作成します。
    • リソース種別: 変数
    • API 参照名: accountTypeField
    • データ型: レコード
    • オブジェクト: ユーザ
    • フロー外部での可用性: 出力で使用可能
  3. [完了] をクリックします。
  4. [ツールボックス] から、[マネージャ] タブを選択します。
  5. [新規リソース] をクリックし、次のプロパティを設定した変数を作成します。
    • リソース種別: 変数
    • API 参照名: user
    • データ型: レコード
    • オブジェクト: ユーザ
    • フロー外部での可用性: 出力で使用可能
  6. [完了] をクリックします。

あともう一歩です。フローを接続する必要があるだけです。コネクタノードを対象要素にドラッグして正しい順序で要素を接続し、ビジネスプロセスが実行時に正しい流れで実行されるようにしましょう。忘れずに保存しましょう。  

  1. [開始] を画面 [Employee Bank Record (従業員銀行レコード)] に接続します。
  2. 画面 [Employee Bank Record (従業員銀行レコード)] を [add account (口座の追加)] アクションに接続します。
  3. [add account (口座の追加)] アクションを決定 [account updated? (口座更新?)] に接続します。
  4. 決定要素の両側に出力コネクタのスペースがあるように、キャンバス上で決定要素を配置します。1 つのコネクタには実行する要素として [account created (口座作成)] を指定し、もう 1 つには [account updated (口座更新)] を指定します。
  5. [account updated? (口座更新?)] 決定の結果を割り当て [assign updated account (更新された口座の割り当て)] に接続します。
  6. メッセージが表示されたら、決定結果に [account updated (口座更新)] を選択してパスに割り当て、[完了] をクリックします。[account updated (口座更新)] が選択されている決定コネクタの結果
  7. 割り当て [assign updated account (更新された口座の割り当て)] をレコードの更新 [update user account (ユーザの口座の更新)] に接続します。
  8. 決定 [account created (口座作成)] をレコードの更新 [update user account (ユーザの口座の更新)] に接続します。
  9. [保存] をクリックします。 

これで完了、と言いたいところですが、まだもう少し作業があります。 

デバッグモードを使用してフローをチェックしましょう。 

[デバッグ] をクリックし、[実行内容の詳細を表示して、Lightning ランタイムでフローを表示します] を選択して、[実行] をクリックします。 

[Name on Account (口座名義)] に「Thompson」と入力し、[Account Type (口座種別)] に「Purchasing」(購入) と入力します。 

この入力によってフローが実行されます。

ワークフローのデバッグ実行が表示されている Flow Builder

[デバッグの詳細] で、作成したばかりのフロー全体を確認します。 

口座の追加では、指定した名前 (Thompson) と口座種別 (Purchasing) が入力として表示されています。この口座はこの実行前には存在していなかったので、作成されました。

メモ

メモ

口座の追加に対して異なる結果 (201 または 401) が表示されても心配いりません。結果は、アプリケーションの口座の更新状況によって異なります。

シンプルなアプリケーションの制限  

エラーが発生する可能性があることも知っておく必要があります。たとえば、[Name on Account (口座名義)] に「Maria Jones」と入力していたら、この項目ではスペースが認められないため、エラーが表示されていたでしょう。同様に、6 文字未満の名前 (Jones) を入力した場合も、このシンプルなアプリケーションの制限のためにエラーが表示される可能性があります。

コード
Acme 銀行サービス向けの説明
200
システムで指定された名前の口座が見つかりました
201
この口座が存在せず、作成できる場合の応答
204
システムで指定された名前の口座が見つかった場合の応答
400
口座名が最小の 6 文字未満の場合またはスペースが含まれている場合のエラー応答
404
口座がサービスによってサポートされていない場合または見つからなかった場合のエラー応答
409
口座が存在し、作成できない場合の応答
メモ

メモ

実際に外部の銀行サービスで使用するフローを作成する場合は、名前ではなく、一意の識別子を使用してレコードを作成するものと思われます。けれどもここでは、外部サービスの説明に重点を置いているため、簡潔にしています。

getAccount メソッドを使用して、口座が作成されたかどうかもチェックできます。実際に試してみたい場合には、この時点で実行できます。けれどもここでは、このチェックを実行する別のフローを作成します。Challenge では、ここで作成したフローを基盤に作業するため、このままにしておきましょう。

まとめ

最初の単元の図を覚えていますか? ここでもう一度、これまでに実行したパスやステップを確認しましょう。スキーマを設定する必要があるものの、実施した作業の多くは宣言的 (コードが少ないか不要) なものでした。思ったより楽でしたよね?

外部サービスワークフローの 6 つのステップ。

外部サービスアプリケーションの拡張とハンズオン

Acme 銀行の主要な関係者は、あなたが前のセクションで実行した銀行サービスのプロジェクトを気に入りました。そしてさらに、既存の銀行サービスワークフローに別のビジネスプロセスを追加したいと考えています。 

ステップ 6 を確認し、ハンズオン Challenge としてステップ 7 ~ 9 を追加する準備を整えましょう。

前の銀行サービスプロジェクトに 4 つの接続された項目が追加されているキャンバス

メモ

メモ

以前の「外部ビジネスアクションにアクセスするフローの作成」セクションの Acme 銀行の外部サービスプロジェクトをまだ完了していない場合は、この拡張に取り組む前に完了してください。そうしないと、検証する対象がありません。

この単元で作成したフローにアクション (ステップ 6) を追加し、口座と口座種別の作成を追跡して検証できるようにします。口座が存在する場合は、Acme 銀行の担当者に口座情報を表示します。口座が存在しない場合は、Acme 銀行の担当者に通知します。ステップ 7 ~ 9 はハンズオン Challenge で実行します。

まず、2 つの変数を作成しましょう。1 つは口座が存在し、確認できるかどうかについての情報を保存し、もう 1 つは口座が存在しない場合のものです。 

2 つのApex 定義変数の作成

  1. [BankService] フロー (ツールボックスの [マネージャ] タブ) で、次の手順を実行します。
  2. 新しいリソースを作成します。
    • リソース種別: 変数
    • API 参照名: checkedAccount
    • データ型: Apex 定義
    • Apex クラス: ExternalService__BankService_accountDetails
    • フロー外部での可用性: [入力で使用可能][出力で使用可能] の両方をオンにします。
  3. [完了] をクリックします。
  4. 2 つ目の変数の新しいリソースを作成します。
    • リソース種別: 変数
    • API 参照名: notFoundAccount
    • データ型: Apex 定義
    • Apex クラス: ExternalService__BankService_errorModel
    • フロー外部での可用性: [入力で使用可能][出力で使用可能] の両方をオンにします。
  5. [完了] をクリックします。
アクション
  1. ツールボックスから、[アクション] 要素をキャンバスにドラッグします。
  2. [検索条件] を [カテゴリ] に変更し、[BankService] を選択して、検索ボックスをクリックします。
  3. [getAccount] を選択します。
    • 表示ラベル: Check account (口座のチェック)
    • API 参照名: Check_account
    • 切り替えを [含める] に設定します。
    • accountName: Name_on_Account
    • [手動割り当て変数 (詳細)] をオンにします。
  4. [出力値を保存] で、次のように設定します。
    • >_200: CheckedAccount (Apex で定義された変数)
    • >_404 Exception: notFoundAccount (Apex で定義された変数)
  5. [完了] をクリックします。
  6. レコード更新要素を [Check account (口座のチェック)] アクション要素に接続します。