フローを設計する
学習の目的
この単元を完了すると、次のことができるようになります。
- フローの設計の準備をする。
- 2 つの Salesforce 組織と Slack の間で新規作成または更新された取引先を自動的に同期するフローを設計する。
フローの設計の準備をする
「MuleSoft Composer の基本」で説明したように、フローはシステムとデータを統合するために組み合わせて設定する一連のステップです。フローを設計する前に、フローチャートを使用してフローのステップを計画します。一連の流れを紙に描き出すと、どのようなフローになるか把握しやすくなります。
以下は、前の単元で説明した NTO のユースケースのインテグレーションフローの全ステップを示すフローチャートの一例です。
以下に、この NTO のユースケースのフローを作成するためのタスクと関連するフローコンポーネントについて詳しく説明します。
タスク | フローコンポーネント |
---|---|
新規作成または更新された GD 取引先を見つける。 |
新規作成または更新された取引先に関する GD 組織からのトリガー。 |
対応する NTO 取引先 (ある場合) を取得する。 |
トリガー元の GD 取引先と同じ取引先名のすべての NTO 取引先を取得するアクションステップ。 |
対応する取引先が NTO に存在するかどうかを判断する。 |
取引先のリストが空 (つまり NTO に GD 取引先が存在しない) かどうかを評価する If/Else ブロック。 |
対応する取引先が存在しない場合:
|
If/Else ブロックの If ブランチ内の処理:
|
対応する取引先が存在する場合、更新ユーザーがコンポーザーユーザーではないことを確認した後に:
|
If/Else ブロックの 2 番目の If ブランチ内の処理:
For Each ブロック内:
|
MuleSoft Composer ではデフォルトで作業が検証され、手順の各ステップにアプリケーション内コンテキストヘルプが表示されます。たとえば、システムに接続を追加すると、MuleSoft Composer で接続がテストされるため、正常に機能することを確認したうえで次のステップに進むことができます。また、各ステップ内の必須項目を入力するように MuleSoft Composer から求められます。これでフローのビルドが簡単になります。
フローの作成のベストプラクティスは、数ステップごとにテストを繰り返しながらフローを完成させることです。
フローを設計する
これで、2 つの Salesforce 組織と Slack の間で新規作成または更新された取引先を自動的に同期するインテグレーションフローを設計する準備が整いました。
単元 1 で学習したように、フローの実行時に無限ループに陥ってしまう問題を回避するには、フローを設計する際にコンポーザーユーザー名とパスワードを使用して GD 組織への接続を作成します。
次の手順に従ってフローを設計します。
NTO 組織から MuleSoft Composer を起動します。
- Trailhead シミュレーターを起動して、タイトル画面で [開始] をクリックします。
- ユーザー名とパスワードを使用して NTO 組織にログインします。
- アプリケーションランチャーに
Composer
と入力して [MuleSoft Composer] を選択します。
新しいフローを作成します。
- [Create New Flow (新規フローの作成)] をクリックします。
- デフォルトのフロー名の横にある鉛筆アイコンをクリックします。
- フローに
Sync Accounts - GD Org to NTO Org to Slack
(取引先の同期 - GD 組織、NTO 組織、Slack の順) と名前を付け、[Save (保存)] をクリックします。
GD Sandbox 組織接続を使用して、フローのトリガーを作成します。
- [Salesforce] をクリックします。
-
[Add new Salesforce connection (新しい Salesforce 接続を追加)] をクリックして GD Sandbox 組織への接続を作成します。
メモ: これが最初の Salesforce 接続である場合、このオプションは表示されません。次のステップに進みます。 - この接続に
GD sandbox org
(GD Sandbox 組織) と名前を付けます。 -
[This is a sandbox organization (これは Sandbox 組織です)] チェックボックスをオンにして、[Create (作成)] をクリックします。
メモ: 開発者組織を使用する場合は、このチェックボックスの選択をスキップして [Create (作成)] をクリックします。 - GD Sandbox 組織のユーザー名とパスワードを入力して、[Log In to Sandbox (Sandbox にログイン)] をクリックします。
- [Allow (許可)] をクリックして、MuleSoft Composer に「ID URL サービスにアクセス」、「API を使用してユーザーデータを管理」、「いつでも要求を実行」権限を付与します。MuleSoft Composer で接続が自動的にテストされます。エラーメッセージが表示されていない場合は接続が確立され、フローの最初のステップ (トリガー) が表示されます。
GD 組織で取引先が作成または更新されるたびにフローを開始するトリガーを設定します。
- [Choose an event that starts this flow (このフローを開始するイベントを選択)] 項目をクリックして、[New or updated record (レコードの新規作成または更新)] を選択します。
- [Object Type (オブジェクト種別)] 項目をクリックして [Account (取引先)] を選択します。
- [Sample Output (サンプル出力)] セクションを見ると、項目とそれに関連付けられた GD 組織の取引先からのサンプル値が表示されています。これで、正しい組織に接続されていることを確認でき、フローの今後のステップで使用できるデータの構造がわかります。
- [Save (保存)] をクリックしてフローを保存します。
NTO Sandbox 組織接続を使用して、フローの 2 番目のステップを作成します。
- プラスアイコンをクリックしてステップを追加します。
- [Salesforce] をクリックし、[Add new Salesforce connection (新しい Salesforce 接続を追加)] をクリックします。
- 接続に
NTO sandbox org
(NTO Sandbox 組織) と名前を付けます。
メモ: NTO 組織にログインしていても、インテグレーションタスクを実行するには NTO 組織への接続を作成する必要があります。 - [This is a sandbox organization (これは Sandbox 組織です)] チェックボックスをオンにして、[Create (作成)] をクリックします。
- NTO Sandbox 組織のユーザー名とパスワードを入力して、[Log In to Sandbox (Sandbox にログイン)] をクリックします。
- [Allow (許可)] をクリックして、MuleSoft Composer に「ID URL サービスにアクセス」、「API を使用してユーザーデータを管理」、「いつでも要求を実行」権限を付与します。MuleSoft Composer で接続が自動的にテストされます。エラーメッセージが表示されていない場合は接続が確立され、フローの 2 番目のステップが表示されます。
トリガー元の GD 取引先と同じ取引先名のすべての NTO 取引先を取得する 2 番目のステップを設定します。
- [Action (アクション)] 項目をクリックして、[Get records (レコードを取得)] を選択します。
- [Object Type (オブジェクト種別)] 項目に
Account
(取引先) と入力します。 - [Conditions to filter the objects (オブジェクトを絞り込む条件)] 選択リストで、[All conditions must be met (AND) (すべての条件を満たす必要がある (AND))] を選択します。
- 項目として [Account Name (取引先名)]、演算子として [Equals (次の文字列と一致する)]、およびフローのステップ 1 の [Account Name (取引先名)] を選択します。
トリガー元の GD 取引先に対応する NTO 取引先があるかどうかを判断する If/Else ブロックを作成して設定します。
- プラスアイコンをクリックしてステップを追加します。
- スクロールダウンして [If/Else Block (If/Else ブロック)] をクリックします。デフォルトで [All conditions must be met (AND) (すべての条件を満たす必要がある (AND))] が選択されています。
- 項目にフローのステップ 2 の [List of Account (取引先のリスト)]、演算子に [Is empty (値なし)] を選択します。この条件を満たした場合は、GD 取引先に対応する NTO 取引先がないことになります。そのため、If ブランチの後続の 3 つのステップ (NTO 取引先の作成、GD 取引先の更新、Slack のメッセージの投稿) が実行されます。
既存の NTO Sandbox 組織の接続を使用して If/Else ブロックの If ブランチ内にフローの 3 番目のステップを作成します。
- プラスアイコンをクリックして If ブランチにステップを追加します。
-
[Salesforce] をクリックし、[NTO sandbox org (NTO Sandbox 組織)] をクリックします。
メモ: ここでは既存の NTO Sandbox 組織接続を再利用します。
関連付けられた GD 取引先 ID などの関連情報を使用して NTO 取引先を作成する、If ブランチ内の 3 番目のステップを設定します。
- [Action (アクション)] 項目をクリックして、[Create new record (新しいレコードの作成)] を選択します。
- [Object Type (オブジェクト種別)] 項目に
Account
(取引先) と入力します。[Account Name (取引先名)] は必須項目であるため自動的に選択されます。 - [Add Fields (項目を追加)] をクリックします。
- 検索項目を使用して、次の項目を見つけて選択し、[Add (追加)] をクリックします。
ヒント: 検索する項目のキーワードを入力し、表示された項目の中から適切なものを選択します。キーワードをクリアして、次の項目でこのプロセスを繰り返します。項目を選択したら、[Add (追加)] をクリックします。- Account Phone (取引先 電話)
- Account Rating (取引先 評価)
- Billing City (市区郡(請求先))
- Billing Country (国(請求先))
- Billing State/Province (都道府県(請求先))
- Billing Street (町名・番地(請求先))
- Billing Zip/Postal Code (郵便番号(請求先))
- GD Account ID (GD 取引先名)
- Upsell Opportunity (アップセル商談)
- NTO 取引先項目を、フローのステップ 1 でキャプチャした GD 取引先の対応する項目に次のようにマップします。
- Account Name (取引先名) = Account Name (取引先名)
- Account Phone (取引先 電話) = Account Phone (取引先 電話)
- Account Rating (取引先 評価) = Account Rating (取引先 評価)
- Billing City (市区郡(請求先)) = Billing City (市区郡(請求先))
- Billing Country (国(請求先)) = Billing Country (国(請求先))
- Billing State/Province (都道府県(請求先)) = Billing State/Province (都道府県(請求先))
- Billing Street (町名・番地(請求先)) = Billing Street (町名・番地(請求先))
- Billing Zip/Postal Code (郵便番号(請求先)) = Billing Zip/Postal Code (郵便番号(請求先))
- GD Account ID (GD 取引先 ID) = Account ID (取引先 ID)
- Upsell Opportunity (アップセル商談) = Upsell Opportunity (アップセル商談)
既存の GD Sandbox 組織の接続を使用して If ブランチ内にフローの 4 番目のステップを作成します。
- プラスアイコンをクリックして If ブランチ内にステップを追加します。
-
[Salesforce] をクリックし、[GD sandbox org (GD Sandbox 組織)] をクリックします。
メモ: ここでは既存の GD Sandbox 組織接続を再利用します。
If ブランチ内の 4 番目のステップで、トリガー元の GD 取引先を関連付けられた NTO 取引先 ID で更新するように設定します。
- [Action (アクション)] 項目をクリックして、[Update record (レコードを更新)] を選択します。
- [Object Type (オブジェクト種別)] 項目に
Account
(取引先) と入力します。[Account ID (取引先 ID)] は必須項目であるため自動的に選択されます。 - [Add Fields (項目を追加)] をクリックします。
- 検索ツールを使用して [NTO Account ID (NTO 取引先 ID)] を選択し、[Add (追加)] をクリックします。
- GD 取引先項目を、フローの前のステップで取得した対応する取引先項目に次のようにマップします。
- Account ID (取引先 ID) = ステップ 1 の [Account ID (取引先 ID)]
- NTO Account ID (NTO 取引先 ID) = ステップ 3 の [Id]
NTO Slack 接続を使用して If ブランチ内にフローの 5 番目のステップを作成します。
- If ブランチ内のプラスアイコンをクリックしてステップを追加します。
- [Slack] をクリックします。
-
[Add new Slack connection (新規 Slack 接続を追加)] をクリックします。
メモ: これが最初の Slack 接続である場合、このオプションは表示されません。次のステップに進みます。 - 接続に
NTO Slack
と名前を付け、[Create (作成)] をクリックします。 - Slack ワークスペース選択リストから [NTO] を選択します。
- [Allow (許可)] をクリックして、MuleSoft Composer に NTO ワークスペースでの「チャンネルと会話に関するコンテンツと情報を表示する」、「ワークスペースに関するコンテンツと情報を表示する」、および「チャンネルと会話でアクションを実行する」権限を付与します。MuleSoft Platform アプリケーションが NTO Slack ワークスペースに自動的に追加され、フローの 5 番目のステップが表示されます。
新規 GD 取引先を account-automation channel チャンネルに通知するように 5 番目のステップを設定します。
- [Action (アクション)] 項目をクリックし、[Post message to channel (チャンネルにメッセージを投稿する)] を選択します。
- [Channel Name (チャンネル名)] 項目で検索選択リストをクリックし、[Pick from List (リストから選択)] を選択し、[account-automation] を選択します。
- [Message (メッセージ)] 項目をクリックし、[Custom Expression (カスタム式)] をクリックします。カスタム式エディターが表示されます。このカスタム式エディターを使用して、フローの前のステップからの動的な項目値 (データピルとも呼ばれます) とユーザーが入力する静的なテキストの両方を含むメッセージを設定します。
- 次のメッセージを設定します。[Data (データ)] タブを使用して関連するデータピルを選択してください。Slack では、\n は改行を挿入し、アスタリスク (*) で囲んだデータピルは太字で表示されます。
New GD account (新規 GD 取引先):
ステップ 1 の *Account Name (取引先名)*\n Rating (評価):
ステップ 1 の *Account Rating (取引先 評価)*\n Upsell potential (アップセルの可能性):
ステップ 1 の *Upsell Opportunity (アップセル商談)* - [Apply (適用)] をクリックします。
トリガー元の GD 取引先に対応する NTO 取引先を更新する 2 番目の If ブランチを If/Else ブロック内に作成します。この If ブランチでは、実行時に無限ループに陥る問題が発生しないことを保証するために、更新を実行しているユーザーがコンポーザーユーザーではないことを確認します。
- If/Else ブロックの下部にある [Add If (If を追加)] をクリックします。デフォルトで [All conditions must be met (AND) (すべての条件を満たす必要がある (AND))] が選択されています。
- 項目としてフローのステップ 1 の [Last Modified by Id (最終更新者 Id)]、演算子として、演算子として [Does not equal (次の文字列と一致しない)] を選択して、単元 1 で見つけたコンポーザーユーザーの Salesforce ID を入力します。この例では 0055A000008sCOOQA2 です。この条件に一致した場合、更新を実行しているユーザーはコンポーザーユーザーではなくエンドユーザーということになります。そのため、2 番目の If ブランチの後続の 3 つのステップ (NTO 取引先の更新、GD 取引先の更新、Slack のメッセージの投稿) が実行されます。
フローのステップ 2 で取得した NTO 取引先リストの各項目を反復処理する For Each ブロックを 2 番目の If ブランチ内に作成して設定します。
- 2 番目の If ブランチのプラスアイコンをクリックします。
- スクロールダウンして [For Each] を選択します。
- [Input list (入力リスト)] 項目で、フローのステップ 2 の [List of Account (取引先のリスト)] を選択します。
既存の NTO Sandbox 組織の接続を使用して For Each ブロック内に 6 番目のステップを作成します。
- プラスアイコンをクリックして For Each ブロック内にステップを追加します。
- [Salesforce] をクリックし、[NTO sandbox org (NTO Sandbox 組織)] をクリックします。
トリガー元の GD 取引先に対応する NTO 取引先を更新する 6 番目のステップを設定します。
- [Action (アクション)] 項目をクリックして、[Update record (レコードを更新)] を選択します。
- [Object Type (オブジェクト種別)] 項目に
Account
(取引先) と入力します。[Account ID (取引先 ID)] は必須項目であるため自動的に選択されます。 - [Add Fields (項目を追加)] をクリックします。
- 検索項目を使用して、次の項目を見つけて選択し、[Add (追加)] をクリックします。
- Account Phone (取引先 電話)
- Account Rating (取引先 評価)
- Billing City (市区郡(請求先))
- Billing Country (国(請求先))
- Billing State/Province (都道府県(請求先))
- Billing Street (町名・番地(請求先))
- Billing Zip/Postal Code (郵便番号(請求先))
- GD Account ID (GD 取引先名)
- Upsell Opportunity (アップセル商談)
- NTO 取引先項目を、フローの前のステップで取得した対応する取引先項目に次のようにマップします。
- Account ID (取引先 ID) = ステップ 2 の [Account ID (取引先 ID)]
- Account Phone (取引先 電話) = ステップ 1 の [Account Phone (取引先 電話)]
- Account Rating (取引先 評価) = ステップ 1 の [Account Rating (取引先 評価)]
- Billing City (市区郡(請求先)) = ステップ 1 の [Billing City (市区郡(請求先))]
- Billing Country (国(請求先)) = ステップ 1 の [Billing Country (国(請求先))]
- Billing State/Province (都道府県(請求先)) = ステップ 1 の [Billing State/Province (都道府県(請求先))]
- Billing Street (町名・番地(請求先)) = ステップ 1 の [Billing Street (町名・番地(請求先))]
- Billing Zip/Postal Code (郵便番号(請求先)) = ステップ 1 の [Billing Zip/Postal Code (郵便番号(請求先))]
- GD Account ID (GD 取引先 ID) = ステップ 1 の [Account ID (取引先 ID)]
- Upsell Opportunity (アップセル商談) = ステップ 1 の [Upsell Opportunity (アップセル商談)]
既存の GD Sandbox 組織の接続を使用して、2 番目の If ブランチ内にフローの 7 番目のステップを作成します。
- プラスアイコンをクリックして 2 番目の If ブランチ内にステップを追加します。
- [Salesforce] をクリックして、[GD sandbox org (GD Sandbox 組織)] をクリックします。
2 番目の If ブランチ内の 7 番目のステップで、トリガー元の GD 取引先を関連付けられた NTO 取引先 ID で更新するように設定します。
- [Action (アクション)] 項目をクリックして、[Update record (レコードを更新)] を選択します。
- [Object Type (オブジェクト種別)] 項目に
Account
(取引先) と入力します。[Account ID (取引先 ID)] は必須項目であるため自動的に選択されます。 - [Add Fields (項目を追加)] をクリックします。
- 検索ツールを使用して [NTO Account ID (NTO 取引先 ID)] を選択し、[Add (追加)] をクリックします。
- GD 取引先項目を、フローの前のステップで取得した対応する取引先項目に次のようにマップします。
- Account ID (取引先 ID) = ステップ 1 の [Account ID (取引先 ID)]
- NTO Account ID (NTO 取引先 ID) = ステップ 2 の [Account ID (取引先 ID)]
既存の NTO Slack 接続を使用して、2 番目の If ブランチ内にフローの 8 番目のステップを作成します。
- プラスアイコンをクリックして 2 番目の If ブランチ内にステップを追加します。
-
[Slack] をクリックしてから [NTO Slack] をクリックします。
メモ: ここでは既存の NTO Slack 接続を再利用します。
更新された GD 取引先を account-automation channel チャンネルに通知するように、2 番目の If ブランチの 8 番目のステップを設定します。
- [Action (アクション)] 項目をクリックし、[Post message to channel (チャンネルにメッセージを投稿する)] を選択します。
- [Channel Name (チャンネル名)] 項目で検索選択リストをクリックし、[Pick from List (リストから選択)] を選択し、[account-automation] を選択します。
- [Message (メッセージ)] 項目をクリックし、[Custom Expression (カスタム式)] をクリックします。
- メッセージを次のように設定します。
Updated GD account (更新済み GD 取引先):
ステップ 1 の *Account Name (取引先名)*\n Rating (評価):
ステップ 1 の *Account Rating (取引先 評価)*\n Upsell potential (アップセルの可能性):
ステップ 1 の *Upsell Opportunity (アップセル商談)* - [Apply (適用)] をクリックします。
- フローを保存します。フロー全体は次のようになります。
お疲れさまでした。次の単元では、フローをテストして正常に機能することを確認する方法を学習します。