Oracle Sensor Edge Server ガイド 10g(10.1.3.1.0) B31872-01 |
|
この章の内容は次のとおりです。
この章では、Oracle Sensor Edge Serverで即時利用できる拡張機能(ドライバ、フィルタおよびディスパッチャ)と、これらのオブジェクトのインスタンスを作成する際(ディスパッチャの場合は、Oracle Sensor Edge Serverインスタンスの現行ディスパッチャを設定する際)のパラメータの構成方法について説明します。これらの拡張機能は静的オブジェクトであるため、Oracle Sensor Edge Serverインスタンスが拡張機能を使用してイベント・データを処理するためには、拡張機能のインスタンスを作成する必要があります。詳細は、「Oracle Sensor Edge Serverインスタンスのディスパッチャの設定」および「Oracle Sensor Edge Serverで使用するデバイスおよびフィルタの設定」を参照してください。
デバイスおよび現行ディスパッチャの構成の中には、URIパラメータの定義が必要なものもあります。このパラメータは、String
値を必要とし、使用するトランスポートとパラメータをトランスポート・ライブラリに指示します。URIパラメータの値は、次の形式で入力します。
esc://<transport>?<param1>=<value1>&<param2>=<value2>&...
各要素の意味は次のとおりです。
<transport>
は、使用するトランスポートの名前です(transports.xmlファイル内のtransportstransport@nameの名前と同じ)。
<param1>
は、トランスポートのパラメータ値です。
<value>
はパラメータの値です。
パラメータは必要なだけいくつでも指定できます。たとえば、TCP/IPを使用してポート9999でtest.oracle.comという名前のサーバーに接続する場合は、URIパラメータの値を次のように入力します。
esc://tcp&hostname=test.oracle.com&port=9999
9600ボーでシリアル・ポートCOM1に接続するには、URIパラメータの値を次のように入力します。
esc://com?port=COM1&baud=9600
IP 1.2.3.4でTCPポート9999に接続するには、URIパラメータの値を次のように入力します。
esc://tcp?hostName=1.2.3.4&port=9999
出力をファイルに書き込んで別のファイルから読み取る(テストおよびロギングに便利)には、URIパラメータの値を次のように入力します。
esc://file?inputFileName=/tmp/myInFile.txt&outputFileName=/tmp/
myOutFile.txt
URIパラメータに定義されている値は、トランスポート・タイプに固有です。サポートされている各トランスポート・タイプとそれに関連付けられているパラメータ値を表6-1に示します。
ヒント
よく使用するパラメータをtransports.xmlファイル内で定義することもできます。URIパラメータで定義された値はすべて、 |
Oracle Sensor Edge Serverでは、RFIDリーダーをサポートするドライバが提供されています(表6-2を参照)。
ドライバ名 | サポートされているデバイス |
---|---|
Alienリーダー・ドライバ |
Alien NannoScanner(Model 915MHz、ePC Reader)など、Alien Technology社のRFIDリーダー全部。「Alienリーダー・ドライバ・ベースのデバイスの構成」を参照。 |
BarcodeDriver |
|
Intermec BRIドライバ |
IF5 Fixed RFID Readerなど、BRI(Basic Reader Interface)をサポートするIntermecのRFIDリーダー全部。「Intermec BRIドライバによりサポートされるデバイスの構成」を参照。 |
Intermecリーダー・ドライバ |
次のデバイスがある。 |
Matricsドライバ |
Symbol Technologiesによりサポートされる固定リーダーには次のものがある。 |
Samsysドライバ |
|
Tycoリーダー |
また、Oracle Sensor Edge Serverでは、プリンタ・デバイスをサポートするドライバと、表示および通知用のドライバも提供されています(表6-3を参照)。
Oracle Sensor Edge Serverには、Edge Echoドライバも付属しています。Edge Echoドライバは、物理デバイスを制御するのではなく、命令イベントを受信し、イベントをコピーして送り返します。このイベントには、Edge Echoドライバ・インスタンスの構成に応じて、元の命令イベントと同じ属性がすべて含まれます。Oracle Sensor Edge Serverはこのイベントを、デバイスにより生成された他のイベントと同じように処理します。つまり、イベントはフィルタリングされ、現行ディスパッチャによってディスパッチされます。「Edge Echoドライバ・ベースのインスタンスの構成」も参照してください。
Alienリーダー・ドライバでは、Alien Technology社のRFIDリーダーすべてがサポートされます。
Alienリーダー・ドライバ・ベースのデバイスを構成するには、次のパラメータを定義します。
AntennaSeqIDList
: 各アンテナの識別子のリスト。
AntennaMappedDeviceNameList
: 各アンテナに関連付けられたマップ・デバイス名のリスト。
測定イベントは、ドライバにより生成され、システムにディスパッチされるイベントです。Alienリーダー・ドライバによって生成されるイベントを表6-4に示します。
アプリケーションは、特定のタスクの実行を指示する命令イベントをデバイスに送信します。Alienリーダー・ドライバにより受け入れられる命令イベントを表6-5に示します。
AnimatorDriverではデバイスがサポートされるのではなく、デバイスの対話型ソフトウェア・シミュレーションがサポートされます。このドライバの構成済インスタンスは、Oracle Sensor Edge Serverからの入力またはイベントを受け入れ、構成ファイル(例6-1)内に定義されているアニメーション・シーケンスを画面上で実行します。
AnimationDriverインスタンスを構成するには、fileNameパラメータを、構成ファイル(例6-1に示されている形式の.xml
ファイル)へのフルパスまたは相対パスとして定義します。このファイルを使用すると、任意のタイプのイベントを受け入れて生成するようにAnimationDriverインスタンスを構成できます。
<animate> <window>... </window> <task>...</task> </animate>
このファイルを構成するには、<window>
要素と<task>
要素を定義します。
<window>
要素を使用すると、ウィンドウを定義できます。各ウィンドウは、サーバーの表示で最上位のウィンドウとして表示されます。<window>
要素内には、タスクをトリガーするウィンドウ内のユーザー・インタフェース・コントロールをいくつでも定義できます。
<window>
要素は、ウィンドウとそのディメンションを定義する3つの属性(name
、width
およびheight
)で構成されます。
ウィンドウを定義した後は、ウィンドウ内のコントロールを定義できます。例6-2は、1つのプッシュ・ボタン・コントロールを含むウィンドウを示しています。AnimationDriverでは、プッシュ・ボタン用のコントロール・タイプであるbutton
がサポートされています。
<window name='myWin' width='200' height='100'> <control type='button' name='Pass Thru'/> </window>
ユーザーがボタンをクリックしたときにトリガーされるタスクを定義するには、<task>
要素を使用します。
タスクとは、コントロールまたはイベントによりトリガーされるアクションのセットです。
例6-3は、子要素<when>
および<action>
を持つ<task>
要素を示しています。<when>
要素は、<action>
要素を実行する条件をタスクに指示します。複数のタスクが、重なった条件にマッピングされている場合もあります。
<task name='TaskA'> <when> ... </when> <action> ... </action> </task>
<when>
要素を定義するには、次の条件を使用します。
<onClick>
は、ユーザーがウィンドウ内のコントロールをクリックしたことに一致します。この条件は1つの引数として、イベントのコントロール名を使用します。たとえば、<onClick name='Pass Thru'/>
は、ユーザーがPass Thruという名前のコントロール・ボタンをクリックしたことに一致します(例6-2を参照)。
<onEvent>
は、このイベントに対して定義されている基準に一致するイベントがドライバ・インスタンスにより受信された場合に起動されます。イベントには次の基準を定義できます。
<onInterval>
は定期的に呼び出されます。この要素を定義するには、frequency
属性を指定します。この属性を設定するには、String
値または数値(int
)を使用して、<onInterval>
を呼び出す繰返し間隔を秒単位で定義します。たとえば、String
値を1回使用してこの属性を設定した場合、起動時に1回<onInterval>
が呼び出されるように設定されます。
タスクを起動する条件を定義した後は、<action>
要素内に、タスクにより実行される処理を定義できます。<action>
要素内では次の内容を定義できます。
BarcodeDriverベースのデバイスを構成するには、uriパラメータを積層表示灯への接続として定義します。「デバイスおよびディスパッチャのURIパラメータの設定」を参照してください。
BarcodeDriverにより返されるRFID測定イベントを表6-6に示します。
タイプ | サブタイプ | 方向 | タイトル | 説明 |
---|---|---|---|---|
200 |
1 |
デバイスから(インバウンド) |
ID Observed |
新しいバーコードが読み取られ、デコードされる。新しいバーコードが測定されると、バーコードはデコードされてイベントのタグIDフィールドに格納される。 |
ConsoleDriverは、受信したすべてのイベントをグラフィック・ウィンドウに表示するシミュレーション・ドライバです。これには、次のビューが含まれます。
このドライバは、イベント・タイプおよびデータを認識しません。受信したイベントを表示し、「Send」ダイアログからのユーザー入力を送信するのみです。ユーザー・インタフェースを使用すると、イベント・データを入力し、実際のデバイスで生成された場合と同じように、そのデータを送信してディスパッチできます。このドライバは、システム内のイベント・フローの監視およびデバッグを行う場合に使用します。
Edge Echoドライバは、物理デバイスを制御するのではなく、命令イベントを受信し、イベントをコピーして送り返します。このイベントの属性は、現在の時刻を表示するために構成可能なTimestamp属性を除いて、元の命令イベントの属性と同じです。Oracle Sensor Edge Serverは、Edge Echoドライバのインスタンスにより生成されたイベントを、デバイスにより生成された他のイベントと同じように処理します。つまり、イベントはフィルタリングされ、現行ディスパッチャによってディスパッチされます。「イベント・データの表示」も参照してください。
Edge Echoドライバのインスタンスを構成するには、次のパラメータを定義します。
String
値です。
Edge Simulatorドライバは、イベントを生成して実際のデバイスをシミュレーションします。通常は、EdgeSimulatorドライバを使用して構成および配置設計をテストしますが、内部機能テストに使用して、システムでイベントがどのように処理されるかを確認することもできます。Edge Simulatorドライバは他のドライバと同じように機能しますが、物理デバイスに接続してイベントを読み取るのではなく、偽のイベントを生成するタイミングに関する命令を、入力ファイル(例6-6など)からパラメータとして受け取る点が異なります。これは、デバイスが起動すると(Oracle Sensor Edge Serverの起動時にデバイスが起動すると)すぐに開始されます。
Edge Simulatorドライバ・ベースのデバイスを構成する場合、この入力ファイルの名前を入力することにより、デバイスのFILENAMEパラメータを定義することが必要です。このパラメータは、次の命令を使用して偽のイベントを生成する方法をEdge Simulatorドライバ・ベースのデバイスに指示します。
<EventList>
<EventList>
要素はループを定義します。この要素は、その他のすべての命令をまとめるメイン・ブロックでもあります。<EventList>
にはrepeatという属性が1つあり、これはループの制御に必要です。repeatの値は、0からLONG_MAX
の間の数値である必要があります。イベントを1回のみ生成する場合は、repeat属性を1に設定します。repeatをnに設定すると、すべての命令がn回ループされます。repeatを0に設定すると、ブロックが使用不可になり、パーサーはそのブロックをスキップします。
2つのイベントを生成し、一時停止してから、さらに2つのイベントを生成するという一連の処理を20回繰り返す構文を例6-4に示します。
<EventList repeat='20'> <Event> </Event> <Event> </Event> <EventInterval> </ EventInterval> <Event> </Event> <Event> </Event> </EventList>
<EventList>
要素内には、任意の数の命令を含めることができます。定義された順序で命令が実行されます。
<EventInterval>
<EventInterval>
要素は、次に進む前に一定の時間、一時停止するようにシミュレータに指示します。通常はデータ率を調節するために使用されます。次の命令を実行する前に待機する時間をミリ秒単位で定義する数値です。6-5項は、各イベントの間に0.5秒、ループの間に3秒待機するようにシミュレータに命令する方法を示しています。
<EventList repeat='20'> <Event> </Event> <EventInterval>500</ EventInterval> <Event> </Event> <EventInterval>500</ EventInterval> <Event> </Event> <EventInterval>3000</ EventInterval> </EventList>
<Event>
<Event>
要素は、イベントを送信するようにシミュレータに指示します。子要素(表6-7を参照)はイベントのフィールドを制御します。
イベント・フィールド | 値 |
---|---|
<type> |
イベントのタイプに対応する数値。 |
<subtype> |
サブタイプの数値。たとえば、例6-6のサブタイプ値は一般的な命令イベント(特定のデバイスに処理を実行するように指示するために、アプリケーションまたはデバイスによって送信されたイベント)に対応する。例6-6では、1という値がデバイスに指定されている。 |
<id> |
このフィールドのテキスト値により、イベント命令に対するタグ(読取りまたはターゲット)が識別される。例6-6では、タグの |
<data> |
タグ・データ。オプションのフィールド。 |
<deviceName> |
イベントを生成するデバイスまたはアプリケーションの名前。 |
2つのイベント・グループを含む入力ファイルを例6-6に示します。1つ目のイベントは1回だけ実行され、2つ目のイベントは20回実行されます。
<EdgeEventSimulation> <EventList repeat='1'> <Event> <type>100</type> <subtype>1</subtype> <id>03ffff045679</id> <data>No Data</data> <deviceName>My Device</deviceName> </Event> <EventInterval>500</ EventInterval> <Event> <type>100</type> <subtype>1</subtype> <id>03ffff045680</id> <data>No Data</data> <deviceName>My Device</deviceName> </Event> <EventInterval>3000</ EventInterval> </EventList> <EventList repeat='20'> <Event> <type>100</type> <subtype>1</subtype> <id>04ffff045679</id> <data>No Data</data> <deviceName>My Device</deviceName> </Event> <EventInterval>500</ EventInterval> <Event> <type>100</type> <subtype>1</subtype> <id>04ffff045680</id> <data>No Data</data> <deviceName>My Device</deviceName> </Event> </EventList> </EdgeEventSimulation>
イベント・タイプの形式は固定ですが、イベントのタイプに応じてフィールドを異なる意味にマッピングすることにより、イベント・タイプを拡張できます。
HtmlDriverは、Oracle Sensor Edge Server画面にウィンドウを表示したり、リモート・サーバーに接続してHTMLコンテンツを表示することを可能にする表示ドライバです。複雑なステータスやメッセージをグラフィック表示するためにデータをプッシュするアプリケーションには、HtmlDriverを使用します。
HtmlDriverには表示サーバーが含まれており(htmlDriver.jar
に含まれる)、これを使用するとリモート・サーバー上の表示ウィンドウが使用可能になります。表示サーバーは、HtmlDriverインスタンスからのネットワーク接続を待機するJavaプロセスとして実行されます。ネットワーク上には任意の数の表示サーバーを設定できます。表示サーバー・プロセスを実行するマシンのIPまたはホスト名を覚えておく必要があります。同じマシン上で複数の表示サーバーを実行できます。ただし、各表示サーバーが別々のポートに割り当てられている必要があります。
表示サーバーをマシンにインストールするには、次のようにします。
htmlDriver.jar
をコピーします。
displayServer
という名前のディレクトリを作成し、jar xf htmlDriver.jar
を実行します。
classes
ディレクトリに移動します(cd classes
)。
java oracle.edge.impl.driver.HtmlDriver <port> [title] [x] [y] [width] [height] [showHistory]
各要素の意味は次のとおりです。
<port>
は、表示サーバーがリスニングするTCP/IPポートを指定します。すでに使用されているポートは指定できません。これは必須パラメータです。
[title]
は、ウィンドウ名を指定するオプションのテキスト文字列です。
[x]
は、画面上の表示ウィンドウのx位置です。
[y]
は、画面上の表示ウィンドウのy位置です。
[width]
はウィンドウの幅です。0に設定した場合、ウィンドウでは画面の幅が使用されます。
[height]
はウィンドウの高さです。0に設定した場合、ウィンドウでは画面の高さが使用されます。
[showHistory]
: trueに設定した場合、ウィンドウの一番上に小さなリストが表示され、以前に表示されたすべてのドキュメントが示されます。このウィンドウを使用すると、ユーザーは最後に表示されたドキュメントまで手動でスクロールできます。
たとえば、全画面ウィンドウで、ポート8999を使用してデスクトップ上で表示サーバーを実行する場合は、次のコマンドを実行します。
java oracle.edge.impl.driver.HtmlDriver 8999 "My Window" 0 0 0 0 false
リモート・サーバーでの表示が使用可能になるようにHtmlDriverインスタンスを構成するには、次のパラメータを定義します。
String
値の形式は次のとおりです。<hostname or IP>:<port>,...
セキュリティを設定するには、各表示サーバーをリストする必要があります。
serverListパラメータを定義しない場合、インスタンスはOracle Sensor Edge Serverのローカル・ウィンドウに表示されます。ローカル・ウィンドウでインスタンスを実行する場合、表示サーバーは必要ありません。
ローカル・ウィンドウでインスタンスを表示するには、次のようにします。
boolean
(trueまたはfalse)を入力して表示対象ページのウィンドウを表示します。
int
値を入力して、ウィンドウのディメンションを設定します。
HtmlDriverによりサポートされるイベントを表6-8に示します。
Intermec BRIドライバでは、BRI(Basic Reader Interface)をサポートし、シリアル接続またはネットワーク(TCP/IP)接続を介してOracle Sensor Edge Serverと通信するIntermec社のすべてのRFIDリーダーがサポートされます。Oracle Sensor Edge Serverは、IF5リーダーに対してテスト済です。
詳細は、http://www.intermec.comを参照してください。
Intermec BRIドライバ・ベースのデバイスを構成するには、表6-9に示されたパラメータを定義する必要があります。
パラメータ名 | 値のタイプ | 説明 |
---|---|---|
URI |
String |
接続タイプを示す接続識別子と接続パラメータについては、「デバイスおよびディスパッチャのURIパラメータの設定」を参照。 |
Status Query Response Timeout |
Int |
ステータス問合せからのレスポンスを待機するためのタイムアウト。タイムアウトには、Status Query Intervalパラメータに設定した値よりも小さい値を設定する必要がある。 |
Status Query Interval |
Int |
連続する2つのステータス問合せの間隔(ミリ秒単位)。 |
AntennaIds |
String |
接続されているアンテナの識別子。アンテナが複数ある場合、複数の識別子をカンマ(,)を使用して区切る。 |
DataFieldLength |
Int |
取得されるデータ・フィールドのサイズ(バイト)。0は、データ・フィールドを取得する必要がないことを示す。 |
DataFieldValueType |
String |
データ・フィールドに対して次の3つのいずれかの値を指定する。 このパラメータは、DataFieldLengthパラメータが0より大きい場合のみ有効になる。 |
TagType |
N/A |
読み取るタグ・タイプを指定する。次のオプションがある。 |
測定イベントは、ドライバにより生成され、システムにディスパッチされるイベントです。Intermec BRIドライバによって生成されるイベントを表6-10に示します。
アプリケーションは、特定のタスクの実行を指示する命令イベントをデバイスに送信します。Intermec BRIドライバにより受け入れられる命令イベントを表6-11に示します。
詳細は、http://www.intermec.comを参照してください。
Intermecリーダー・ドライバ・ベースのデバイスを作成する場合、バンドル化されてIntermecリーダー・ドライバに付属している次のコンポーネントが必要です。
IntelliTag IDK(IDK)はIntermecがサポートするソフトウェア・ライブラリとツールのセットです。Intermecデバイスとの通信ではこのライブラリを使用する方法だけが採用されており、Windows 32プラットフォーム(Windows 2000およびWindows XP)でのみサポートされます。IntelligTag IDKは次のサイトから入手できます。
http://www.oracle.com/technology/products/iaswe/edge_server/extensions.html
Intermecリーダー・ドライバ・ベースのデバイスを構成する場合、次のパラメータを定義する必要があります。
AntennaSeqIDList
を各アンテナの識別子のリストに設定します。
AntennaMappedDeviceNameList
を、各アンテナに関連付けられたマップ・デバイス名のリストに設定します。
LPML(Label Printing Markup Language)は、オラクル社が定義したXMLベースのプリンタ言語であり、ラベル・プリンタおよびプリンタ・サーバーのベンダーによってサポートされています。LpmlDriverでは、LPML言語およびバインディングをサポートするすべてのプリンタまたは印刷サーバー・システムがサポートされます。
LpmlDriverベースのデバイスを構成するには、次のようにデバイスのパラメータを定義する必要があります。
int
値です。
int
値です。
LpmlDriverにより生成され、システムにディスパッチされるプリンタ・レスポンス測定イベントを表6-12に示します。
タイプ | サブタイプ | タグID | データ | 説明 |
---|---|---|---|---|
210 |
2 |
使用されない |
LPMLレスポンス・メッセージ |
印刷ジョブの結果を送信側に通知する、プリンタから(「Response Mode」が選択されている場合)、またはドライバそのものからのレスポンス・メッセージ。correlationIdフィールドとsourceNameフィールドは、元の印刷ジョブ・リクエストから使用される。 |
命令イベントはアプリケーションによってドライバに送信され、ドライバは特定のタスクを実行するように指示されます。LpmlDriverにより受け入れられる命令イベントを表6-13に示します。
タイプ | サブタイプ | タグID | データ | 説明 |
---|---|---|---|---|
102 |
1 |
使用されない |
LPMLメッセージ |
Dataフィールドに指定されたLPMLメッセージを印刷する。 |
Matricsドライバでは、シリアル接続またはネットワーク(TCP/IP)接続を使用してOracle Sensor Edge Serverと通信する、Symbol Technologiesが作成したMatricsリーダーがサポートされます。
Matricsドライバ・ベースのデバイスを構成する場合、次のパラメータを定義する必要があります。
int
値です。
int
値は、Status Query Intervalパラメータに設定した値よりも小さい値にする必要があります。
測定イベントは、ドライバにより生成され、システムにディスパッチされるイベントです。Matricsドライバによって生成されるイベントを表6-14に示します。
アプリケーションは、特定のタスクの実行を指示する命令イベントをデバイスに送信します。Matricsドライバにより受け入れられる命令イベントとその使用方法を表6-15に示します。
PatliteDriverによりサポートされるPatliteの積層表示灯シリーズは、イベントを生成しませんが、信号灯および信号として機能します。Patlite積層表示灯およびツリーにイベントを送信すると、ライトが点灯するか、または一定間隔で点滅します。
PatliteDriverベースのデバイスを構成するには、URIパラメータを定義します。「デバイスおよびディスパッチャのURIパラメータの設定」を参照してください。
Proliteドライバ・ベースのデバイスを構成するには、URIパラメータを、接続URIを入力することにより定義します。「デバイスおよびディスパッチャのURIパラメータの設定」を参照してください。
Samsysドライバでは、シリアル接続またはネットワーク(TCP/IP)接続を介してOracle Sensor Edge Serverと通信するSAMSys MP320 2.7 EPCリーダーがサポートされます。Samsys MP9320 2.7 EPCリーダーは、CHUMP(Cookie-handling UDP Message Protocol)をサポートしており、Oracle Edge Sensor Serverに対してテスト済です。
Samsysドライバ・ベースのデバイスを構成するには、次のパラメータを定義します。
int
値です。
int
値は、Status Query Intervalパラメータに設定した値よりも小さい値にする必要があります。
get-tag-list
コマンドを送信した場合にのみタグをスキャンするようにMP9320 2.7 EPCリーダーが設定されます。
測定イベントは、ドライバにより生成され、システムにディスパッチされるイベントです。Samsysドライバによって生成されるイベントを表6-16に示します。
アプリケーションは、特定のタスクの実行を指示する命令イベントをデバイスに送信します。Samsysドライバにより受け入れられる命令イベントを表6-17に示します。
SimpleAudioDriverは命令イベントを受け入れ、アプリケーションがOracle Sensor Edge Serverマシンのサウンド・カードを使用して.wav
ファイルを再生できるようにします。セキュリティ上の理由から、(audioFilesパラメータ内で定義されている)特定のディレクトリ内のファイルのみが再生されます。
Simple Audioドライバ・インスタンスを構成するには、オーディオ・ファイルのパス(String
値)を入力することにより、audioFilesパスのパラメータを定義します。パスは、最後にスラッシュの付かない絶対パスまたは相対パスです。パスはエッジ拡張クラス・ディレクトリを基準にしているため、相対パスを入力する場合は、このディレクトリから横断する必要があります。たとえば、Oracle Sensor Edge Serverホーム・パス(サンプル・レベル、config
やpersistent
などのディレクトリのロケール)上のオーディオ・ファイルを指定する場合、次のように入力します。
..¥..¥edge¥audio
この値により、Oracle Sensor Edge Serverホーム・パスの最上位のaudio
ディレクトリを使用するようにパラメータが設定されます。
Simple Audioドライバによりサポートされるイベント・タイプ207(オーディオ)を表6-18に示します。
タイプ | サブタイプ | 方向 | タイトル | 説明 |
---|---|---|---|---|
207 |
1 |
アプリケーションから(アウトバウンド) |
Play Audio File |
Dataフィールドの |
DATAフィールドに組み込まれているXMLファイルは、標準のXML-RPCコール形式を使用します。その形式は例6-7に示すとおりです。
<methodCalls> <methodCall> <params> <param name='paramName'>paramValue</param> </params> </methodCall> </methodCalls>
paramName
はパラメータ名で、paramValue
はその値です。この関数はタイプおよびサブタイプにより定義されるため、<methodName>
は省略できます。paramName
は、fileName
およびurl
を使用して定義できます。
セキュリティ上の理由で、fileName
パラメータにより定義された値がオーディオ・ファイル名として使用されます。fileName
の値に拡張子を含めることはできません。また、オーディオ・ファイルは.wav
ファイルである必要があります。たとえば、(例6-8のように)fileName
パラメータの値をwelcomeとして定義した場合、オーディオ・ファイル名はwelcome.wav
になります。
<methodCalls> <methodCall> <params> <param name=fileName'>welcome</param> </params> </methodCall> </methodCalls>
url
パラメータは、オーディオ・ファイルを指すURLです。
Tycoリーダー・ドライバでは、シリアル接続またはネットワーク(TCP/IP)接続を介してOracle Sensor Edge Serverと通信する、Sensormaticが作成したすべてのTycoリーダーがサポートされます。
Tycoリーダー・ドライバ・ベースのデバイスを構成する場合、次のパラメータを定義する必要があります。
int
値です。
int
値です。
測定イベントは、ドライバにより生成され、システムにディスパッチされるイベントです。Tycoリーダー・ドライバによって生成されるイベントを表6-19に示します。
アプリケーションは、特定のタスクの実行を指示する命令イベントをデバイスに送信します。Tycoリーダー・ドライバにより受け入れられる命令イベントを表6-20に示します。
次の各項では、組込みフィルタでイベントおよびその構成パラメータを生成する方法について説明します。
チェック・タグは、デバイス(この場合はリーダー)がタグを読み取っているかどうかをテストするために使用する一般的なタグです。チェック・タグはリーダーの読取り範囲内に物理的に存在するため、必ず読み取られます。その他のタグがリーダーの読取り範囲を通過すると、それに連動してデバイスがチェック・タグも読み取ります。
Check Tag IDフィルタは、デバイスがチェック・タグを読み取っていることを定期的に確認します。このフィルタを使用すると、デバイスのステータス、対応するリーダーおよび使用されるアンテナを確認できます。Check Tag IDフィルタは診断目的のみで使用されるため、クライアント・デバイスにディスパッチするイベントは提供しません。かわりに、指定された時間内にデバイスがチェック・タグを読み取ったことを検出しなかった場合は、このフィルタがイベントを生成します。
Check Tag IDフィルタのパラメータ(および関連する値)を表6-21に示します。
名前 | 値のタイプ | 説明 |
---|---|---|
Check Tag Id |
|
チェック・タグのID。タグが読み取られているかどうかを確認するためにフィルタが検索するID。 |
Tag Check Time Window |
|
フィルタが指定されたチェック・タグを検出できなかった場合にイベントが生成されるまでの時間(ミリ秒単位)。 |
Check Tag IDフィルタのパラメータを定義するには、(デバイスの読取り範囲内にある)チェック・タグ自体のIDを確認する必要があります。このIDを、Check Tag IdのString値として入力します。Tag Check Time Windowパラメータで定義された時間内に、指定されたIDを持つチェック・タグをデバイスが読み取ったことを検知しないと、フィルタはイベントを生成します。生成されるイベントのシグネチャを表6-22に示します。
Cross-Reader Redundantフィルタは、デバイス・グループのデバイスから送信された冗長なイベントをブロックし、イベントは生成しません。同じタグIDを持っているイベントが見つかった場合、このフィルタはイベントが冗長であるとみなします。フィルタリングは、ドライバ読取りサイクルに対応するウィンドウ時間中に発生します。
Cross-Reader Redundantフィルタは、グループ・レベルのフィルタリングにのみ使用できます。デバイスに適用すると、機能が実行されません。このフィルタには、構成するパラメータがありません。
Debugフィルタは、システムを通過するイベントを追跡します。関連付けられたデバイスからイベントを受信すると、このフィルタはログ・ファイルにイベントを書き込みます。このフィルタのパラメータは、Event Output Fileというパラメータ1つです。このパラメータを定義するには、Debugフィルタがイベントを書き込むログ・ファイルのフルパスを入力します。(サーバー上でこのファイルを書込み可能にする必要があります。)Debugフィルタの出力形式は次のとおりです。
"Devicename: <devicename> Type: <type> Subtype: <subtype> EventTime: <time>TagIds:<tagid(,tagid)*>Data:<dat(,data)*>¥n"
各イベントは個別の行になります。各行は改行文字(オペレーティング・システムによってLFまたはCRLF)で区切られます。<time>
の値は、time(2)のコールによって返されたlongです。
このフィルタは、デバイスまたはデバイス・グループにのみアタッチできます。このフィルタには、構成するパラメータがありません。
JavaScriptフィルタを使用すると、スクリプト言語でフィルタ・ロジックを記述できます。ソース・スクリプトの変更内容は動的にロードされるため、サーバーやその他のコンポーネントを再起動する必要はありません。このフィルタは、Mozilla Rhino(http://www.mozilla.org/rhino/
)など、ソース・スクリプトを実行する外部のJavaScriptエンジンに依存しています。
JavaScriptフィルタのパラメータは、scriptFileNameというパラメータ1つです。このパラメータを定義するには、ドライバがロードおよび監視するソース・スクリプトの相対パスまたはフルパスの名前を入力します。
JavaScriptフィルタは、処理を実行するためにソース・スクリプト内で関数を検索します。関数は次のとおりです。
function filter(events)
: これを指定した場合、フィルタがイベントのフィルタリングを要求されると、この関数がコールされます。このメソッドは、フィルタが特定のデバイスにアタッチされている場合のみコールされます。イベントの配列が渡されます。この配列内のイベントの更新や削除、または新しい配列の作成が可能です。システムに処理を続行させるイベントの配列を返す必要があります。パラメータ・イベントは、エッジ・イベントの配列(oracle.edge.common.Event[]
)です。
function groupFilter(events)
: このコールは、デバイス・グループがフィルタリングのためにフィルタをコールすると起動されます。このコールは、フィルタが1つのデバイスでなくデバイス・グループにアタッチされている場合にのみ使用されます。パラメータ・イベントは、エッジ・イベントの配列(oracle.edge.common.Event[]
)です。
function instructionFilter(instruction)
: これは、システムが命令イベントをデバイスに送信しようとするとコールされます。イベントは変更可能です。イベントをすべてまとめてブロックする場合は、NULLを返します。パラメータは1つのイベント(oracle.edge.common.Event
)です。
前述のいずれかの関数を1つ記述することができます。その他の関数は無視されます。初期化されたブロックは、フィルタの起動時にコールされます。例6-9に示すソース・スクリプトでは、検出されたすべてのタグIDがコンソールに出力されます。
function filter(events) { for ( i=0; i<events.length; i++ ) { id = events[i].getTagId(); java.lang.System.out.println("Id:"+id ) } }
Movementフィルタは、Real Time Location System測定を使用して、エラーや干渉による急増や急な運動変化を平坦にすることにより移動追跡を円滑化します。Movementフィルタは、現在の位置と以前の位置との距離を計算します。この距離が距離しきい値を下回ると、現在のイベントがフィルタリングで除外されます。
Movementフィルタのパラメータは、Distance Thresholdというパラメータ1つです。このパラメータを定義するには、レポートする必要のある最小移動を示す正の数(int
値)を入力します。
Movementフィルタのシグネチャを表6-23に示します。
Pallet Pass Thruフィルタは指定された時間内に受信したすべてのイベントを収集し、1つのイベントとして送信します。パレットまたはコンテナがリーダー・デバイスのゲートまたは伝達範囲を通過すると、このフィルタがこれらすべてのタグに対して1つのイベントを生成します。このフィルタにより、コンテナまたはパレットが所有しているアイテムを確認できます。
Pallet Pass Thruフィルタには、次のパラメータが含まれます。
このパラメータを定義するには、デバイスが最後にタグを読み取ってから、デバイスの伝達範囲を出たとみなされるまでの時間(int
値)をミリ秒単位で入力します。このパラメータには、デバイスがこれらのタグ検出中イベントをレポートする頻度(リーダー・サイクル)を50ミリ秒から2秒の範囲で指定します。この頻度を大きすぎる値(2秒など)に設定すると、デバイスがタグを完全に見過ごす可能性があります。
このパラメータを定義するには、新しい読取りサイクルを開始する前に、デバイスがパレットまたはコンテナに含まれているタグの読取りサイクルを完了する時間(int
値)をミリ秒単位で入力します。この時間が経過すると読取りサイクルは終了し(デバイスがすべての新しいタグを読み取ったとみなされ)、Pallet Pass Thruフィルタは次のシグネチャ(表6-24を参照)を持つイベントを生成します。
Pallet Shelfフィルタは指定された間隔内に受信したすべてのイベントを収集し、1つのイベントとして送信します。このフィルタにより、多数のアイテムを持つ新しいコンテナまたはパレットがデバイス・リーダーの読取り範囲またはゲートを出入りするときに識別できます。
Pallet Shelfフィルタには、次のパラメータがあります。
このパラメータを定義するには、デバイスが最後にタグを読み取ってから、デバイスの伝達範囲を出たとみなされるまでの時間(int
値)をミリ秒単位で入力します。Pallet Shelfフィルタは、Exit Event Threshold Timeパラメータで定義した間隔が経過してイベントが生成されないと、キャッシュを警告なしにクリアします。
このパラメータを定義するには、新しい読取りサイクルを開始する前に、デバイスがパレットまたはコンテナのタグの読取りサイクルを完了する時間(int
値)をミリ秒単位で入力します。この時間が経過すると読取りサイクルは終了し(デバイスがすべての新しいタグを読み込んだとみなされ)、Pallet Shelfフィルタはイベントを生成します。
Pallet Shelfフィルタは次の2つのイベントを生成します。
デバイスが最初にタグを検出すると、Pallet ShelfフィルタはMULTIPLE IN FIELDイベントを生成します。このイベントには、次のシグネチャ(表6-25)が含まれます。
Exit Event Threshold Timeパラメータに定義した間隔が経過すると、Pallet ShelfフィルタはMULTIPLE OUT FIELDイベントを生成します。このイベントには、次のシグネチャ(表6-26)が含まれます。
タグがデバイス・リーダーの伝達範囲またはゲートを通過すると、一連のタグ検出中イベントが生成されます。タグが伝達範囲に入ると、デバイスはこれらのイベントを定期的にレポートします。タグがリーダーの伝達範囲を出ると、レポートは停止します。
デバイス・リーダーが生成する一連のイベントをアプリケーションが必要とせず、タグがデバイスのゲートまたは伝達範囲を通過したことだけがわかればよいことも多々あります。Passフィルタはそのような状況に適しており、すべてのタグ検出中イベントを、リーダー・デバイスの伝達範囲を通過する一意のタグごとに1つのイベントにまとめます。
Passフィルタのパラメータは、Exit Event Threshold Timeというパラメータ1つです。このパラメータを定義するには、デバイスが最後にタグを読み取ってから、デバイスの伝達範囲を出たとみなされるまでの時間(int
値)をミリ秒単位で入力します。このパラメータには、デバイスがこれらのタグ検出中イベントをレポートする頻度(リーダー・サイクル)を50ミリ秒から2秒の範囲で指定します。この頻度を大きすぎる値(2秒など)に設定すると、デバイスがタグを完全に見過ごす可能性があります。
デバイスが最初にタグを読み取ると、PassフィルタはタグのID(タグID)をキャッシュし、そのタグIDがキャッシュに読み取られた時間を記録すると、すぐにパススルー・イベントを送信します。フィルタは、このキャッシュされたタグIDがその後に読み取られないようにブロックします。フィルタがデバイスから新しい読取りを受信するたびに、タグIDをキャッシュに読み取った時刻を更新します。キャッシュ時刻とExit Event Threshold Timeに設定された値の合計が現在の時間より小さい場合、PassフィルタはキャッシュからタグIDを消去します。デバイスが次にこのタグを読み取ると、フィルタは新しいイベントとみなし、そのタグIDをキャッシュして、新しいパススルー・イベントを送信します。
パススルー・イベントには、次のシグネチャ(表6-27)が含まれます。
Polygonフィルタは、Real Time Location Systemデバイスによってレポートされたすべての移動測定をフィルタリングで除外し、タグが定義済のポリゴンに出入りしたときにのみイベントを生成します。ポリゴンは、頂点とカッコを定義するx,y座標のセットを使用して定義します。たとえば、( (x,y), (x,y), ... ), (....), ...のように定義します。
Polygonフィルタのパラメータは、PolygonCoordinatesというパラメータ1つです。このパラメータを定義するには、String
値を((x1, y1), (x2, y2)...,(xn, yn))という形式で入力します。
Regexフィルタは、ストリームを削除するか、ストリームの通過を許可するためのタグを検索する正規表現検索を実行します。このフィルタを使用すると、フィルタのパターン・セットを定義してイベントの任意の範囲を検索できます。フィルタにより検索基準の一致が見つかると、イベントがシステムを通過することが許可されます。一致が見つからない場合、そのイベントがフィルタリングで除外されます。RegexFilterは汎用フィルタであり、どのイベント・タイプに対しても使用できます。
Regexフィルタのパラメータは、allowというパラメータ1つです。このパラメータを定義するには、フィルタの通過を許可するイベントの正規表現(String
)を次の形式で入力します。
<field>~<pattern>&&<field>~<pattern>||...
ここで、<field>
は、一致をフィルタリングするイベント・フィールドの名前です。このフィルタでは次のフィールドがサポートされます。
<pattern>
は標準の正規表現、&&
はAND接続語、||
はOR接続語です。たとえば、イベント・タイプが103のすべてのイベントと、最初の3桁が0FEに一致するタグをRegexFilterインスタンスにより検索する場合は、次のように入力します。
type~103&&tagid~^0FE
Shelfフィルタは、リーダーの読取り範囲内でタグが検出されたとき、またはタグが読取り範囲を離れたときにイベントを生成するデバイス・レベルのフィルタです。Passフィルタと同様に、ShelfフィルタのパラメータもExit Event Threshold Timeというパラメータ1つです。このパラメータを定義するには、デバイスが最後にタグを読み取ってから、デバイスの伝達範囲を出たとみなされるまでの時間(int
値)をミリ秒単位で入力します。ただし、Passフィルタとは異なり、ShelfフィルタはExit Event Threshold Timeパラメータで定義した間隔が経過してイベントが生成されないと、キャッシュを警告なしにクリアします。
Shelfフィルタは次の2つのイベントを生成します。
Shelfフィルタは、デバイスが最初にタグを検出すると、このイベントを生成します。このイベントには、次のシグネチャ(表6-28)が含まれます。
Shelfフィルタは、Exit Event Threshold Timeパラメータに定義した間隔が経過すると、このイベントを生成します。このイベントには、次のシグネチャ(表6-29)が含まれます。
デバイスが最初にタグを検出すると、ShelfフィルタはタグのIDをキャッシュし、IN FIELD
イベントを生成します。この時点で、タグは各リーダー・サイクル中に読み取られます。これらのサイクル中にタグが読み取られない場合には、他のサイクル中に読み取られます。デバイスが、Event Exit Threshold Timeパラメータで指定したよりも長い時間継続してタグを読み取らないと、フィルタはタグのIDをキャッシュから削除し、OUT FIELD
イベントを生成します。デバイスの読取り範囲を出ると、デバイスはタグの読取りを停止します。
Oracle Sensor Edge Serverの主要な出力は、フィルタリングされたデータ・イベントです。デバイスと各フィルタは、このイベント・データを標準化および最小化します。Oracle Sensor Edge Serverでは、次のディスパッチャ方法によりイベント・データを配信できます。
これらのディスパッチャ方法の構成方法については、次の項で説明しています。
新しいメッセージを配信する必要がある場合、クライアント・デバイスまたはアプリケーションは、Oracle Sensor Edge Serverが起動するSOAPコールを登録できます。
Webサービスを介してイベント・メッセージを配信するようにWebServiceディスパッチャを構成するには、クライアント・コールが記述されたWSDL(Web Service Definition Language)ドキュメントのサービスURLを入力します。このURLは、Webサービスのエンドポイント(ポート)を指す必要があります。たとえば、http://localhost:8888/wsdl/mytest.wsdl
と入力します。このドキュメントには、EdgeClientCallback
のportType
と、その子要素としてコールprocessEvent
が含まれている必要があります。Oracle Sensor Edge Serverは起動時に、このWSDLドキュメント内に定義されているサービスへの接続およびバインドを試行します。
HTTP 1.0を使用してクライアントにイベントをルーティングするようにディスパッチャを構成すると、Oracle Sensor Edge Serverでは各イベント・メッセージがクライアントに個別にポストされます。Oracle Sensor Edge Serverではこれらのポストが順番に実行されるため、1つのポストがブロックされると、それに続くすべてのポストもブロックされます。
HTTPを使用してイベントをルーティングするようにOracle Sensor Serverを構成するには、次のパラメータを定義します。
http://hostname:port/serverPath
Oracle Sensor Edge ServerがHTTPディスパッチャを使用する場合は、クライアント・インタフェースはOracle Sensor Edge Serverにいつどのようにコールするのかを指示する必要があります。
PMLディスパッチャは、HTTP、FTP、FILEなどのプロトコルに対してトランスポート・ライブラリを使用してEPC PML形式でイベントをポストします。
PMLディスパッチャを使用するようにOracle Sensor Serverを構成するには、宛先URIを定義します。「デバイスおよびディスパッチャのURIパラメータの設定」を参照してください。
テンプレート・ディスパッチャ(EventFlowDispatcherとも呼ばれる)は、様々なソースからイベントを送受信し、eflow.xml
構成ファイルを使用して構成された有限状態マシンを介してイベントを処理します。このディスパッチャは、トランスポート・ライブラリを使用して、HTTP、POJ、Webサービスおよびダイレクト・データ・ストリームを介してデータを送受信します。
テンプレート・ディスパッチャを使用するようにOracle Sensor Serverを構成するには、eflow.xml
の場所を入力します。
ALEDispatcherをALE Webサービス・インタフェースと組み合せて使用すると、レポート仕様が満たされたときにALEサブスクライバに通知することができます。
Nullディスパッチャはデフォルトで作成され、渡されたすべてのイベントを破棄します。破棄されたイベントは保存またはスプールされません。このディスパッチャは、Oracle Sensor Edge Serverがイベントをディスパッチしないようにする場合にのみ使用します。
Oracle Streamsおよびアドバンスト・キューイングを使用するようにOracle Sensor Edge Serverを構成すると、エッジ・ディスパッチャがイベント・メッセージを取得および配信する方法を制御できます。WebサービスやHTTPディスパッチャ・オプションとは異なり、Oracle Streamsディスパッチャを使用してディスパッチされたイベント・メッセージは、エントリ・ポイントに直接取り次ぐ必要がありません。Oracle Streamsディスパッチャでは、ルールベースの処理およびエージェント・テクノロジがサポートされます。また、StreamsディスパッチャではUTF-8エンコーディングのみがサポートされます。
イベント・メッセージは、ステージング・エリア(内部キュー)に置かれるデータです。このデータは、各種のクライアント・デバイスやアプリケーション(イベント・メッセージのコンシューマ)用に様々な方法で集約できます。Oracle Streamsをディスパッチャとして使用すると、Oracle Sensor Edge Serverまたはアプリケーションではなく、データベースのデータおよびイベント・レイヤーにより、どのイベントがいつ生成されるかが決まります。データおよびイベント・レイヤーは、各クライアント・デバイスまたはアプリケーションに適したイベント・メッセージを決定するルールベースの処理を行います。
イベント・メッセージが取得され、ステージング・キューに置かれると、イベント・メッセージ・データはルール評価ジョブによって処理できます。このジョブはステージング・キューからイベント・メッセージを取得し、Oracle Sensor Edge Serverルール・セットと比較します。各ルールには、ルールが当てはまる場合に実行されるアクションがあります。これらのアクションには、その他のアプリケーションで使用できるその他のキューに、イベント・メッセージを伝播するためのPL/SQLコールバックが含まれます。
これらのルールベースのアクションに加え、ルール評価ジョブは、Oracle Sensor Edge Serverやその他のソースからセンサー・データを受信するセンサー・データ・リポジトリ(SDR)をコールしてアプリケーションを起動します。SDRには、フィルタリングされたすべてのセンサー・イベントをシステムに格納するアーカイブ表のセットが含まれます。
詳細は、第4章「センサー・データ・リポジトリの使用」を参照してください。
Streamsディスパッチャを構成するには、threadnumフィールドに、アウトバウンド測定値を処理するために作成する最大スレッド数を入力します。各スレッドが接続を保持するため、これは、アウトバウンド・イベント用に使用するセンサー・データ・リポジトリへの接続数でもあります(インバウンド・イベント用に使用する接続は別に存在します)。0は無効な値です。「リリース3(10.1.3)のセンサー・データ・リポジトリおよびセンサー・データ・ストリームの手動構成」も参照してください。
|
![]() Copyright © 2006 Oracle Corporation. All Rights Reserved. |
|