コンテキスト情報の管理

このセクションでは、Orion Context Brokerを実行するために必要なステップといくつかの操作例について詳しく説明します。 Orion Context Brokerの詳細については、コンテキスト・アウェア型アプリケーションの開発セクションまたはオフィシャル・マニュアルを参照してください。

Orionインスタンスを実行するには、次のコマンドを実行します。

 docker-compose up orion

または、Tour Guide Applicationのコマンドラインインターフェイス(CLI)を使用して:

./tour-guide start orion

レストラン、レビュー、予約に関する情報は既に読み込まれています。

Context Brokerへのリクエストを実行するには、そのホスト名を知る必要があります。 ./tour-guide configure hostsを実行して、Tour Guide Applicationに用意されているCLIを使用して、システムのhostsファイルを変更できます。configure hostsコマンドを実行した後、IPアドレスの代わりにorionを使用してContext Brokerへのリクエストを実行できます。

次のHTTPリクエストを発行することで、Orionが実行されており、hostsファイルが正しく設定されていることを確認できます:

GET orion:1026/version

そして、次のようなJSONのレスポンスが返ってきます:

{
    "orion" : {
        "version" : "1.3.0",
        "uptime" : "0 d, 0 h, 2 m, 42 s",
        "git_hash" : "cb6813f044607bc01895296223a27e4466ab0913",
        "compile_time" : "Fri Sep 2 08:36:02 UTC 2016",
        "compiled_by" : "root",
        "compiled_in" : "ba19f7d3be65"
    }
}

新しいレストランを作成する場合は、ペイロード・ボディでレストラン情報をリクエストし、HTTPヘッダーでFiware-ServicePathを使用してフランチャイズを指定することができます。

たとえば、Franchise1に属するレストランを作成するには、次のHTTPリクエストを実行します:

POST orion:1026/v2/entities/

Headers:

{
    'Content-Type':        'application/json',
    'Fiware-Service':      'tourguide'
    'Fiware-ServicePath':  '/Franchise1'

}

{
    "id": "sample-id",
    "type": "Restaurant",
    "address": {
        "type": "PostalAddress",
        "value": {
            "streetAddress": "Cuesta de las Cabras Aldapa 2",
            "addressRegion": "Araba",
            "addressLocality": "Alegr鱈a-Dulantzi",
            "postalCode": "01240"
        }
    },
    "aggregateRating": {
        "type": "AggregateRating",
        "value": {
            "ratingValue": 3,
            "reviewCount": 98
        }
    },
    "capacity": {
        "type": "PropertyValue",
        "value": 100      
    },
    "department": {
        "type": "Text",
        "value": "Franchise1"            
    },
    "description": {
        "type": "Text",
        "value": "Sample description"            
    },
    "location": {
        "type": "geo:point",
        "value": "42.8404625, -2.5123277"
    },
    "name": {
        "type": "Text",
        "value": "Sample-restaurant"
    },
    "occupancyLevels": {
        "type": "PropertyValue",
        "value": 0,
        "metadata": {
            "timestamp": {
                "type": "DateTime",
                "value": "2016-09-19T06:32:15.901Z"
            }
        }
    },
    "priceRange": {
        "type": "Number",
        "value": 0
    },
    "telephone": {
        "type": "Text",
        "value": "945 400 868"
    }
}

その後、そのidを使用して作成したばかりのレストラン・データを取得できます。 keyValuesオプションは、属性名と値だけを含む、よりコンパクトで簡単な表現を得るために使用されます:

GET orion:1026/v2/entities/sample-id?options=keyValues


Headers:


{
    'Content-Type':        'application/json',
    'Fiware-Service':      'tourguide',
    'Fiware-ServicePath':  '/Franchise1'
}

次のようなものが表示されます:

{
    "id": "sample-id",
    "type": "Restaurant",
    "address": {
        "streetAddress": "Cuesta de las Cabras Aldapa 2",
        "addressRegion": "Araba",
        "addressLocality": "Alegria-Dulantzi",
        "postalCode": "01240"
    },
    "aggregateRating": {
        "ratingValue": 3,
        "reviewCount": 98
    },
    "capacity": 100,
    "department": "Franchise1",
    "description": "Sample description",
    "location": "42.8404625, -2.5123277",
    "name": "Sample-restaurant",
    "occupancyLevels": 0,
    "priceRange": 0,
    "telephone": "945 400 868"
}

レストランを改装して、キャパシティや説明の値の変更等、データを更新する必要がある場合、次のHTTPリクエストを使用できます:

PATCH  orion:1026/v2/entities/sample-id/attrs?options=keyValues


Headers

{
  'Content-Type':        'application/json',
  'Fiware-Service':      'tourguide'
  'Fiware-ServicePath':  '/Franchise1'
}


{
    "description" : "New sample description",
    "capacity": 150
}

次のようにアトリビュートを取得することで、値を更新したことを確認できます:

GET orion:1026/v2/entities/sample-id/attrs?attrs=description,capacity&options=keyValues

Headers

{
    'Content-Type':        'application/json',
    'Fiware-Service':      'tourguide',
    'Fiware-ServicePath':  '/Franchise1'
}

次のようなものが表示されます:

{
    "description": "New sample description",
    "capacity": 150
}