アクティビティログを使用します

スペースの設定

メモ

アカウントには、データ ハブアドオンサービスへのアクセス権が必要です。

アクティビティログのみを使用する場合 は、クイックスタートガイドを参照してください。

このコネクターを使用すると、ユーザーはスペースの変更を追跡できます。 この機能をアクティブ化すると、 ModifyFeaturesEvent によって挿入、更新、削除されたフィーチャーのすべての変更 が追跡され、別のスペースに保存されます。

アクティブ化するには、リスナーが追加され、 enableUUID が true に設定されたスペースを作成します。

{
  "title": "Test space to track changes.",
  "enableUUID": true,
  "listeners": {
    "activity-log": [{
      "params": {
        "states": 5,            //(Optional) Keeps a maximum of x states per object (x > 0).
        "storageMode": "DIFF_ONLY" | "FULL" | ("FEATURE_ONLY" or <none> -> default),
        "writeInvalidatedAt": false | true or <none> -> default //(Optional) Write and update the invalidateAt timestamp. If set to false, this can reduce space requests.
      }
    }]
  }
}

ストレージモードは、機能の保存方法を決定します。

  • 機能のみ: は、一部の履歴関連プロパティ ( 以下で定義 ) を持つフィーチャーを保存します。
  • 相違のみ: は、前のオブジェクトに対する RFC-6902 の相違を含むデータ ハブ activity-Log 名前空間の 'DIFF'.'ops' プロパティを持つフィーチャを保存します。 ヘッドの後のフィーチャーには、データ ハブ activity-log & データ ハブ名前空間プロパティのみが含まれます。
  • フル : は、データ ハブアクティビティログ名前空間の一部の履歴相対プロパティおよび 'DIFF'.'ops' プロパティを含む機能を保存します。このプロパティには、前のオブジェクトに対する RFC-6902 の相違が含まれています。

注意 : 現在のフィーチャーに相違を適用すると ' 前の ( 古い ) フィーチャーが返されます これは、新しいプロパティをフィーチャーに追加すると、現在の相違では、 'relmove' & 'pathToNewProperty' として表示されることを意味します。

重要: の変更内容を書き込むことは技術的に不可能なため DeleteFeaturesByTagEvent、このイベントタイプは禁止され、現在のスペースでのこのイベントのサポートは削除されます。

ModifySpaceEvent 内で、リスナーがすべての内容を準備し、変更をログに記録するようにスペースを変更します。 機能の書き込み先となる新しいスペースを作成し、変更内容を実際に書き込む新しいリスナーを登録して、 DeleteByTagEvents を禁止するプロセッサを追加します。
ModifyFeatureEvent.RESPONSE がリスナーでピックアップされるため、ログに記録される実際の機能は、新しく作成されたスペースに非同期で書き込まれます。 その結果、実際のリクエストのパフォーマンスは低下しません。

この機能を有効にした完全なスペース定義は、次のようになります。

{
  "id": "<yourSpaceId>",
  "title": "Test space to track changes.",
  "description": null,
  "enableUUID": true,
  "listeners": {
    "activity-log": [
      {
        "params": {
          "states": 5,
          "storageMode": "DIFF_ONLY",
          "writeInvalidatedAt": true
        },
        "eventTypes": [
          "ModifySpaceEvent.request"
        ]
      }
    ],
    "activity-log-writer": [
      {
        "params": {
          "spaceId": "<someNewlyCreatedSpaceId>",
          "states": 5,
          "storageMode": "DIFF_ONLY",
          "spaceType": "MAIN",
          "writeInvalidatedAt": true
        },
        "eventTypes": [
          "ModifyFeaturesEvent.response",
          "ModifySpaceEvent.request"
        ]
      }
    ]
  },
  "processors":{
    "activity-log-writer": [
      {
        "id": "activity-log-writer",
        "eventTypes": [
          "DeleteFeaturesByTagEvent.request"
        ]
      }
    ]
  }
}

記述された機能

新しいスペースに書き込まれたフィーチャーは、 uuid によって保存されます。 この機能を有効にしたスペース では、 enableUUID を true に設定する必要があります。

さらに、元のフィーチャーエレメントがわずかに修正されます。

  • フィーチャーの ID は 、元のスペースの変更されたフィーチャーの UUID になります。
  • '@ns:com:here:xyz' の元のプロパティ は '@ns:com:here:xyz:log'.original の下に保存されます
  • フィーチャーの元の ID は、 '@ns:com: here:xyz:log'.id に保存されます
  • この オブジェクトが head (最も新しい)履歴オブジェクトであった時間範囲を示すために、 '@ns:com: here:xyz:log'.invalidatedAt の下に新しいプロパティが追加されます。
  • diff の計算が有効な場合、 RFC-6902 ( JSON パッチ)との整合性のとれた配列が、 '@ns:com: here:xyz:log'.diff.ops の下に追加されます

    • 注意 : 現在のフィーチャーに相違を適用すると ' 前の ( 古い ) フィーチャーが返されます これは、新しいプロパティをフィーチャーに追加すると、現在の相違では、 'relmove' & 'pathToNewProperty' として表示されることを意味します。
  • 操作のアクション(保存 / 更新 / 削除)は、 '@ns:com:here:xyz:log' .action の下に保存されます

  • タグには、次のような追加のエントリが追加されます。
    • ユーザーが定義した追跡タグ( userid 、 changeId 、 streamID ) // 実行対象

スペースに新しいフィーチャーを追加した後、次のようになります。

元のスペースから {space}/features</1> を取得します。

{
  "type": "FeatureCollection",
  "features": [
    {
      "id": "1",
      "type": "Feature",
      "properties": {
        "version": 0,
        "@ns:com:here:xyz": {
          "uuid": "00000000000000000000000000001",
          "space": "mGGzwMoi",
          "createdAt": 1563451570741,
          "updatedAt": 1570799106542
        }
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          1,
          0
        ]
      }
    }
  ]
}

... は新しいスペースで次のように表示されます。

作成後の変更 :

  • プロパティ「 Sales 」が更新されました
  • プロパティ 'version' が更新され、新しいサブプロパティが追加されました
  • フィーチャー全体が削除されました。

ストレージモードによっては、機能に差分が含まれている場合と含まれていない場合があります ( この場合はいっぱいです ) 。

{
  "type": "FeatureCollection",
  "features": [
    {
      "id": "00000000000000000000000000002",
      "type": "Feature",
      "properties": {
        "version": 1,
        "@ns:com:here:xyz": {
          "tags": [],
          "space": "<someNewlyCreatedSpaceId>",
          "createdAt": 1570802212642,
          "updatedAt": 1570802223425
        },
        "@ns:com:here:xyz:log": {
          "id": "1",
          "diff": {
            "add": 0,
            "ops": [
              {
                "op": "replace",
                "path": "/properties/version",
                "value": 0
              }
            ],
            "copy": 0,
            "move": 0,
            "remove": 0,
            "replace": 1
          },
          "action": "UPDATE",
          "original": {
            "puuid": "00000000000000000000000000001",
            "space": "<yourSpaceId>",
            "createdAt": 1563451570741,
            "updatedAt": 1570802185382
          },
          "invalidatedAt": 1570802185392
        }
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          1,
          0
        ]
      }
    },
    {
      "id": "00000000000000000000000000003",
      "type": "Feature",
      "properties": {
        "version": 2,
        "newSubObject": {
          "foo":"bar"
        },
        "@ns:com:here:xyz": {
          "tags": [],
          "space": "<someNewlyCreatedSpaceId>",
          "createdAt": 1570802221177,
          "updatedAt": 1570802228766
        },
        "@ns:com:here:xyz:log": {
          "id": "1",
          "diff": {
            "add": 0,
            "ops": [
              {
                "op": "remove",
                "path": "/properties/newSubObject"
              },
              {
                "op": "replace",
                "path": "/properties/version",
                "value": 1
              }
            ],
            "copy": 0,
            "move": 0,
            "remove": 1,
            "replace": 1
          },
          "action": "UPDATE",
          "original": {
            "puuid": "00000000000000000000000000002",
            "space": "<yourSpaceId>",
            "createdAt": 1563451570741,
            "updatedAt": 1570802185392
          },
          "invalidatedAt": 1570802226452
        }
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          1,
          0
        ]
      }
    },
    {
      "id": "00000000000000-new-random-uuid",
      "type": "Feature",
      "properties": {
        "@ns:com:here:xyz": {
          "tags": [],
          "space": "<someNewlyCreatedSpaceId>",
          "createdAt": 1570802226548,
          "updatedAt": 1570802226548
        },
        "@ns:com:here:xyz:log": {
          "id": "1",
          "action": "DELETE",
          "original": {
            "updatedAt": 1570802226452
          },
          "invalidatedAt": 9223372036854776000
        }
      },
      "geometry": null
    }
  ]
}

メモ

diffs パッチ配列を同じオブジェクトに適用すると、前のオブジェクトになります。

」に一致する結果は 件です

    」に一致する結果はありません