フローを設計する
学習の目的
この単元を完了すると、次のことができるようになります。
- フローの設計の準備をする。
- NetSuite で更新された在庫品目を Salesforce の商品や関連付けられた価格表エントリと自動的に同期するフローを設計する。
フローの設計の準備をする
「MuleSoft Composer の基本」で説明したように、フローはシステムとデータを統合するために組み合わせて設定する一連のステップです。フローを設計する前に、フローで実行する必要があるタスクを、フローコンポーネント形式にした適切なステップにマップする必要があります。一連の流れを紙に描き出すと、どのようなフローになるか把握しやすくなります。
以下は、前の単元で説明した NTO のユースケースのマッピングの一例です。
タスク | フローコンポーネント |
---|---|
NetSuite で更新された在庫品目を見つける。 |
商品の更新時に NetSuite から実行されるトリガー |
対応する商品 (ある場合) を取得する。 |
NetSuite 品目 ID が在庫品目の内部 ID と同じである Sales Cloud の商品をすべて取得するアクションステップ |
Sales Cloud に対応する商品が存在するかどうかを判断する。 |
商品のリストが空 (つまり Sales Cloud に商品が存在しない) かどうかを評価する If/Else ブロック |
対応する商品が存在しない場合 |
If ブロック内:
|
対応する商品が存在する場合 |
If/Else ブロックの Else ブランチ内:
|
MuleSoft Composer ではデフォルトで作業が検証され、手順の各ステップにアプリケーション内コンテキストヘルプが表示されます。たとえば、システムに接続を追加すると、MuleSoft Composer で接続がテストされるため、正常に機能することを確認したうえで次のステップに進むことができます。また、フローを作成しやすくするために、各ステップに必須項目への入力を求めるプロンプトが表示されます。
フローの作成のベストプラクティスは、数ステップごとにテストを繰り返しながらフローを完成させることです。
フローを設計する
NetSuite で更新された在庫品目を Salesforce の商品や関連付けられた価格表エントリと同期するインテグレーションフローを設計する準備が整いました。
次の手順に従ってフローを設計します。
NTO 組織から MuleSoft Composer を起動します。
- ユーザー名とパスワードを使用して NTO 組織にログインします。
- アプリケーションランチャーに
Composer
と入力して [MuleSoft Composer] を選択します。
新しいフローを作成します。
- [Create New Flow (新規フローの作成)] をクリックします。
- デフォルトのフロー名の横にある鉛筆アイコンをクリックします。
- フローに
Sync NetSuite Inventory Items to Salesforce Products and Price Book Entries
(NetSuite の在庫品目を Salesforce の商品や在庫価格表エントリと同期) と名前を付けて、[Save (保存)] をクリックします。
NetSuite 接続を使用してフローのトリガーを作成します。
- [NetSuite] をクリックします。
-
[Add new NetSuite connection (新しい NetSuite 接続を追加)] をクリックします。
メモ: 今回初めて接続する場合はこのオプションが表示されません。次のステップに進みます。 - NetSuite の接続パラメーター値が記載されたテキストファイルを参照して、必須の値を入力し、接続表示名を
NTO NetSuite
にして、[Create (作成)] をクリックします。MuleSoft Composer で接続が自動的にテストされます。エラーメッセージが表示されていない場合は接続が確立され、フローの最初のステップ (トリガー) が表示されます。
NetSuite で在庫品目が更新されるたびにフローを開始するトリガーを設定します。
- [Choose an event that starts this flow (このフローを開始するイベントを選択)] 項目をクリックして、[Updated Record (レコードの更新)] を選択します。
- [Type of Record (レコードタイプ)] 項目に、
INVENTORY_ITEM
と入力します。 - [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 (オブジェクト種別)] 項目に、
Product
(商品) と入力します。 - [Conditions to filter the objects (オブジェクトを絞り込む条件)] 選択リストで、[All conditions must be met (AND) (すべての条件を満たす必要がある (AND))] を選択します。
- 項目に [NetSuite Item ID (NetSuite 品目 ID)]、演算子に [Equals (次の値と一致する)] を選択し、フローのステップ 1 の [Record (レコード)]> [InternalId] を選択します。
在庫品目に対応する商品があるかどうかを判断する If/Else ブロックを作成して設定します。
- プラスアイコンをクリックしてステップを追加します。
- スクロールダウンして [If/Else Block (If/Else ブロック)] をクリックします。デフォルトで [All conditions must be met (AND) (すべての条件を満たす必要がある (AND))] が選択されています。
- 項目にフローのステップ 2 の [List of Product (商品のリスト)]、演算子に [Is empty (空)] を選択します。この条件を満たした場合は、Sales Cloud にこの在庫品目に対応する商品がないことになります。その場合は、If ブランチの後続の 3 つのステップ (Salesforce での商品の作成、NetSuite での在庫品目の更新、Salesforce での価格表エントリの作成) が実行されます。
Sales Cloud で商品を作成する 3 つ目のステップを If/Else ブロックの If ブランチ内に作成します。
- プラスアイコンをクリックして If ブランチ内にステップを追加します。
- [Salesforce] をクリックして、[NTO sandbox org (NTO Sandbox 組織)] をクリックします。
Sales Cloud で在庫品目の内部 ID が設定された商品を作成する 3 つ目のステップを設定します。
- [Action (アクション)] 項目をクリックして、[Create new record (新しいレコードの作成)] を選択します。
- [Object Type (オブジェクト種別)] 項目に、
Product
(商品) と入力します。[Product Name (商品名)] は必須項目のため、自動的に選択されます。 - [Add Fields (項目を追加)] をクリックします。
- 検索項目を使用して、次の項目を見つけて選択し、[Add (追加)] をクリックします。
ヒント: 検索する項目のキーワードを入力し、表示された項目の中から適切なものを選択します。キーワードをクリアして、次の項目でこのプロセスを繰り返します。すべての項目を選択したら、[Add (追加)] をクリックします。- Active (アクティブ)
- NetSuite Item ID (NetSuite 品目 ID)
- Product Code (商品コード)
- Product Description (商品説明)
- 商品項目を、フローのステップ 1 でキャプチャした在庫品目の対応する項目に次のようにマップします。
- Product Name (商品名) = [Record (レコード)] > [Display Name (表示名)]
- Active (アクティブ) =
true
- NetSuite Item ID (NetSuite 品目 ID) = [Record (レコード)] > [InternalID]
- Product Code (商品コード) = [Record (レコード)] > [Item ID (品目 ID)]
- Product Description (商品説明) = [Record (レコード)] > [Purchase Description (購入説明)]
関連付けられた商品 ID を使用して在庫品目を更新するフローの 4 つ目のステップを If ブランチ内に作成します。
- プラスアイコンをクリックして If ブランチにステップを追加します。
- [NetSuite] をクリックして、[NTO NetSuite] をクリックします。
関連付けられた商品 ID を使用して在庫品目を更新する 4 つ目のステップを設定します。
- [Action (アクション)] 項目をクリックして、[Update Record (レコードを更新)] を選択します。
- [Type of Record (レコードタイプ)] 項目に、
INVENTORY_ITEM
と入力します。 - [ID Type (ID 種別)] 項目で、[INTERNAL (内部)] を選択します。[Record Id (レコード ID)] は必須項目のため、自動的に選択されます。
- [Add Fields (項目を追加)] をクリックします。
- 検索項目に
salesforce
と入力し、[Salesforce Product ID (Salesforce 商品 ID)] を選択して [Add (追加)] をクリックします。 - 在庫品目項目を、フローの先行するステップに次のようにマップします。
- Record Id (レコード ID) = ステップ 1 の [Record (レコード)] > [InternalId]
- Salesforce Product ID (Salesforce 商品 ID) = ステップ 3 の [Id (ID)]
Sales Cloud で商品の価格表エントリを作成するフローの 5 つ目のステップを If ブランチ内に作成します。
- プラスアイコンをクリックして If ブランチ内にステップを追加します。
- [Salesforce] をクリックして、[NTO sandbox org (NTO Sandbox 組織)] をクリックします。
Sales Cloud で商品の価格表エントリを作成する 5 つ目のステップを設定します。
- [Action (アクション)] 項目をクリックして、[Create new record (新しいレコードの作成)] を選択します。
- [Object Type (オブジェクト種別)] 項目に、
Price Book Entry
(価格表エントリ) と入力します。[List Price (リスト価格)]、[Pricebook2Id]、[Product2Id] は必須項目のため、自動的に表示されます。 - [Add Fields (項目を追加)] をクリックします。
- 検索ツールを使用して [Active (アクティブ)] を選択し、[Add (追加)] をクリックします。
- 価格表エントリ項目を、フローの先行するステップに次のようにマップします。
- List Price (リスト価格) = ステップ 1 の [Record (レコード)] > [Cost (コスト)]
- Pricebook2Id =
01s1U000005mSpYQAU
。単元 1 で取得した標準価格表の値です。 - Product2Id = ステップ 3 の [Id (ID)]
- Active (アクティブ) =
true
If/Else ブロック内に、在庫品目に対応する既存の商品を更新し、その商品に関連付けられた価格表エントリを更新する Else ブランチを作成します。
- If/Else ブロックの下部にある [Add Else (Else を追加)] をクリックします。
Sales Cloud で関連付けられた在庫品目の詳細を使用して、既存の商品を更新するフローの 6 つ目のステップを Else ブランチ内に作成します。
- プラスアイコンをクリックして Else ブランチ内にステップを追加します。
- [Salesforce] をクリックして、[NTO sandbox org (NTO Sandbox 組織)] をクリックします。
Sales Cloud で関連付けられた在庫品目の詳細を使用して、既存の商品を更新する 6 つ目のステップを設定します。
- [Action (アクション)] 項目をクリックして、[Update record (レコードを更新)] を選択します。
- [Object Type (オブジェクト種別)] 項目に、
Product
(商品) と入力します。[Product ID (商品 ID)] は必須項目のため、自動的に選択されます。 - [Add Fields (項目を追加)] をクリックします。
- [Active (アクティブ)]、[Product Description (商品説明)]、[Product Name (商品名)] を選択して、[Add (追加)] をクリックします。
- 商品項目を、フローのステップ 1 でキャプチャした在庫品目の対応する項目に次のようにマップします。
- Product ID (商品 ID) = [Record (レコード)] > [Custom Field List (カスタム項目リスト)] > [Salesforce Product ID (Salesforce 商品 ID)]
- Active (アクティブ) =
true
- Product Description (商品説明) = [Record (レコード)] > [Purchase Description (購入説明)]
- Product Name (商品名) = [Record (レコード)] > [Display Name (表示名)]
Sales Cloud で既存の商品と商品 ID や価格表 ID が同じ価格表エントリをすべて取得するフローの 7 つ目のステップを作成します。
- プラスアイコンをクリックしてステップを追加します。
- [Salesforce] をクリックして、[NTO sandbox org (NTO Sandbox 組織)] をクリックします。
関連付けられた商品 ID と価格表 ID を使用して価格表エントリをすべて取得する 7 つ目のステップを設定します。このステップの結果、価格表エントリのリストが生成されるため、フローの次のステップでこのリストを反復処理して、既存の商品に関連付けられた価格表エントリを更新できます。
- [Action (アクション)] 項目をクリックして、[Get records (レコードを取得)] を選択します。
- [Object Type (オブジェクト種別)] 項目に、
Price Book Entry
(価格表エントリ) と入力します。 - [Conditions to filter the objects (オブジェクトを絞り込む条件)] 選択リストで、[All conditions must be met (AND) (すべての条件を満たす必要がある (AND))] を選択します。
- 項目に [Product2Id]、演算子に [Equals (次の値と一致する)] を選択し、フローのステップ 6 の ID を指定します。
- 項目に [Pricebook2Id]、演算子に [Equals (次の値と一致する)] を選択し、
01s1U000005mSpYQAU
と入力します。単元 1 で取得した標準価格表の値です。
フローのステップ 7 で取得した価格表エントリのリストを反復処理する For Each ブロックを Else ブランチ内に作成して設定します。
- Else ブランチのプラスアイコンをクリックします。
- スクロールダウンして [For Each] を選択します。
- [Input list (入力リスト)] 項目で、フローのステップ 7 の [List of Price Book Entry (価格表エントリのリスト)] を選択します。
Sales Cloud で既存の商品に関連付けられた価格表エントリを更新するフローの 8 つ目のステップを For Each ブロック内に作成します。
- プラスアイコンをクリックして Else ブランチ内にステップを追加します。
- [Salesforce] をクリックして、[NTO sandbox org (NTO Sandbox 組織)] をクリックします。
Sales Cloud で既存の商品に関連付けられた価格表エントリを更新する 8 つ目のステップを For Each ブロック内に作成します。
- [Action (アクション)] 項目をクリックして、[Create or update record (レコードの作成または更新)] を選択します。
- [Object Type (オブジェクト種別)] 項目に、
Price Book Entry
(価格表エントリ) と入力します。[External ID Field to Match (照合する外部 ID 項目)] は必須項目のため、自動的に表示されます。 - [External ID Field to Match (照合する外部 ID 項目)] 項目で、[Price Book Entry ID (価格表エントリ ID)] を選択します。[Price Book Entry ID (価格表エントリ ID)] は必須項目のため、自動的に選択されます。
- [Add Fields (項目を追加)] をクリックします。
- [Active (アクティブ)] と [List Price (リスト価格)] を追加して、[Add (追加)] をクリックします。
- 価格表エントリ項目を、フローの先行するステップに次のようにマップします。
- Price Book Entry ID (価格表エントリ ID) = ステップ 7 の [Price Book Entry ID (価格表エントリ ID)]
- Active (アクティブ) =
true
- List Price (リスト価格) = ステップ 1 の [Record (レコード)] > [Cost (コスト)]
- フローを保存します。フロー全体は次のようになります。
順調です! 次の単元では、フローをテストして正常に機能することを確認する方法を学習します。