選択肢エレメントは、ジオイベント サービスの構成可能なエレメントであり、指定された条件に基づいてジオイベント、またはイベント レコードを複数の目的地のうち 1 つにルーティングします。 これはプログラミング言語の if-else 条件ステートメントなどのように、イベント レコードに条件ステートメントを適用します。 選択肢エレメントは、他の条件ステートメントをいずれも満たさない属性を持つイベント レコードに対して、必要に応じて otherwise 条件を使用して構成することができます。
選択肢エレメントの操作
選択肢エレメントは、ジオイベント サービスを通じてジオイベントが進むことができるさまざまなルートを指定します。 フィルター式は、イベント レコードの属性を評価して、イベント レコードがたどるルートを決定します。 イベント レコードがたどることができるルートは 1 つのみで、指定された条件をいずれも属性が満たさない場合は破棄される場合があります。 イベント レコードの属性が最初のフィルター式 (または条件) を満たさない場合、リスト内の次の条件が評価されます。これが、指定されたすべての条件ステートメントが考慮されるまで繰り返されます。 オプションの otherwise 条件を使用すると、他の条件をいずれも満たさない属性を持つイベント レコードを捕捉できます。 フィルター式は、上 (最初) から下 (最後) まで、一度に 1 つずつ順番に考慮されます。
イベント レコードが指定された条件のいずれにも一致せず、otherwise 条件が指定されていない場合、イベント レコードは削除され、処理されません。
使用例
選択肢エレメントが使用可能な場合の使用例を以下に示します。
輸送車両の監視
この例では、データ フィードがさまざまなタイプの輸送に関するイベント データを提供すると仮定します。それぞれのタイプは異なる方法で処理する必要があります。 データには、3 つのタイプの輸送機関 (Airplane、Train、Automobile) のいずれかを指定するフィールド (VehicleType) が含まれています。 選択肢エレメントを使用して、各イベント レコードを車両タイプに基づいて個別の処理ワークフローにルーティングできます。 Truck など 3 つのタイプの輸送機関のいずれでもないイベント レコードを受信した場合、[Otherwise] パラメーターがオンでないため、そのレコードは削除されます。
この例で適用される次の条件ステートメントについて考察します。
- VehicleType が Airplane に等しい場合、イベント レコードを飛行機として処理します。
- VehicleType が Train に等しい場合、イベント レコードを列車として処理します。
- VehicleType が Automobile に等しい場合、イベント レコードを自動車として処理します。
- VehicleType が Truck に等しい場合、イベント レコードを削除します。
除雪車速度の監視
この例では、データ フィードがすべての除雪車両およびそれらの現行速度に関するイベント データを提供すると仮定します。 除雪作業中の通常の車両速度は 25 ~ 35 マイル/時です。 速度がこの範囲を下回っている場合は、除雪車が効率的に作業していないことを示し、この範囲を上回っている場合は、除雪車が損傷を受ける可能性があります。
除雪車による除雪時に適用される次の条件ステートメントについて考察します。
- 速度が 24 マイル/時以下の場合、除雪車のステータスは Low Speed になります。
- 速度が 36 マイル/時以上の場合、除雪車のステータスは High Speed になります。
- それ以外の場合、除雪車のステータスは Normal Speed になります。
選択肢エレメントを使用するときの検討事項
選択肢エレメントを使用する際は、以下に注意してください。
- 選択肢エレメントごとに 1 つ以上の条件ステートメントを使用する必要があります。
- otherwise 句の定義はオプションであり、デフォルトで無効になっています。
- 各条件は、イベント レコードを 1 つのフィルターまたはプロセッサだけにルーティングする必要があります。
- イベント レコードは、入力、フィルター、またはプロセッサから 1 つの選択肢エレメントのみにルーティングできます。
- イベント レコードを、ある選択肢エレメントから別の選択肢エレメントに順番にルーティングすることはできません。
- 選択肢エレメントの前後にフィルターを配置する代わりに、1 つの選択肢エレメントに論理式を結合することを検討してください。
- イベント レコードを 1 つの条件から複数の出力にルーティングする必要がある場合は、ノー オペレーション プロセッサをターゲットとして使用し、このプロセッサから各出力ノードに分岐します。
- イベント レコードをフィルターを通じて選択肢エレメントに直接ルーティングしたり、選択肢エレメントからフィルターにルーティングしたり、ある選択肢エレメントから 2 番目の選択肢エレメントに直接ルーティングしたりする代わりに、1 つのフィルター式に条件を結合することをお勧めします。
たとえば、以下の最初の図に示したように、フィルターを使用して最初にイベント レコードを属性で特定 (たとえば、Speed > 65) してから、選択肢エレメントを使用して特定の場合を処理 (たとえば、VehicleType = Car、VehicleType = Truck、VehicleType = Van) する代わりに、次の 2 つの図に示したように、1 つの選択肢エレメントに論理条件を結合 (たとえば、Speed > 65 AND VehicleType = Car) することをお勧めします。
ジオイベント サービスへの選択肢エレメントの追加
ジオイベント サービスに選択肢エレメントを追加して構成するには、次の手順を実行します。
- GeoEvent Manager のサービス デザイナーで、[選択肢] エレメントを [新しいエレメント] リストからキャンバス上にドラッグします。
- 新しい選択肢エレメントの [名前] を入力します。
選択肢エレメントでは、1 つ以上の条件ステートメントを指定した順序でイベント データに適用できます。 各条件ステートメントには一意の名前が付けられます。この名前は、条件ステートメント自体とともに、条件ステートメントがイベント データを評価する順番を示す番号 (1 から始まる) を識別します。
- [追加] をクリックして、条件ステートメントを追加します。
- [選択肢プロパティ] ウィンドウで、次の手順に従って when 句を追加します。
- 条件ステートメントの [名前] を入力します。
- [条件式の追加] をクリックし、when 句を追加して構成します。
- もう一度 [条件式の追加] をクリックし、さらに when 句を追加して構成します。
- [OK] をクリックして、条件ステートメントを保存します。
- 上述のステップ 3 と 4 を繰り返して、必要に応じて条件ステートメントを追加します。
- 必要に応じて、[Otherwise] チェックボックスをオンにして、otherwise ルートを定義します。
[Otherwise] チェックボックスをオンにすると、otherwise ルートが有効になります。 when 句によって定義された条件を満たさないすべてのイベントは、otherwise ルートに移動されます。 [Otherwise] チェックボックスをオフにした場合、定義された when 句を満たしていないイベント レコードがすべて削除されます。
- [OK] をクリックして選択肢エレメントを保存し、サービス デザイナーに追加します。
- 新しい選択肢エレメントをジオイベント サービスの他のエレメントに接続します。
選択肢エレメントの編集
[選択肢] ウィンドウには、構成済みの条件ステートメントを確認、編集、削除、順序変更するためのオプションがあります。
- 条件ステートメントに関連付けられた when 句を表示するには、 にポインターを合わせます。
- 条件ステートメントの when 句を開いて編集するには、[編集] ボタン を使用します。
- 条件ステートメントを削除するには、[削除] ボタン を使用します。
- 条件ステートメントがイベント データを評価する順番を変更するには、[順序変更] ボタン を使用します。
when 句でのフィルター式の使用
when 句では、各種フィルター式を使用してイベント データを評価することができます。 各種のフィルタリング オプションの詳細については、次の参考資料をご参照ください。