Anypoint DataGraph クイックスタートガイド

このクイックスタートガイドを参考に、Anypoint DataGraph の使用を開始します。Anypoint DataGraph を使用すると、1 回の要求で複数の API を照会して、必要とする特定の情報を取得できます。

このクイックスタートガイドには次の手順が記載されています。

  1. 2 つの API をダウンロードしてパブリッシュする

  2. この 2 つの API を Anypoint DataGraph に追加する

  3. 各種の API スキーマ編集ツール (リンク、マージなど) を使用して、統合スキーマをはじめとするスキーマを編集する

  4. 統合スキーマにデータを送信するための変異を作成する

  5. 統合スキーマを照会して、送信した特定のデータを取得する

始める前に

始める前に、次の準備が整っていることを確認します。

  • Anypoint Platform と Exchange に精通している (ビジネスグループで Exchange を使用して RAML 仕様や OAS 仕様をパブリッシュして表示する権限など)。

  • Anypoint Platform アカウントがある。

  • 「管理」または「寄稿」権限がある。

  • Anypoint DataGraph を使用するビジネスグループまたは組織に、プランに指定されている適切な数の vCore が割り当てられている。API を追加しようとしている環境に適切な数の vCore が割り当てられていない場合、Anypoint DataGraph からエラーメッセージが表示されます。

Anypoint Virtual Private Cloud (Anypoint VPC) を使用している場合、DataGraph でクエリを実行するにはブラウザで Anypoint VPC にアクセスする必要があります。アクセスできないと、​failed to fetch​ スキーマエラーを受信する場合もあります。これを防止するには、​専用ロードバランサ (DLB) をセットアップ​します。ネットワークとホスティングオプションについては、​「DataGraph のホスティングオプションとネットワーキング」​で説明しています。

Order API と Product API をダウンロードしてパブリッシュする

このクイックスタートの例を実践してみる場合は、MuleSoft が提供する 2 つのサンプル API ( Order Systems API v2.0​ と Product API v2.0​) の RAML 定義をダウンロードしてください。

  1. Anypoint Platform にログインします。

  2. Exchange で、​[Provided by MuleSoft (MuleSoft による提供)]​ をクリックします。

  3. 「product api raml definition」​(Product API RAML 定義) を検索して、結果リストから選択します。

  4. [Product API] | [RAML Definition (RAML 定義)]​ で、アセットバージョン 2.0.2 の ​[Download (ダウンロード)]​ > ​[RAML]​ をクリックします。

  5. 各自のビジネスグループ ID とアセット名を使用して、​RAML 仕様を Exchange にパブリッシュします​。

    このクイックスタートの例では、​Catalyst Product API​ と ​Catalyst Order API​ という API プロジェクト名を使用します。

  6. Order Systems API についても、アセットバージョン 2.0.3 の ​[Order Systems API] | [RAML Definition (RAML 定義)]​ で同じ手順を繰り返します。

Catalyst Product API を Anypoint DataGraph に追加する

サンプル API を Exchange にパブリッシュしたら、Catalyst Product API を Anypoint DataGraph に追加します。

  1. [Anypoint Platform] > [Anypoint DataGraph] で ​[Unified Data Graph (統合データグラフ)]​ ドロップダウンリストから適切な環境を選択し、​[+Add API (+API を追加)]​ をクリックします。

  2. [Add API (API の追加)]​ ページで、[Catalyst Product API] を選択します。

  3. [Next: Configure URL (次へ: URL を設定)]​ をクリックします。

  4. [Configure URL (URL の設定)]​ ページで、API バージョンとアセットバージョンを選択し、​[Confirm Selection (選択内容を確認)]​ をクリックします。

  5. [Add a new URL (新しい URL を追加)]​ を選択します。

  6. [Add URL (URI を追加)]​ 項目で、次の API URL を追加します。 ​https://anypoint.mulesoft.com/mocking/api/v1/sources/exchange/assets/68ef9520-24e9-4cf2-b2f5-620025690913/catalyst-retail-product-api/2.0.2/m/

    API バージョンとアセットバージョンを追加し、Catalyst Product API の URL を追加

    API を API Manager で管理している場合や、URL を Exchange に手動で追加した場合は、Anypoint DataGraph によって URL が取得されます。また、新しい URL が API 仕様に含まれている場合は手動で追加できます。

  7. [Save (保存)]​ をクリックします。

  8. [Next: Configure Security (次へ: セキュリティを設定)]​ をクリックします。

  9. API の GET エンドポイントの認証を指定します (このクイックスタートの例では ​[No Auth (認証なし)]​)。

    API 認証を 「No Auth (認証なし)」 に設定

    Anypoint DataGraph ではこれらのログイン情報を使用して、この API に要求を実行します。

  10. バージョンと認証の詳細を設定したら、​[Next: Preview Schema (次へ: スキーマのプレビュー)]​ をクリックします。

    API スキーマのプレビューモードの Anypoint DataGraph

    この時点で、追加している API の仕様が対応する API スキーマに自動的に変換されます。次のステップに進む前に、生成されたスキーマの詳細を確認しておくことをお勧めします。

    たとえば、種別をクリックスルーしてスキーマ階層を理解したり、特定の要素 (この場合は ​price​) を検索したりすることが考えられます。

    API スキーマのプレビューモードで price 要素を検索
  11. スキーマのプレビューが完了したら、​[Next: Edit Schema (次へ: スキーマを編集)]​ をクリックします。

Catalyst Product API スキーマでのオブジェクト種別のコラボレーションの有効化

API スキーマを統合スキーマに追加する前に、編集機能 (コラボレーションの有効化、名前変更、非表示/再表示、オブジェクト種別のリンクやマージ) を実行する必要はありません。統合スキーマに追加した後でも API スキーマを変更できます。ただし、API スキーマを統合スキーマに追加する前に、Anypoint DataGraph で生じた競合をすべて解決しておく必要があります。

API を統合スキーマに追加するときに、オブジェクト種別、クエリメソッド、項目を設定して、有用なクエリ結果が生成されるようにします。具体的には、上記のエンティティを非表示/再表示したり、名前を変更したり、リンクやマージを行ったりします。

ここで、つながりのある統合スキーマにするための極めて重要なステップは、オブジェクト種別のコラボレーションを有効にすることです。

種別のコラボレーションを有効にすると、その種別の項目が統合スキーマまたはローカルの API スキーマの他の種別に生成されるため、種別間のリンクやマージを作成できるようになります。

ProductResponse オブジェクト種別のコラボレーションを有効にする手順は、次のとおりです。

  1. Catalyst Product API スキーマのナビゲーションで、​[ProductResponse]​ オブジェクト種別をクリックします。

  2. [Collaboration permissions (コラボレーション権限)]​ ペインで、​[Enable collaboration (コラボレーションを有効化)]​ をクリックします。

  3. デフォルトのクエリメソッドを設定するには、​productsByProductId (productId:String!): ProductResponse​ を選択します。

    デフォルトのクエリメソッドを products by product id に設定

    オブジェクト種別のデフォルトのクエリメソッドとは、コラボレーションを有効にするオブジェクト種別の 1 つのレコードを常に返すメソッドです。

  4. [Next (次へ)]​ をクリックします。

  5. 主キーとして、ドロップダウンリストから ​identifier (String!)​ を選択します。

    主キーを identifier string に設定

    主キーはオブジェクト種別に含まれる項目で、そのオブジェクト種別の 1 つのレコードを一意に識別します。DataGraph では​複合キー​を使用するオブジェクト種別もサポートしていますが、この例では主キーを 1 つのみ使用します。

  6. [Confirm (確認)]​ をクリックします。

  7. [Edit type name and field settings (種別名と項目設定を編集)]​ ペインで、すべての項目が表示されるようにします。

    API を追加したときに、ネストされている種別は統合スキーマですべて非表示になります。このため、各自のニーズに合わせてスキーマを柔軟に拡張し、統合スキーマに追加する種別だけを表示することができます。ネストされている種別を返すレベル 1 の種別の項目もすべて非表示になります。

  8. [Next: Add to unified schema (次へ: 統合スキーマに追加)]​ をクリックします。

    API スキーマを統合スキーマに追加中であることを示す状況インジケータ

    Anypoint DataGraph で統合スキーマを更新中も、スキーマ内を移動して実施した変更を表示できます。

  9. [Proceed to unified schema (統合スキーマに進む)]​ をクリックします。

Catalyst Order API の Anypoint DataGraph への追加

Product Order API を追加したときと同じ手順に従いますが、次の点が異なります。

  • https://anypoint.mulesoft.com/mocking/api/v1/sources/exchange/assets/68ef9520-24e9-4cf2-b2f5-620025690913/catalyst-retail-order-system-api/2.0.3/m/​ という URL を使用します。

  • また、先ほどコラボレーションを有効にしたオブジェクト種別の名前変更、リンク、マージを行ってスキーマを編集します。

Catalyst Order API スキーマでのオブジェクト種別の名前変更

API スキーマを統合スキーマに追加する前に、スキーマを編集して、統合スキーマを使用するユーザが直感的に操作できるように項目、種別、クエリメソッドの名前を変更することができます。

たとえば、Catalyst Order API には ​EnumType0​ というネストされた種別があります。

Catalyst Order API の Enum type 0 を選択

この列挙型の種別は追加時に名前がなかったため、Anypoint DataGraph で ​EnumType0​ という名前が生成されていました。この種別は有用な注文状況情報を示すため、​OrderStatus​ という適切な名前を付けます。

  1. [EnumType0]​ をクリックします。

  2. [Desired state (望ましい状態)]​ を ​[Visible (表示)]​ に切り替えます。

  3. [Type settings (種別設定)]​ ペインで、​[Rename Type (種別の名前変更)]​ をクリックします。

  4. 種別の名前を ​OrderStatus​ に変更して、​[Confirm (確認)]​ をクリックします。

種別リストに新しい種別が表示されます。

Catalyst Order API スキーマのオブジェクト種別のリンク

また、統合スキーマを編集して、新たに追加された API のオブジェクト種別を既存の関連する種別にリンクして、項目を結合することができます。こうした結合によってクエリ結果が向上します。

たとえば、Catalyst Product API を追加したことにより、現在この統合スキーマには ​ProductResponse​ オブジェクト種別から取得した商品説明情報が存在します。Catalyst Order API スキーマには、​OrderItemSummary​ オブジェクト種別に含まれる商品情報もあります。この 2 つのオブジェクト種別をリンクすれば、1 回のクエリで両方の結果を返すことができます。

  1. Catalyst Order API スキーマのナビゲーションで、​[OrderItemSummary]​ オブジェクト種別を選択します。

  2. OrderItemSummary オブジェクト種別とその項目が非表示になっている場合、​[Hidden/Visible (非表示/表示)]​ 切り替えを使用して、​[Desired state (望ましい状態)]​ 値を ​[Visible (表示)]​ に切り替えます。

    order item summary の表示の 「Desired state (望ましい状態)」 を 「Visible (表示)」 に設定
  3. [Link to another type (別の種別にリンク)]​ ペインまでスクロールして、​[Select the type you want to link to (Target) (リンク先 (対象) の種別を選択)]​ で、​[ProductResponse]​ を選択します。

  4. 外部キー項目で、​productId (String!)​ を設定します。

    リンク設定の外部キー項目で product ID string に設定

    外部キー項目によって返される値と、そのキーで識別される ProductResponse のレコードは、対象の ProductResponse オブジェクト種別の主キーとまったく同じになります。

  5. 外部キー項目の名前を ​productresponse​ から ​product​ に変更します。

    新たに追加した項目 (product) がリンク先の種別を返すため、統合スキーマで外部キー項目を非表示にすることもできます。この例では、​[Visible (表示)]​ に変更することにします。

  6. 新しいリンク設定を確認して、​[Save changes (変更を保存)]​ をクリックします。

    これで OrderItemSummary 種別が ProductResponse! 種別にリンクされました。

    リンク済みアイコンを示す OrderItemSummary 種別の product 項目

Catalyst Order API の追加を​もう少し​で完成させることができます。その前に、統合スキーマに追加する前に API スキーマを編集するもう 1 つの方法を確認しておきます。

Catalyst Order API スキーマのオブジェクト種別のマージ

API スキーマのオブジェクト種別を、統合スキーマの別のオブジェクト種別、または同じ API スキーマの別のオブジェクト種別とマージすることができます。後者を​ローカルマージ​といいます。種別をマージすると、類似の種別を結合してその項目やデータセットを拡張し、クエリ結果を向上させることができます。

Anypoint DataGraph には、次の 3 種類のマージがあります。

  • 拡張マージ​: 種別のマージによってデータが結合されます。

  • 参照マージ​: 対象種別のみから項目を取得できます。

  • 複合マージ​: 種別のマージによって種別が 1 つの種別にまとめられ、統合スキーマが整理されますが、主キーなしで結合されます。

この例では、OrderSummary オブジェクト種別を OrderResponse オブジェクト種別にマージするというローカルの複合マージを実行します。

  1. Catalyst Order API スキーマのナビゲーションで、​[OrderSummary]​ 種別を選択します。

  2. [Merge with another type (別の種別とマージ)]​ ペインで、マージ先の種別 (この場合は ​OrderResponseLocal​) を選択します。

    order summary 種別とマージする対象種別として order response を選択
  3. 差分ビューを使用してマージに 2 つの種別を横並びで比較し、必要に応じて、切り替えを使ってすべての項目を非表示にします。

  4. [Preview merge result (マージ結果のプレビュー)]​ をクリックします。

    order summary と order response のマージ結果のプレビュー

    結果に、OrderSummary オブジェクト種別と OrderResponse オブジェクト種別間でローカルマージが実行されたことが示されます。マージ後は、Catalyst Order API スキーマの OrderSummary オブジェクト種別の名前が OrderResponse に変更されているため、統合スキーマでは OrderResponse 種別を照会します。

  5. [Confirm merge (マージを確認)]​ をクリックします。

  6. [Apply Changes (変更を適用)]​ をクリックします。

Anypoint DataGraph で統合スキーマを更新中も、スキーマ内を移動して、加えた変更を表示できます。統合スキーマの状況が [Up to date (最新)] に変化したときに、クエリと変異を実行するためのアクセス権を要求します。

クエリと変異を実行するためのアクセス権を要求する

2 つの API スキーマを統合スキーマに追加したら、操作を実行するためのアクセス権を要求できます。

  1. [Run Operation (操作を実行)]​ をクリックします。

  2. アクセス方法を選択します。この例では、​[Create a new application and use it immediately (新しいアプリケーションを作成してすぐに使用する)]​ を選択します。

    操作を実行するためのアクセス権を要求するウィンドウで 「Create a new application (新しいアプリケーションの作成)」 を選択
  3. [Next (次へ)]​ をクリックします。

  4. [Create a new application (新しいアプリケーションの作成)]​ ウィンドウで、項目に値を入力し、​[Next (次へ)]​ をクリックします。

    アクセス権を要求するウィンドウの 「Create a new application (新しいアプリケーションの作成)」
  5. [Create & Request Access (アクセス権の作成と要求)]​ をクリックします。

統合スキーマを探索する

  1. 変異を作成する前に、統合スキーマがどのようなものか把握しておきます。​[Explore Schema (スキーマを調査)]​ をクリックします。

    クエリエディタに表示された schema explorer

    この画面で統合スキーマのドキュメントを確認できます。クエリの作成時のオートコンプリートでもこのドキュメントを参照できます。

    インラインのオートコンプリートを使用してクエリを作成

変異を作成する

変異は、データオブジェクトを追加、更新、および削除するために使用する操作です。GraphQL では、変異操作は REST API 仕様で定義した POST、PATCH、PUT、DELETE、および HTTP メソッドを表します。

  1. 次の変異の例を追加します。

    mutation {
      createOrdersCustomerByCustomerId(
        customerId: "1964401a-a8b3-40c1-b86e-d8b9f75b5842",
        input: {
          customerId: "1964401a-a8b3-40c1-b86e-d8b9f75b5842",
          subtotal: "100.21",
    	  taxPrice: "15.22",
    	  shippingPrice: "10.00",
    	  total: "125.43",
          orderItems: {
            shipmentItems: [{
              orderItemId: "fc3d4900-c5ac-4649-8bc8-cbbef4fe8fde"
              productId: "e1c515f9-102d-4830-b353-18fe48065732"
              productName: "Uniforms Modern Fit Short Sleeve Polo Shirt"
              location: {
                locationId: "1c9a20dc-c585-42fd-ac1a-1216085b76d2"
                deliveryMethod: SHIPMENT
                locationType: PARTNER
              }
              price: "50"
              quantity: 1
            }]
            pickupItems: [{
              orderItemId: "88668866-2c6d-4fa6-9e17-4b2c42e0f051",
              productId: "eb8c8ca7-3c42-4489-a820-3aa138430b75",
              productName: "Smart Slim Micro Stripe Shirt",
              location: {
                locationId: "1c9a20dc-c585-42fd-ac1a-1216085b76d2",
                deliveryMethod: PICKUP,
                locationType: STORE
              },
              price: "50",
              quantity: 1
            }],
          },
          shippingAddress: {
            address: "Street 123",
            city: "San Francisco",
            postalCode: "94210",
            state: "CA",
            country: "US"
          },
        }) {
        identifier
        message
      }
    }
  2. [Run (実行)]​ をクリックします。

DataGraph は、新しい注文を作成したことを示す結果を返します。

サンプル変異を実行すると新しい注文が作成されます

クエリを作成する

次に、作成した注文に関する特定の情報を取得するためのクエリを作成できます。この場合、​shipmentItems​ に関する詳細を取得できます。

  1. 準備ができたら、次のサンプルクエリを追加します。

    {
      ordersByOrderId(orderId: "51c0ba3a-7e64-11e7-bb31-be2e44b06b34") {
        shippingAddress {
          state
          city
          postalCode
        }
        total
        status
        orderItems {
          shipmentItems {
             product {
               model
               description
               brand
               price {
                 amount {
                   name
                   currencyValue
                 }
               }
             }
           }
         }
       }
     }

    この 1 つのクエリで、2 種類の API から結果を取得します。

    1 つのクエリで 2 種類の API を照会
1 Catalyst Order API から ​shippingAddress​、​total​、​status​ の情報が返されます。
2 product​ の詳細は、​shipmentItems​ 情報の一部として Catalyst Product API から返されます。

これが Anypoint DataGraph の基本的な用途です。つまり、1 回の要求で複数の API を照会し、必要とする情報のみを取得できます。

  1. クエリをトレースせずに実行する場合は、​[Run (実行)]​ をクリックします。

    クエリエディタに表示されたクエリ結果
  2. クエリを実行してトレースする場合は、アクションメニュー (​…​​) から ​[Trace Query (クエリをトレース)]​ を選択して、​[Run (実行)]​ をクリックします。

    クエリのトレースビューとクエリ結果

    Anypoint DataGraph のトレース結果には、次の情報が示されます。

    • Anypoint DataGraph でクエリの解析と検証に要した時間

    • クエリ全体の合計応答時間

    • クエリでの各ソース API への要求時間

  3. クエリに関連するログを表示するには、アクションメニュー (​…​​) から ​[View Response Logs (応答ログを表示)]​ をクリックします。

    クエリの応答ログページ

    Anypoint DataGraph のログレベルには、DEBUG、INFO、WARN、ERROR があります。

    Titanium サブスクリプションに登録している場合は、Anypoint Monitoring でこれと同じログを表示することや、高度な検索を使用して特定の日付、時刻、優先度のログを見つけることができます。

  4. [View History (履歴を表示)]​ をクリックすると、後からこの同じクエリ (または別のクエリ) にアクセスできます。

  5. クエリと、自動的に生成されたエンドポイントをコピーするには、アクションメニュー (​…​​) から ​[Copy & Share Endpoint (エンドポイントのコピーと共有)]​ をクリックします。

    [クリップボードにコピー] アイコンを使用して、クエリを cURL スニペットまたは GraphQL クエリとしてコピーします。また、クエリで使用する任意の認証値、リクエストヘッダー、変数などもコピーできます。