コンテキスト・エンティティをイベントにマッピング

CEP エンジンは、着信イベントを処理し、発信イベントを生成することによって機能します。これらの概念は、NGSI データモデルのコンテキスト・エンティティの更新に非常に簡単にマッピングできます。

CEP エンジンが NGSI 10 /updateContext リクエストを使用してコンテキスト・エンティティへのアップデートに対処すると、対応するイベントを起動して関連する EPL ステートメントを処理します。

1つまたは複数の発信イベントがCEPエンジンによって起動された場合、対応する /updateContext リクエストが呼び出され、コンテキスト・ブローカに、マップされたコンテキスト・エンティティへの更新を通知します。

制限事項

Esper CEP エンジンは、コンテキスト・エンティティにいくつかの制限を課します。

タイプは必須

すべてのイベントには、タイプ付き属性の厳密なセットを定義する特定の一意のタイプ(イベント・タイプ)が必要です。イベントタイプは、CEPエンジンでイベントを処理する前に宣言する必要があります。

この強力な要件に基づいて、fiware-cepheus の実装では、コンテキスト・プロバイダがすべてのコンテキスト・エンティティに必須の type フィールドを提供するように更新する必要があります。このタイプの情報が不足しているコンテキスト要素の更新は破棄されます。

Id は予約済みの属性キー

別の結果として、id フィールドは CEP エンジンによってイベントの別の属性として扱われます。したがって、コンテキスト属性には id という名前は指定できません。

単純な属性タイプ

現在のバージョンの CEP エンジンでは、string, int, long, float, double, boolean のような単純な属性タイプしか扱えず、CEP エンジンが強くタイプ付けされているため、オブジェクトや配列などの複雑なタイプのステートメントは実行できません。

属性メタデータへのアクセス

属性のメタデータは、属性のキーとアンダースコア文字で区切られたメタデータのキーを結ぶことにより、CEPルールからのアクセスを可能にします : Attribute Key _ Metadata key

例 : temperature_unitは、temperature 属性の unit メタデータにアクセスできます

注 : 属性の同じタイプ制限(前のセクション)がメタデータ・タイプに適用されます。

より視覚的なマッピング

イベントのストリームを SQL データベーステーブルとして視覚化することは可能です。それぞれのタイプについて id と各属性の列を持つ表を定義します。各イベントは単一の行で表されます。

たとえば、次のコンテキスト・エンティティ :

  {
    "id": "SENSOR1",
    "type":"RoomSensors",
    "attributes": [
      { "name": "temperature", "type": "float", "value": "21",
        "metadatas": [
          { "name": "unit", "type": "string", "value": "celsius" }
        ]
      },
      { "name": "pressure", "type": "integer", "value": "560",
        "metadatas": [
          { "name": "unit", "type": "string", "value": "PSI" }
        ]
      }
    ]
  },
  {
    "id": "SENSOR2",
    "type":"RoomSensors",
    "attribtues": [
      { "name": "temperature", "type": "float", "value": "30",
        "metadatas": [
          { "name": "unit", "type": "string", "value": "celsius" }
        ]
      },
      { "name": "pressure", "type": "integer", "value": "1342",
        "metadatas": [
          { "name": "unit", "type": "string", "value": "PSI" }
        ]
      }
    ]
  }

"RoomSensors" という名前のこのテーブルまたはイベントストリームとして見ることができます。

IDtemperaturetemperature_unitpressurepressure_unit
SENSOR121celsius560PSI
SENSOR230celsius1342PSI
...............