フローを設計する
学習の目的
この単元を完了すると、次のことができるようになります。
- フロー設計の準備をする。
- ServiceNow から Salesforce、Slack の順にデータを自動的に同期するフローを設計する。
この単元では、まずフローの設計の準備方法を学習します。次に、MuleSoft Composer を使用して、ServiceNow のインシデントを Salesforce のケースや Slack の通知と自動的に同期させるフローを作成する方法を学習します。
フロー設計の準備をする
「MuleSoft Composer の基本」で説明したように、フローはシステムとデータを統合するために組み合わせて設定する一連のステップです。フローを設計する前に、フローで実行する必要があるタスクを適切なステップ (フローコンポーネント形式) にマップする必要があります。紙と鉛筆を使ってこれを行うことで、フローをどのようなものにするか考えをまとめることができます。
以下は、前の単元で説明した NTO のユースケースのマッピングの一例です。
タスク | フローコンポーネント |
---|---|
ServiceNow でインシデントが新規作成または更新されたことを検知する。 |
ServiceNow のトリガー |
Service Cloud に対応するケースが存在するかどうか判断する。 |
Service Cloud で ServiceNow 番号が同じすべてのケースを取得するアクションステップ。 |
対応するケースが存在しない場合 |
ケースのリストが空かどうかを判断する If/Else ブロック。If ブランチに次のアクションステップが設定されています。
|
対応するケースが存在する場合 |
If/Else ブロックの Else ブランチの次のアクションステップ。
|
MuleSoft Composer ではデフォルトで作業が検証され、手順の各ステップでアプリケーション内コンテキストヘルプが提供されます。たとえば、システムに接続を追加すると、MuleSoft Composer で接続がテストされるため、正常に機能することを確認したうえで次のステップに進むことができます。また、各ステップ内の必須項目を入力するように MuleSoft Composer から求められます。これでフローのビルドが簡単になります。
フローの構築のベストプラクティスは、数ステップごとにテストを繰り返しながらフローを完成させることです。
次のデモ動画で、MuleSoft Composer を使用して ServiceNow を Salesforce、Slack の順に接続する方法をご覧ください。
フローを設計する
ServiceNow のインシデントを Salesforce のケースや Slack の通知と同期させるインテグレーションフローを設計する準備ができました。
次の手順に従ってフローを設計します。
NTO 組織から MuleSoft Composer を起動します。
- ユーザー名とパスワードを使用して NTO 組織にログインします。
- アプリケーションランチャーに
Composer
と入力して [MuleSoft Composer] を選択します。
新しいフローを作成します。
- [Create New Flow (新規フローを作成)] をクリックします。
- デフォルトのフロー名の横にある鉛筆アイコンをクリックします。
- フローに
Sync Service Cases - ServiceNow to Salesforce to Slack
(サービスケースを ServiceNow から Salesforce と Slack に同期) と名前を付け、[Save (保存)] をクリックします。
ServiceNow 接続を使用するフローのトリガーを作成します。
- [ServiceNow] をクリックします。
-
[Add new ServiceNow connection (新しい ServiceNow 接続を追加)] をクリックします。
メモ: 今回が 1 つ目の接続の場合はこのオプションが示されません。次のステップに進んでください。 - テキストファイルに保存した ServiceNow の接続パラメーター値を使用して、必須値を入力し、接続の表示名に
NTO ServiceNow
と入力してから、[Create (作成)] をクリックします。MuleSoft Composer で接続が自動的にテストされます。エラーメッセージが表示されていない場合は接続が確立し、フローの最初のステップ (トリガー) が表示されます。
ServiceNow でインシデントが作成または更新されるたびにフローを開始するトリガーを設定します。
- [Choose an event that starts this flow (このフローを開始するイベントを選択)] 項目内をクリックして、[New / Updated Record (レコードの新規作成/更新)] を選択します。
- [Table Name (テーブル名)] 項目に
incident
(インシデント) と入力します。 - [Save (保存)] をクリックしてフローを保存します。
フローに、トリガーとなるインシデントと一致する Salesforce の全ケースを取得する 2 つ目のステップを作成します。
- プラスアイコンをクリックしてステップを追加します。
- [Salesforce] をクリックします。
-
[Add new Salesforce connection (新しい Salesforce 接続を追加)] をクリックし、NTO Sandbox 組織への接続を作成します。
メモ: 初めての Salesforce 接続の場合、このオプションは表示されません。次のステップに進んでください。 - この接続に
NTO sandbox org
(NTO Sandbox 組織) と名前を付けます。 -
[This is a sandbox organization (これは Sandbox 組織です)] チェックボックスをオンにして、[Create (作成)] をクリックします。
メモ: 開発者組織を使用する場合は、このチェックボックスの選択をスキップして、[Create (作成)] をクリックします。 - NTO の Sandbox 組織のユーザー名とパスワードを入力して、[Log In to Sandbox (Sandbox にログイン)] をクリックします。
- [Allow (許可)] をクリックして、MuleSoft Composer に「ID URL サービスにアクセス」、「API を使用してユーザーデータを管理」、「いつでも要求を実行」権限を付与します。MuleSoft Composer で接続が自動的にテストされます。エラーメッセージが表示されていない場合は接続が確立し、フローの 2 番目のステップが表示されます。
インシデントと一致する全ケースを取得する 2 つ目のステップを設定します。
- [Action (アクション)] 項目をクリックし、[Get records (レコードを取得)] を選択します。
- [Object Type (オブジェクト種別)] 項目に
Case
(ケース) と入力します。 - [Conditions to filter the objects (オブジェクトを絞り込む条件)] 選択リストで、[All conditions must be met (AND) (すべての条件を満たす必要がある (AND))] を選択します。
- 項目に [ServiceNow Incident ID (ServiceNow インシデント ID)]、演算子に [Equals (次の文字列と一致する)] を選択し、フローのステップ 1 の [Number (番号)] を選択します。
インシデントに Salesforce ケース ID があるかどうかを判断する If/Else ブロックを作成して設定します。
- プラスアイコンをクリックしてステップを追加します。
- 下にスクロールして [If/Else Block (If/Else ブロック)] をクリックします。デフォルトでは [All conditions must be met (AND) (すべての条件を満たす必要がある (AND))] が選択されています。
- 項目にフローのステップ 2 の [List of Case (ケースのリスト)]、演算子に [Is empty (空)] を選択します。この条件を満たした場合は、Service Cloud にこのインシデントに対応するケースがないことになります。そのため、If ブランチの後続の 3 つのステップ (Salesforce のケースの作成、ServiceNow のインシデントの更新、Slack のメッセージの送信) が実行されます。
フローの If ブランチ内に、ケースを新規作成する 3 つ目のステップを作成します。
- プラスアイコンをクリックして If ブランチ内にステップを追加します。
- [Salesforce] をクリックして、[NTO sandbox org (NTO Sandbox 組織)] をクリックします。
Service Cloud にケースを新規作成する 3 つ目のステップを設定します。
- [Action (アクション)] 項目をクリックし、[Create new record (新しいレコードを作成)] を選択します。
- [Object Type (オブジェクト種別)] 項目に
Case
(ケース) と入力します。 - [Add Fields (項目を追加)] をクリックし、[ServiceNow Incident ID (ServiceNow インシデント ID)]、[Status (状況)]、[Subject (件名)] を選択して、[Add (追加)] をクリックします。
- Service Cloud のケースの項目を、フローのステップ 1 で取得した ServiceNow のインシデントの適切な項目に次のようにマップします。
- [ServiceNow Incident ID (ServiceNow インシデント ID)] = ステップ 1 の [Number (番号)]
- [Status (状況)] = 検索選択リストをクリックし、[Pick from List (リストから選択)] を選択して、[New (新規)] を選択
- [Subject (件名)] = ステップ 1 の Short_description
フローの If ブランチ内に、Salesforce ケース ID でインシデントを更新する 4 つ目のステップを作成します。
- プラスアイコンをクリックして If 分岐にステップを追加します。
- [ServiceNow] をクリックして、[NTO ServiceNow] をクリックします。
関連付けられている Salesforce ケース ID でインシデントを更新する 4 つ目のステップを設定します。
- [Action (アクション)] 項目内をクリックして、[Update Record (レコードを更新)] を選択します。
- [Table Name (テーブル名)] 項目に
incident
(インシデント) と入力します。sys id は必須項目のため、自動的に選択されます。 - [Add Fields (項目を追加)] をクリックします。
- 検索項目に
salesforce
と入力し、[u salesforce case id] を選択して [Add (追加)] をクリックします。 - インシデントの項目をフローの先行ステップに次のようにマップします。
- [sys id] = ステップ 1 の Sys_id
- [u salesforce case id] = ステップ 3 の ID
ServiceNow のインシデントを Slack の通知と同期するフローの 5 つ目のステップを作成します。
- If ブランチ内のプラスアイコンをクリックしてステップを追加します。
- [Slack] をクリックします。
-
[Add new Slack connection (新規 Slack 接続を追加)] をクリックします。
メモ: これが最初の Slack 接続である場合、このオプションは表示されません。次のステップに進んでください。 - 接続に
NTO Slack
と名前を付け、[Create (作成)] をクリックします。 - Slack ワークスペース選択リストから [NTO] を選択します。
- [Allow (許可)] をクリックして、MuleSoft Composer に NTO ワークスペースでの「チャンネルと会話に関するコンテンツと情報を表示する」、「ワークスペースに関するコンテンツと情報を表示する」、および「チャンネルと会話でアクションを実行する」権限を付与します。MuleSoft Platform アプリケーションが NTO Slack ワークスペースに自動的に追加され、フローの 5 つ目のステップが表示されます。
service-cases チャンネルに新しいインシデントを通知する 5 つ目のステップを設定します。
- [Action (アクション)] 項目をクリックし、[Post message to channel (チャンネルにメッセージを投稿する)] を選択します。
- [Channel Name (チャンネル名)] 項目で検索選択リストをクリックし、[Pick from List (リストから選択)] を選択し、[service-cases] を選択します。
- [Message (メッセージ)] 項目をクリックし、[Custom Expression (カスタム式)] をクリックします。カスタム式エディターが開きます。このカスタム式エディターを使用して、フローの前のステップからの動的な項目値とユーザーが入力する静的なテキストの両方を含むメッセージを設定します。
- [Message (メッセージ)] 項目に、
*New incident:*
(*新規インシデント:*) と入力します。Slack ではマークダウン構文がサポートされ、*New incident:* が New incident: になります。 - スペースを挿入して、フローのステップ 1 の [Number (番号)] を選択します。
-
,
(、) と入力して、フローのステップ 1 の [Short_description] を選択します。 - [Apply (適用)] をクリックします。
- [Bot Name (ボット名)] と [Bot Icon URL (ボットアイコン URL)] は空白のままにします。MuleSoft Composer はデフォルトで、MuleSoft Platform Slack アプリケーションを使用して Slack と通信します。
フローの If/Else ブロックに、Service Cloud に対応するケースがある全インシデントを処理する Else ブランチを追加します。
- [Add Else (Else を追加)] をクリックします。If ブランチのケースのリストが空でない場合は、インシデントに対応するケースがあることになります。その場合、If ブランチの後続の 2 つのステップ (Salesforce のケースの更新、Slack のメッセージの送信) が実行されます。
Else ブランチに、Salesforce の対応するケースを更新する 6 つ目のステップを作成します。
- プラスアイコンをクリックして Else ブランチ内にステップを追加します。
- [Salesforce] をクリックして、[NTO sandbox org (NTO Sandbox 組織)] をクリックします。
Salesforce の対応するケースを更新する 6 つ目のステップを設定します。
- [Action (アクション)] 項目内をクリックして、[Update record (レコードを更新)] を選択します。
- [Object Type (オブジェクト種別)] 項目に
Case
(ケース) と入力します。ケース ID は必須項目のため、自動的に選択されます。 - [Add Fields (項目を追加)] をクリックし、[Status (状況)]、[Subject (件名)] を選択して、[Add (追加)] をクリックします。
- [Record (レコード)] セクションで、ケースの項目を、フローのステップ 1 のインシデントの関連する項目に次のようにマップします。
- [Case ID (ケース ID)] = ステップ 1 の U_salesforce_case_id
- [Status (状況)] = [Escalated (エスカレーション済み)]
- [Subject (件名)] = ステップ 1 の Short_description
Else ブランチに、ServiceNow のインシデントを Slack の通知と同期させる 7 つ目のステップを作成します。
- Else ブランチ内のプラスアイコンをクリックしてステップを追加します。
- [Slack] をクリックして、[NTO Slack] をクリックします。
インシデントの更新を service-cases チャンネルに通知する 7 つ目のステップを設定します。
- [Action (アクション)] 項目をクリックし、[Post message to channel (チャンネルにメッセージを投稿する)] を選択します。
- [Channel Name (チャンネル名)] 項目で、[service-cases] を選択します。
- [Message (メッセージ)] 項目をクリックし、[Custom Expression (カスタム式)] をクリックします。
- [Message (メッセージ)] 項目に
*Updated incident:*
(*更新インシデント:*) と入力します。Slack では *Updated incident:* が Updated incident: になります。 - スペースを挿入して、フローのステップ 1 の [Number (番号)] を選択します。
-
,
(、) と入力して、フローのステップ 1 の [Short_description] を選択します。 - [Apply (適用)] をクリックします。
- [Bot Name (ボット名)] と [Bot Icon URL (ボットアイコン URL)] は空白のままにします。MuleSoft Composer はデフォルトで、MuleSoft Platform Slack アプリケーションを使用して Slack と通信します。
- フローを保存します。フロー全体は次のようになります。
ここまで順調ですね。次の単元では、フローが想定どおりに機能することを確認するテストの実行方法を学習します。