Microsoft Dynamics 365 Connector 2.6 の例 - Mule 4

デモプロジェクトを構築して実行すると、Microsoft Dynamics 365 Connector の理解を深めることができます。

始める前に

このデモプロジェクトを構築して実行するには、以下が必要です。

  • Mule 4.0 以降の Anypoint Studio。

  • Microsoft Dynamics 365 Connector v1.0.0 以降。

  • Microsoft Dynamics 365 (CRM 8.2)

Mule フローの概要

以下の例には、次の ​<flow>​ 要素が含まれます。

  • CREATE_EMPTY_CONTACT_DEMO
    後で他のフローで必要になる空の取引先責任者エンティティを作成します。
    [GET] HTTP エンドポイントは次の URL をリスンします。​http://localhost:8081/createContact

  • CREATE_EMPTY_OPPORTUNITY_DEMO
    後で他のフローで必要になる空の商談エンティティを作成します。
    [GET] HTTP エンドポイントは次の URL をリスンします。​http://localhost:8081/createOpportunity

  • CREATE_ACCOUNT_DEMO
    指定された属性を使用して取引先を作成し、さらに取引先を取引先責任者に関連付けます。
    [POST] HTTP エンドポイントは次の URL をリスンします。​http://localhost:8081/createAccount​ = 要求の例: {"AccountName":"Test Account Name","CreditOnHold":true,"CreditLimit":1000,"ContactID":"<ID>"}

  • CREATE_MULTIPLE_ENTITIES_DEMO
    1 つのバッチ要求で同じ種別のエンティティを複数作成します。
    [POST] HTTP エンドポイントは次の URL をリスンします。​http://localhost:8081/createMultipleAccounts
    要求の例: [{"AccountName":"Account Name 1","CreditOnHold":true,"CreditLimit":1500},{"AccountName":"Account Name 2","CreditOnHold":false,"CreditLimit":2000}]

  • UPDATE_MULTIPLE_ENTITIES_DEMO
    1 つのバッチ要求で同じ種別のエンティティを複数更新します。
    [POST] HTTP エンドポイントは次の URL をリスンします。​http://localhost:8081/updateMultipleAccounts
    要求の例: [{"EntityId":"<ID>","AccountName":"Updated Name 1"},{"EntityId":"<ID>","AccountName":"Updated Name 2"}]

  • DELETE_ENTITY_DEMO
    指定された種別のエンティティを削除します。
    [POST] HTTP エンドポイントは次の URL をリスンします。​http://localhost:8081/deleteAccount
    要求の例: {"EntityId":"<ID>"}

  • RETRIEVE_ENTITY_DEMO
    指定された種別のエンティティを取得します。
    [POST] HTTP エンドポイントは次の URL をリスンします。​http://localhost:8081/retrieveAccount
    要求の例: {"EntityId":"<ID>"}

  • RETRIEVE_ENTITIES_BY_URL_DEMO
    URL 要求に基づいて複数のエンティティを取得します。
    [GET] HTTP エンドポイントは次の URL をリスンします。​http://localhost:8081/retrieveAccountsByURL

  • RETRIEVE_ENTITIES_BY_QUERY_DEMO
    DataSense クエリ言語に基づいて複数のエンティティを取得します。
    [GET] HTTP エンドポイントは次の URL をリスンします。​http://localhost:8081/retrieveAccountsByQuery

  • DISASSOCIATE_ENTITIES_DEMO
    エンティティの関連付けを解除します。要求を実行するエンティティの ID と関連付けを解除するキーを指定します。
    [POST] HTTP エンドポイントは次の URL をリスンします。​http://localhost:8081/disassociateEntities
    要求の例: {"EntityId":"<ID>","EntityLinkKeys":["primarycontactid"]}

  • DO_ACTION_DEMO
    WinOpportunity​ アクションをコールします。
    [POST] HTTP エンドポイントは次の URL をリスンします。​http://localhost:8081/doAction
    要求の例: {"Subject":"Won Opportunity","Status":3,"OpportunityId":"<OP_ID>"}

http://localhost:8081​ を参照してフローをテストするか、curl のようなツールや、URL のコール時にボディの POST を実行できる他のツール (Chrome/Mozilla Firefox の拡張機能) を使用して JSON の POST を実行できます。

フローをテストする

  1. /src/main/resources/mule-artifact.properties で、OAuth2 ユーザー名/パスワード設定の OAuth2 ログイン情報を指定します。

    • config-oauth-user-pass.username​ セッションを初期化するユーザー名

    • config-oauth-user-pass.password​ ユーザーの認証に使用するパスワード

    • config-oauth-user-pass.resource​ Web API のアプリケーション ID URI (セキュアなリソース)。CRM バージョンを指定しない、ルート URI である必要があります (例: https://<your-org>.crm2.dynamics.com/Leaving the Site​)。

    • config-oauth-user-pass.clientId​ アプリケーションを Azure Active Directory に登録したときに割り当てられたアプリケーション ID。この ID は Azure Portal で確認できます。

    • config-oauth-user-pass.clientSecret​ アプリケーション登録ポータルでアプリケーション用に作成したアプリケーションシークレット。クライアントシークレットは信頼のおける方法でデバイスに保存できないため、シークレットをネイティブアプリケーションで使用しないでください。シークレットは Web アプリケーションと Web API で必要です (クライアントシークレットをサーバー側で安全に保存できます)。

    • config-oauth-user-pass.tokenRequestEndpoint​ アクセストークンを取得するためにコールされるトークンエンドポイント。例: https://login.windows.net/<tenant-id>/oauth2/tokenLeaving the Site​。この場合の「tenant-id」は Azure Active Directory ID です。

  2. コネクタは DataSense 情報を提供するために複数の要求を実行するので、DataSense 接続タイムアウトは 200 秒より長く指定します。

  3. Studio でプロジェクトを実行します。

  4. ブラウザーで ​localhost:8081​ と入力し、デモの選択メニューにアクセスします。

  5. 必要に応じて、[Connection Timeout (接続タイムアウト)] と [Read Timeout (読み取りタイムアウト)] を設定します。 [Connection Timeout (接続タイムアウト)] は、サーバーに初めて接続するときのタイムアウトです。 [Read Timeout (読み取りタイムアウト)] は、サーバーからのデータの読み取りを待機するときのタイムアウトです。

Mule XML フロー

エンティティを更新する

  1. Microsoft Dynamics 365 Update 操作を追加します。

  2. 必須の論理名 (小文字のスキーマの名前) を指定します。

  3. デフォルトの省略可能な属性を定義します。エンティティ ID は、更新するエンティティインスタンスを示す必須属性です。

例: エンティティの更新

指定された属性を使用して取引先を更新します。

[POST] HTTP エンドポイントは次の URL をリスンします。​http://localhost:8081/updateAccount

要求の例

{"EntityId":"<ENTRY_ID>","AccountName":"Updated Name","CreditLimit":1500}
json

フロー定義