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!