アクティベーター ルールで複数のストリームを結合する方法

この記事では、次の方法について説明します:

  • 複数のイベントストリームからのデータを監視し、アクティベーター ルールを定義してアクションを自動化する
  • アクティベーター モデリング機能を使用して、データ プロパティの平均値、最大値、最小値など、複数の高度な条件を設定します。

Scenario

この例では、マシンの FlowRateVibration を監視することで、ウォーターポンプ (マシン) の正常性を追跡できます。 目標は、マシンの実行中に振動が異常で大量の水 (FlowRate) を移動している場合に、アラートの送信やビジネス プロセスの開始などのアクションを自動的に実行することです。 水ポンプの振動が高い場合は、基になる問題が通知される可能性があります。ただし、FlowRate が重要でない限り、それは予想されます。

データフローを監視するマシンは、2 つのイベントストリームにデータを流します。

  • MachineHeartbeat イベントストリームには、マシンを識別する MachineNumber 列と、マシンが実行されているかどうかを示す MachineRunning 列 (1) が含まれます (0)。 マシンの状態が変化するたびにイベントが生成されます。
  • MachineSensorsReadings イベントストリームには、FlowRate 列と Vibration 列と共に MachineId 列が含まれています。 すべてのマシンは、数秒ごとにセンサーの読み取り値を出力します。

2 つのイベントストリームは、MachineSensorsReadingsMachineIdMachineHeartbeatMachineNumber という異なる列を使用してマシンを識別することに注意してください。 両方の列が同じマシン識別子の値を保持します。

このシナリオでは、次 の条件がすべて 満たされたときにアラートを生成します。

  • 過去 1 時間の最大 振動 数は 18 を超えます。
  • 過去 10 分間の平均 FlowRate は 185 を超えます。
  • 機械が稼働しています。

アクティベータールールは、複数のイベントストリームに基づく複雑な条件をサポートします。 イベント列に基づいて計算プロパティを作成し、ルール条件で結合できます。

このシナリオでは、両方のストリームからフィードする オブジェクト を作成することで、2 つのイベントストリームをまとめます。 イベント ストリームをオブジェクトに追加する場合は、イベント内のどの列がオブジェクトのインスタンスを一意に識別するかを指定します。

Note

Activator では、異なる一意識別子列を使用して同じオブジェクトを識別するイベントストリームの結合がサポートされています。 このシナリオでは、 MachineSensorsReadingsMachineId を 使用し、 MachineHeartbeatMachineNumber を使用し、Activator はそれらを 1 つのオブジェクトに結合します。

次に、average(FlowRate)、max(Vibration) 用の別のプロパティを計算し、 それらを IsRunning プロパティと組み合わせるプロパティを作成します。 ルールを評価するときに、Activator は定義に従ってプロパティ値を計算し、すべてのプロパティの最後の計算値を維持します。 これらの値は、条件を評価するときに使用されます。

アクティベータールールでは、>条件を設定し、 などのオプションのフィルターを追加する必要があります。 条件が満たされると、フィルターも満たされている場合に、ルールが適用されます。

次の図に示すように、条件によってルールが駆動されます。

条件がフィルターとアクションを使用して Activator のルールを駆動する方法を示す図のスクリーンショット。

解決策

  1. 両方のイベントストリームに アクティベーター の宛先を追加します。 両方のイベントストリームで同じ Activator インスタンスが使用されていることを確認します。

    Activator 宛先が追加された MachineHeartbeat イベントストリームのスクリーンショット。

    Activator 送信先が追加された MachineSensorsReadings イベントストリームのスクリーンショット。

    両方のイベントストリームは、同じアクティベーターの宛先で構成されます。

    同じアクティベーターの宛先で構成された両方のイベントストリームのスクリーンショット。

  2. アクティベーター項目を開きます。 これで、オブジェクト内の両方のイベントストリームを結合し、ルールを設定できます。

    結合できる 2 つのイベントストリームを示す Activator 項目のスクリーンショット。

  3. これら 2 つのストリームを結合するには、任意のストリームを選択し、[ 新しいオブジェクト] を選択します。

    イベントストリームを選択し、[新しいオブジェクト] ボタンをクリックしたスクリーンショット。

  4. ルールに必要なオブジェクトと列のインスタンスを識別するために使用する列名を選択し、[ 作成] を選択します。 各イベントの MachineId 列の値は、イベントを生成したマシンを識別するキーです。

    [Build object]\(オブジェクトのビルド\) ペインのスクリーンショット。MachineId が一意の識別子として選択され、関連する列が選択されています。

  5. 別のイベントストリームを選択し、[新しいオブジェクト] を選択し、[ビルド オブジェクト] ウィンドウで [既存のオブジェクトに追加] を選択します。 MachineNumber 列を一意の識別子として選択します。 [割り当て]を選択します。 各ストリームが異なる識別子列を使用している場合でも、2 つのストリームが 1 つのオブジェクトに結合されるようになりました。

    [既存のオブジェクトに追加] オプションが選択され、MachineNumber が一意識別子として選択されている [オブジェクトのビルド] ペインのスクリーンショット。

  6. これで、計算プロパティを定義できます。 過去 10 分間に FlowRate の平均を計算するための属性を作成します。 FlowRate 属性を選択し、[詳細の編集] を選択します。

    FlowRate 属性を選択し、[詳細の編集] をクリックしたスクリーンショット。

  7. [定義] ウィンドウで、[概要の追加] を選択し、[平均] を選択し、ウィンドウ サイズとして 10 分を設定します。 保存 を選択します。

    [概要の追加] オプションと [平均] が選択されている [定義] ペインのスクリーンショット。

    10 分のウィンドウ サイズで構成された平均要約のスクリーンショット。

  8. [Vibration]\(振動属性\) を選択し、[Edit details]\(詳細の編集\) を選択します [定義] ウィンドウで、[概要の追加] を選択し、[最大] を選択し、ウィンドウ サイズとして 1 時間を設定します。 保存 を選択します。

    1時間のウィンドウで「最大集計」に設定されたVibration属性のスクリーンショット。

  9. 次に、ルールを作成します。 [振動]プロパティを選択し、[新しいルール]を選択します。

    Vibration プロパティを選択し、[新しいルール] ボタンをクリックするスクリーンショット。

  10. 定義ペインで、しきい値として 18 の条件を超える増加を設定します。

    [上記の増加] 条件がしきい値 18 に設定されている [定義] ペインのスクリーンショット。

  11. FlowRate プロパティと MachineRunning プロパティのフィルターを追加します。

    FlowRate プロパティと MachineRunning プロパティにフィルターが追加されたルールのスクリーンショット。

  12. 電子メールや Teams メッセージの送信、パイプライン、ノートブック、関数などのビジネス プロセスの実行、Power Automate を使用したコードなしのカスタム アクションの実行など、任意のアクションを選択します。 [保存して開始] を選択します。

    アクションの選択ページのスクリーンショット。通知を送信したり、ビジネス プロセスを実行したりするオプションがあります。

次のステップ

アクティベータールールの詳細については、「アクティベータールールの 作成と管理」を参照してください。