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