Anypoint Studio を使用した Veeva Vault Connector 1.5 の設定 - Mule 4

Anypoint Studio (Studio) エディターは、Mule アプリケーション、プロパティ、および設定ファイルの設計と更新に役立ちます。

Studio でコネクタを追加および設定する手順は、次のとおりです。

「アプリケーションログの表示」​で説明されているように、コネクタを実行するときに、リアルタイムでアプリケーションログを表示して問題を確認できます。

Studio で初めてコネクタを設定する場合は、​「Anypoint Studio を使用したコネクタの設定」​を参照してください。このトピックを参照した後、コネクタ項目についての詳細情報が必要な場合は、​「Veeva Vault リファレンス」​を参照してください。

Mule プロジェクトを作成する

Studio で、コネクタを追加および設定する新しい Mule プロジェクトを作成します。

  1. Studio で、​[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)]​ を選択します。

  2. Mule プロジェクトの名前を入力して、​[Finish (完了)]​ をクリックします。

コネクタを Mule プロジェクトに追加する

Veeva Vault Connector を Mule プロジェクトに追加して、XML コードにコネクタの名前空間およびスキーマの場所を自動的に入力し、プロジェクトの ​pom.xml​ ファイルに必須の連動関係を追加します。

  1. [Mule Palette (Mule パレット)]​ で、​[(X) Search in Exchange ((X) Exchange 内を検索)]​ をクリックします。

  2. [Add Dependencies to Project (連動関係をプロジェクトに追加)]​ で、検索項目に「​veeva vault​」と入力します。

  3. [Available modules (使用可能なモジュール)]​ で [Veeva Vault] をクリックします。

  4. [Add (追加)]​ をクリックします。

  5. [Finish (完了)]​ をクリックします。

Studio でコネクタを Mule プロジェクトに追加しても、Studio ワークスペースの他のプロジェクトはそのコネクタを使用できません。

ソースの設定

ソースは、指定された条件が満たされたときにフローを開始します。 次のソースのいずれかを Veeva Vault Connector で使用するように設定できます。

  • HTTP リスナー
    設定されたホストとポートで要求を受信するたびにフローを開始する

  • スケジューラー
    時間ベースの条件が満たされたときにフローを開始する

たとえば、HTTP Listener ソースを設定する手順は、次のとおりです。

  1. [Mule Palette (Mule パレット)]​ で、​[HTTP] > [Listener]​ を選択します。

  2. [Listener]​ を Studio キャンバスにドラッグします。

  3. [Listener (リスナー)]​ 設定画面で、必要に応じて ​[Display Name (表示名)]​ 項目の値を変更します。

  4. [Path (パス)]​ 項目の値を指定します。

  5. [Connector configuration (コネクタ設定)]​ 項目の横にあるプラス記号 (​+​) をクリックして、アプリケーション内の HTTP Listener ソースのすべてのインスタンスで使用できるグローバル要素を設定します。

  6. [General (一般)]​ タブで、コネクタの接続情報を指定します。

  7. [TLS]​ タブで、必要に応じてコネクタの TLS 情報を指定します。

  8. [Advanced (詳細)]​ タブで、必要に応じて再接続戦略を含む再接続情報を指定します。

  9. [Test Connection (接続をテスト)]​ をクリックして、Mule が指定されたサーバーに接続できることを確認します。

  10. [OK]​ をクリックします。

フローにコネクタの操作を追加する

フローにコネクタの操作を追加するときは、そのコネクタで実行するアクションを指定しています。

Veeva Vault Connector の操作を追加する手順は、次のとおりです。

  1. [Mule Palette (Mule パレット)]​ で、​[Veeva Vault]​ を選択し、目的の操作を選択します。

  2. その操作を Studio キャンバスの入力元の横にドラッグします。

コネクタのグローバル要素を設定する

コネクタを設定する場合、アプリケーション内のそのコネクタのすべてのインスタンスで使用できるグローバル要素を設定します。グローバル要素を設定するには、コネクタが対象の Veeva Vault システムにアクセスするために必要な認証ログイン情報を指定する必要があります。Veeva Vault Connector では、基本認証がサポートされています。

Veeva Vault Connector のグローバル要素を設定する手順は、次のとおりです。

  1. Studio キャンバスで操作を選択します。

  2. 操作の ​[General (一般)]​ 設定画面で、​[Add (追加)]​ アイコンをクリックして、グローバル要素設定項目にアクセスします。

  3. [General (一般)]​ タブの ​[Connection (接続)]​ で、設定する認証方式を選択します。

  4. [Advanced (詳細)]​ タブで、必要に応じて再接続戦略を含む再接続情報を指定します。

  5. [Test Connection (接続をテスト)]​ をクリックして、Mule が指定されたサーバーに接続できることを確認します。

  6. [OK]​ をクリックします。

Basic Connection (基本接続)

[Global Element Properties (グローバル要素のプロパティ)]​ 画面の ​[General (一般)]​ タブで次の情報を入力し、基本認証を設定します。

項目 説明

名前

設定名

Vault URL

接続に必要な Veeva Vault インスタンスの URL

Username (ユーザー名)

セッションの初期化に使用するユーザー名

Password (パスワード)

ユーザーの認証に使用するパスワード

Client Id (クライアント ID)

追跡の目的で各リクエストヘッダーと共に Veeva Vault インスタンスに送信するクライアント ID (​{organization}-{company/team}​ の形式)。

クライアント ID には、​mulesoft​ プレフィックスと ​client-vaultconnector​ サフィックスが含まれます。例: mulesoft-abcpharma-clinicalprod-client-vaultconnector​。

次の画像は、​[General (一般)]​ タブでの基本認証の設定例を示しています。

「General (一般)」 タブで入力される基本認証の認証項目

[Global Element Properties (グローバル要素のプロパティ)]​ 画面の ​[Advanced (詳細)]​ タブで次の情報を入力し、基本認証のバースト API 制限を設定します。

項目 説明

Response Timeout (応答タイムアウト)

コネクタが Veeva Vault の応答を待機する最大時間 (ミリ秒単位)。この最大時間を超えると、タイムアウト例外がスローされます。デフォルトは 30,000 ミリ秒 (30 秒) です。

Burst API Limit Profile (バースト API 制限プロファイル)

[Burst API limit profile (バースト API 制限プロファイル)] 設定は、Veeva Vault API の指定されたバースト API 制限が、設定されたしきい値に達するか超えた場合に機能します。

[Burst API limit config (バースト API 制限の設定)]​ が有効になっている場合 (デフォルト)、コネクタは、指定された ​API 制限しきい値​に対して Veeva Vault API のレスポンスヘッダー (​X-VaultAPI-BurstLimitRemaining​) 値を評価します。残りのバースト API 制限が ​[API Limit Threshold (API 制限しきい値)]​ の指定された値に達するか超えた場合、コネクタは指定された時間待機して ​[Burst Limit Remaining (残りのバースト制限)]​ の計数を再開します。

次の例は、​2019-06-06 10:34:45,096​ の警告メッセージが含まれているアプリケーションログの例を示しています。​2019-06-06 10:39:45,098​ の次のメッセージで示されているように 5 分間プロセスが停止しています。

WARN 2019-06-06 10:34:45,096 [[MuleRuntime].io.27: [veevavault-connector-demo].get-documents-operationFlow.BLOCKING @2dd2ffaf] [event: 99716950-8818-11e9-90e2-d61515f42856] org.mule.extension.veevavault.internal.service.HttpRequestService: Burst API Limit remaining calls [1997] has exceeded/reached an API Limit Profile threshold set as [1997]. As per API Limit Profile, Veeva Vault Connector will wait for [5] MINUTES.

WARN 2019-06-06 10:39:45,098 [[MuleRuntime].io.27: [veevavault-connector-demo].get-documents-operationFlow.BLOCKING @2dd2ffaf] [event: 99716950-8818-11e9-90e2-d61515f42856] org.mule.extension.veevavault.internal.operations.VeevaVaultOperations: Properties or Fields is not available for api [/api/v18.2/metadata/objects/documents/types/site_management__c] , will use input list [[name__v, type__v, subtype__v, classification__v, lifecycle__v, status__v, study__v, product__v, id]] if configured to build VQL query

INFO 2019-06-06 10:39:45,098 [[MuleRuntime].io.27: [veevavault-connector-demo].get-documents-operationFlow.BLOCKING @2dd2ffaf] [event: 99716950-8818-11e9-90e2-d61515f42856] org.mule.extension.veevavault.internal.pagination.GetDocumentsPagingProvider: Query Build :: SELECT name__v, type__v, subtype__v, classification__v, lifecycle__v, status__v, study__v, product__v, id FROM documents WHERE name__v= 'F22611234--6764'

INFO 2019-06-06 10:39:46,024 [[MuleRuntime].io.27: [veevavault-connector-demo].get-documents-operationFlow.BLOCKING @2dd2ffaf] [event: 99716950-8818-11e9-90e2-d61515f42856] org.mule.extension.veevavault.internal.service.HttpRequestService: Response received for sync http request :: 'https://[vault-domain]/api/v18.2/query?q=SELECT+name__v%2C+type__v%2C+subtype__v%2C+classification__v%2C+lifecycle__v%2C+status__v%2C+study__v%2C+product__v%2C+id+FROM+documents+WHERE+name__v%3D+%27F22611234--6764%27++LIMIT+1000+OFFSET+0' in 925 milliseconds.

API Limit Threshold (API 制限しきい値)

[Burst API Limit Profile (バースト API 制限プロファイル)]​ の Veeva Vault API 制限しきい値。指定された制限に達するか超えた場合、コネクタは指定された時間待機します。デフォルトは ​200​ です。

Wait Time (待機時間)

[API Limit Threshold (API 制限しきい値)]​ に達するか超えた場合にコネクタが待機する時間。デフォルトは ​5​ です。

Time Unit (時間単位)

待機時間の時間単位。デフォルトは ​MINUTES​ です。

Daily API Limit Profile (1 日の API 制限プロファイル)

Veeva Vault API の 1 日の API 制限が、設定されたしきい値に達するか超えた場合に使用される [Daily API limit exceed profile (1 日の API 制限超過プロファイル)] 設定。1 日の制限とは、任意の 24 時間枠内の総 API コール数です。

次の例は、​2019-06-06 10:47:31,698​ の警告メッセージと ​2019-06-06 10:47:31,699​ のエラーメッセージが含まれているアプリケーションログを示しています。

WARN 2019-06-06 10:47:31,698 [[MuleRuntime].io.44: [veevavault-connector-demo].get-documents-operationFlow.BLOCKING @108e7f43] [event: 624cfa50-881a-11e9-90e2-d61515f42856] org.mule.extension.veevavault.internal.service.HttpRequestService: Veeva Daily API Limit remaining calls [10000] has exceeded/reached an Daily API Limit Profile threshold set as [10000]. As per API Limit Profile, Veeva Vault Connector will throw an exception.

ERROR 2019-06-06 10:47:31,699 [[MuleRuntime].io.44: [veevavault-connector-demo].get-documents-operationFlow.BLOCKING @108e7f43] [event: 624cfa50-881a-11e9-90e2-d61515f42856] org.mule.extension.veevavault.internal.service.HttpRequestService: Exception caught while processing Sync request ::: https://xxxxx-xxxxx.veevavault.com/api/v20.1/metadata/vobjects/site__v, Exception ::: \{"responseStatus":"FAILURE","errors":[\{"type":"API_LIMIT_EXCEED","message":"The Veeva Vault Connector has reached/exceeded daily API limit remaining calls [10000]. The configured daily api limit threshold is \(10000\)"}\]}

ERROR 2019-06-06 10:47:31,767 [[MuleRuntime].io.44: [veevavault-connector-demo].get-documents-operationFlow.BLOCKING @108e7f43] [event: 624cfa50-881a-11e9-90e2-d61515f42856] org.mule.runtime.core.internal.exception.OnErrorPropagateHandler:

**********************************************************************************

Message : An error occurred from the Veeva Vault API.
Error Code: API_LIMIT_EXCEED.
Original Error Message: The Veeva Vault Connector has reached/exceeded daily API limit remaining calls [10000]. The configured daily api limit threshold is (10000).
Error type : VEEVAVAULT:API_LIMIT_EXCEED

**********************************************************************************

API Limit Threshold (API 制限しきい値)

[Daily API Limit Profile (1 日の API 制限プロファイル)]​ の Veeva Vault API 制限しきい値。指定された制限に達するか超えた場合、コネクタは指定された時間待機します。デフォルトは ​10000​ です。

次の画像は、​[Advanced (詳細)]​ タブでの基本認証の設定例を示しています。

「Advanced (詳細)」 タブで入力される基本認証の認証項目

OAuth 2.0/Open ID Connection Provider (OAuth 2.0/Open ID 接続プロバイダー)

OAuth 2.0 を使用して、ユーザーアカウントをホストするサービスにユーザー認証を委任します。詳細は、​「コネクタの OAuth 2.0 の設定」​または​「CloudHub でのコネクタの OAuth 2.0 の設定」​を参照してください。

Veeva Vault では、いくつかの OAuth プロバイダー (Azure AD、Ping Federate、および OIDC (OpenID Connect) をサポートするその他のプロバイダーなど) がサポートされています。

現在、Okta や、PKCE を必要とするその他のプロバイダーはサポートされていません。

Veeva Vault Connector の OAuth プロバイダーを設定します。次の手順は、OAuth プロバイダーと通信するための Veeva サービスの設定方法を示しています。

  1. [Veeva Vault Admin (Veeva Vault 管理)] パネルで、​[Settings (設定)]​ タブに移動します。

  2. [Domain Settings (ドメイン設定)]​ で、​[OAuth 2.0 / OpenID Connect Profiles (OAuth 2.0 / OpenID Connect プロファイル)]​ を選択します。

  3. [作成]​ をクリックします。

  4. プロファイルを設定します。​[Label (表示ラベル)]​ および ​[Name (名前)]​ の値を入力して ​[Status (状況)]​ を ​[Active (アクティブ)]​ に設定し、​[Authorization Server Provider (認証サーバープロバイダー)]​ に使用しているプロバイダーを設定するか、プロバイダーがリストにない場合は ​[Other (その他)]​ を選択します。また、​[Perform strict Audience Restriction validation (静的オーディエンス制限検証を実行)]​ チェックボックスをオンにすることもできます。

  5. [AS Metadata (AS メタデータ)]​ の情報を入力します。すべての OpenID Connect プロバイダーの URL には、このメタデータが含まれていて、​/.well-known/openid-configuration​ で終了します。次に例を示します。

    • Okta: https://{OKTA_INSTANCE}.okta.com/.well-known/openid-configuration

    • Azure: https://login.microsoftonline.com/{TENANT}/v2.0/.well-known/openid-configuration

    • PingFederate: https://{YOUR_INSTANCE}/.well-known/openid-configuration

      このメタデータを使用して ​[AS Metadata (AS メタデータ)]​ を設定するには、​[Upload AS Metadata (AS メタデータとしてアップロード)]​ ボタンをクリックして ​[Provide Authorization Server Metadata URL (認証サーバーメタデータ URL を指定)]​ オプションを選択します。これにより、上記の URL を ​[AS Metadata (AS メタデータ)]​ に貼り付けることができます。

      上記の手順で入力された項目が表示されている [OAuth 2.0 / OpenID Connect Profile configuration (OAuth 2.0/OpenID Connect プロファイル設定)] ウィンドウ
  6. [Save (保存)]​ をクリックします。これで、作成されたプロファイルを表示できます。

    プロファイルを作成した後の新しいウィンドウの [Vault Session ID URL (Vault セッション ID URL)] および [AS Metadata URL (AS メタデータ URL)] 項目

    後でコネクタを設定するときに使用するために ​[Vault Session ID URL (Vault セッション ID URL)]​ をメモします。OpenID で Veeva を完全に設定するには、この新しいプロファイルを使用するユーザーをプロビジョニングする必要があります。詳細は、 『Provision Users to Use SSO (SSO を使用するユーザーのプロビジョニング)』​を参照してください。

これで、OAuth 2.0 で Veeva Vault Connector を設定できます。

[Global Element Properties (グローバル要素のプロパティ)]​ 画面の ​[General (一般)]​ タブで次の情報を入力し、OAuth 2.0/Open ID 接続を設定します。

項目 説明

名前

設定名

Vault URL

接続に必要な Veeva Vault インスタンスの URL。

Version (バージョン)

必要な Veeva Vault インスタンスのバージョン。

Client Id (クライアント ID)

各リクエストヘッダーと共に Vault インスタンスに送信する必要があるクライアント ID。

OIDC Profile Id (OIDC プロファイル ID)

新しい OIDC プロファイルの作成時に Veeva によって生成される OIDC プロファイル ID。OIDC プロファイル ID を設定するには、Veeva の OIDC プロファイルで ID を使用します。OIDC プロファイルには、​Vault セッション ID URL​ (例: https://login.veevavault.com/auth/oauth/session/_00000000-aaaa-bbbb-cccc-111111111111​。​_00000000-aaaa-bbbb-cccc-111111111111​ は OIDC プロファイル ID) が含まれています。​[OIDC Profile ID (OIDC プロファイル ID)]​ 項目では、この値を使用します。

Consumer Key (コンシューマーキー)

サービスプロバイダーに登録されている OAuth コンシューマーキー。利用している ID プロバイダー (例: PoneOne、PingFederate) でクライアントアプリケーションをすでに登録してある場合の IdP クライアント ID です。

Consumer Secret (コンシューマーシークレット)

サービスプロバイダーに登録されている OAuth コンシューマーシークレット。利用している ID プロバイダー (例: PoneOne、PingFederate) でクライアントアプリケーションをすでに登録してある場合の IdP クライアントシークレットです。

Authorization Url (認証 URL)

OAuth 2.0 認証 URL (例: PingFederate の場合は ​https://{your-instance}/as/authorization.oauth2​)。

Access Token Url (アクセストークン URL)

OAuth 2.0 トークン URL (例: https://{your-instance}/as/token.oauth2​)。

Scopes (スコープ)

必要に応じて OAuth 2.0 スコープをセットアップできますが、重要なスコープである ​openid​ と ​offline_access​ は事前に設定されています。

Resource Owner Id (リソースオーナー ID)

IdP 設定によっては、空白のままにしておくこともできます。

Listener Config (リスナー設定)

新しい HTTP リスナーを作成するか、すでに作成してある場合は既存の HTTP リスナーを使用します (例: http://localhost:8081/​)。

Callback Path (コールバックパス)

アプリケーションのコールバックパス。​callback​ に設定すると、フルコールバックパスは ​http://localhost:8081/callback​ になります。忘れずに IdP のリダイレクト URL にコールバックパスを追加してください。

Authorize Path (認証パス)

認証パス。OAuth 2.0 ダンスの開始時には、このパスにリダイレクトされます。たとえば、​authorize​ はフルパスが ​http://localhost:8081/authorize​ であることを意味します。

External Callback Url (外部コールバック URL)

直接 ​http://localhost:8081/callback​ に設定できます。

Veeva Vault Connector の OAuth 2.0 設定の XML を次に示します。

<configuration-properties file="application.properties" />

<http:listener-config name="HTTP_Listener_config" >
    <http:listener-connection host="localhost" port="${http.port}" >
    </http:listener-connection>
</http:listener-config>

<veevavault:config name="Veeva_Vault_Config">
    <veevavault:oauth2-oidc-connection vaultURL="https://${veeva.instance}.veevavault.com" clientId="${veeva.client.id}" oidcProfileId="${veeva.oidc.profile}">
        <veevavault:oauth-authorization-code consumerKey="${azure.client.id}" consumerSecret="${azure.client.secret}" authorizationUrl="https://login.microsoftonline.com/${azure.tenant}/oauth2/v2.0/authorize" accessTokenUrl="https://login.microsoftonline.com/${azure.tenant}/oauth2/v2.0/token" scopes="${azure.appid}/.default"/>
        <veevavault:oauth-callback-config listenerConfig="HTTP_Listener_config" callbackPath="callback" authorizePath="authorize" externalCallbackUrl="${oauth2.callback_uri}"/>
    </veevavault:oauth2-oidc-connection>
</veevavault:config>

上記の例では、Salesforce 認証プロバイダーを使用しており、次の形式でリソースフォルダーに ​application.properties​ ファイルを作成する必要があります。

http.port = 8080
oauth2.callback_uri = http://localhost:8080/callback

veeva.instance = your-veeva-instance
veeva.client.id = your-veeva-client-id
veeva.oidc.profile = your-oidc-id

azure.tenant = azure-tenant-id
azure.appid = azure-app-id
azure.client.id = azure-oauth-client-id
azure.client.secret = azure-oauth-client-secret
Azure AD は、​{app_id}/.default​ としてスコープを設定する必要がある特殊なケースです。他の OAuth プロバイダーでは、他のスコープが必要でなければ、定義済みの ​openid offline_access​ スコープを使用できます。

アプリケーションログの表示

問題を確認するため、アプリケーションログを次の方法で表示できます。

  • アプリケーションを Anypoint Platform から実行している場合、アプリケーションログ出力は Anypoint Studio のコンソールウィンドウに表示されます。

  • コマンドラインから Mule を使用してアプリケーションを実行している場合、アプリケーションログ出力はオペレーティングシステムのコンソールに表示されます。

アプリケーションのログファイル (​log4j2.xml​) でログファイルパスがカスタマイズされていない場合、デフォルトの場所 ​MULE_HOME/logs/<app-name>.log​ でアプリケーションログにアクセスすることもできます。ログパスは、アプリケーションログファイル ​log4j2.xml​ で設定できます。

次のステップ

「追加設定情報」​で、詳細な設定手順を参照してください。