8.2 位置追跡セット

位置追跡サーバーは、移動する一連のオブジェクトを既知の地域セットについて追跡し、必要に応じて通知を生成します。このフレームワークでは、オブジェクトと地域のセットは追跡セットと呼ばれます。

データベースでは、これらは次の2列で構成される表で管理されます。

region_id  NUMBER, 
geometry   SDO_GEOMETRY

REGION_IDはこの表の主キーで、GEOMETRYは追跡地域のジオメトリです。

追跡セットを作成すると、いくつかの追加構造が作成されます。追跡セットはいくつでも作成でき、各セットには数千の地域を指定できます。地域が追跡の対象でなくなった場合、追跡地域表から削除します。

追跡するオブジェクトのセットを作成する必要もあります。各オブジェクトには、オブジェクトのIDと、そのオブジェクトが追跡される地域を示す地域IDを指定する必要があります。つまり、各オブジェクトは1つ以上の追跡地域について追跡できるということです。オブジェクトは、トラッカ・メッセージTRACKER_MSGを追跡キューに挿入して作成します。

トラッカ・メッセージ・オブジェクトにはobject_idregion_idおよびoperationを指定します。operationパラメータは次のいずれかの文字列値をとります。

  • I: object_idで定義されているオブジェクトが、region_idで定義されている地域を移動するたびに通知メッセージが発行されます。

  • O: object_idで定義されているオブジェクトが、region_idで定義されている地域を移動するたびに通知メッセージが発行されます。

  • T: object_idで定義されているオブジェクトが、region_idで定義されている地域の内から外に、または外から内に遷移した場合にのみ通知メッセージが発行されます。

  • D: region_idで定義されている地域内でのobject_idで定義されているオブジェクトの追跡を無効にします。このオブジェクトの追跡を再度有効にするには、別の追跡メッセージを送信する必要があります。

オブジェクトを作成して追跡地域を構成すると、そのオブジェクトの新しい位置メッセージを送信できます。オブジェクトが移動するにつれて、位置が変わります。新しい位置メッセージが送信されるたびに、位置メッセージ・キューに挿入され、位置追跡サーバーで処理されます。位置メッセージが処理され、必要に応じて通知メッセージが生成されます。アプリケーションでは、通知キューをモニターし、新しい通知が生成されるたびに通知メッセージを処理できます。

ユーザーが位置追跡サーバーを実行するには、次の追加権限が必要です。

GRANT aq_administrator_role, create job, manage scheduler to <USER>; grant execute on dbms_aq to <USER>; 
GRANT execute on dbms_aqadm to <USER>;
GRANT execute on dbms_lock to  <USER>;
GRANT execute on dbms_aqin to  <USER>;
GRANT execute on dbms_aqjms to <USER>;