Flex Gateway新着情報
Governance新着情報
Monitoring API Manager現在のオブジェクト種別を別の対象オブジェクト種別にリンクして、クエリ結果を向上させることができます。リンクにより、異なるオブジェクトを説明する 2 つの関連する種別の項目を結合して、この 2 つの種別をつなぎ合わせることができます。
現在の種別のコラボレーションが有効になっていなくても、現在のオブジェクト種別を対象オブジェクト種別にリンクできますが、対象のコラボレーションが有効になっている必要があります。コラボレーションのしくみについての詳細は、「Anypoint DataGraph でのオブジェクト種別コラボレーションの有効化」を参照してください。
2 つの API スキーマがあり、1 つに Order オブジェクト種別、もう 1 つに Customer オブジェクト種別があるとします。
| 注文スキーマ | 顧客スキーマ |
|---|---|
|
|
現在、統合スキーマは次のようになっています。
ordersByOrderId (orderId:String!):Order
customersByCustomerId (customerId:String!): Customer
--------------------
--------------------
Order
--------------------
orderId: String!
Items: Item[]
customerId: String!
--------------------
--------------------
Customer
--------------------
customerId: String!
name: String!
現在のこの設定で、注文データセットと顧客データセットを同時に照会するには、両方の種別を別々に照会する必要があります。
ordersByOrderId (orderId: “123”) {
orderId
customerId
}
customersByCustomerId (customerId: “CC83”) {
customerId
name
}
また、注文の顧客データを照会するには、その注文に関連付けられている顧客 ID が必要です。
ただし、Order オブジェクト種別には customerId を返す項目があります。customerId: String! を外部キーとして、Order オブジェクト種別を Customer オブジェクト種別にリンクすれば、Customer を対象種別として参照できます。このリンクによって選択した外部キーが Customer 種別の主キー customerId:String! にマッピングされます。
その結果、次のようになります。
Order オブジェクト種別に Customer という新しい項目が作成され、リンクされた Customer オブジェクト種別を返します。
API スキーマで生成された新しいオブジェクト種別が Customer API スキーマの種別への参照として機能するため、Customer API スキーマに行った変更が Order API スキーマに影響することがありません。
ordersByOrderId (orderId:String!):Order
--------------------
--------------------
Order
--------------------
orderId: String!
Items: Item[]
customer: Customer
--------------------
--------------------
Customer
--------------------
--------------------
customerId: String!
更新された統合スキーマで、Order 種別が Customer 種別にリンクされていることがわかります。
ordersByOrderId (orderId:String!):Order
--------------------
--------------------
Order
--------------------
orderId: String!
Items: Item[]
customer: Customer
--------------------
--------------------
Customer
--------------------
--------------------
customerId: String
name: String
リンク後は、統合スキーマの消費者が、関連付けられている customerId を知らなくても、Order データセットと関連する Customer データセットを同時に照会できます。
ordersByOrderId (orderId: “123”) {
orderId
customer {
name
}
}
種別のデフォルトのクエリメソッドに複合キーを使用することもできます。
デフォルトのクエリメソッドに customerId と customerStatus の複合キーを使用する Customer 対象種別について考えてみます。
customerDetail (id: string!, status: string!): Customer
--------------------
--------------------
Customer
--------------------
customerDetail: string!, string!
customerId: String!
customerStatus: String!
Order スキーマは上記と同じであるものとします。
ordersByOrderId (orderId:String!):Order
--------------------
--------------------
Order
--------------------
orderId: String!
Items: Item[]
customerId: String!
Customer 種別を Order 種別の対象としてリンクすると、統合スキーマにリンクが次のように示されます。
ordersByOrderId (orderId:String!):Order
--------------------
--------------------
Order
--------------------
orderId: String!
Items: Item[]
customerId: Customer
customerStatus: Customer
--------------------
--------------------
Customer
--------------------
--------------------
customerDetail: String!, String!
customerId: String!
customerStatus: String!