Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

アラート・プロセッサの定義

システム・アラートとユーザ生成アラートは、Ensemble プロダクションの問題をユーザに通知する手段を提供します。アラート・プロセッサは、該当するユーザに電子メール、携帯電話、またはその他のメカニズムを介して修正すべき問題を通知するビジネス・ホストです。多くの場合、アラート・プロセッサはカスタム・コードを作成することなく定義できます。アラート・プロセッサをプロダクションへ追加する方法の詳細は、"アラートの監視" を参照してください。この章では、アラート・プロセッサをカスタム・コードで作成する方法を説明します。以下のトピックについて説明します。

背景情報

ビジネス・ホストはアラートを送信できます。“Ensemble のプログラミング” の章の “アラートの生成” を参照してください。Ensemble は、プロダクション内の設定値に応じて、特定の事象の発生時に自動的にアラートを送信することもできます。プロダクションに Ens.Alert という名前のビジネス・ホストが含まれている場合は、Ensemble は自動的にそのビジネス・ホストに特殊な要求メッセージ (Ens.AlertRequestOpens in a new tab) を送信します。このビジネス・ホストがプロダクションのアラート・プロセッサです。1 つのプロダクションにこのプロセッサを 2 つ以上含めることはできません。

これにより、アラート・プロセッサは、このメッセージ内の情報を使用して接続先を決定できます。一般的なシナリオをいくつか紹介します。

すべてのケースにおいて、Ensemble は、アラート・タイプの Ensemble イベント・ログに情報を書き込みます。

Note:

Ens.Alert は、アラート・プロセッサとして機能するビジネス・ホストの必須名です。これとクラス名を混同しないでください。アラート・プロセッサは任意のクラス名を使用できます。

簡単な電子メール・アラート・プロセッサの使用

すべてのアラートを電子メール経由で送信することが望ましい場合は、Ens.Alert コンポーネントに EnsLib.EMail.AlertOperationOpens in a new tab クラスを使用します。この特殊なビジネス・オペレーションは以下の処理を実行します。

  • ADAPTER パラメータは EnsLib.EMail.OutboundAdapterOpens in a new tab として指定されます。

    このアダプタは、電子メールの受信者だけでなく、SMTP 電子メール・サーバを使用するために必要な情報も指定する設定を提供します。

    また、電子メールを構成されたサーバ経由で送信するヘルパー・メソッドも提供します。

  • %OnProcessInput() メソッドが実装されます。このメソッドは入力として Ens.AlertRequestOpens in a new tab を期待しています。

    また、このメソッドは、以下の処理を実行します。

    1. Ens.AlertRequestOpens in a new tab からアラート・テキストを読み取ります。

    2. 電子メール・メッセージ (%Net.MailMessageOpens in a new tab のインスタンス) を作成して、それにアラート・テキストを書き込みます。

    3. すべての構成された受信者に電子メール・メッセージを送信します。

このクラスを変更せずに使用することもできます。または、そのサブクラスを作成して使用することもできます。

簡単な送信アダプタ・アラート・プロセッサの使用

すべてのアラートを同じ出力メカニズムを介して処理できるが、EnsLib.EMail.AlertOperationOpens in a new tab を使用できない場合は、次のように Ens.Alert というビジネス・オペレーションを作成します。

  • ADAPTER パラメータを適切なアダプタ・クラスの名前として指定します。

  • %OnProcessInput() メソッドを実装します。このメソッドのシグニチャは次のようにする必要があります。

    Method OnMessage(pRequest As Ens.AlertRequest, Output pResponse As Ens.Response) As %Status
    

    実装内で、必要に応じて、アダプタのメソッドを呼び出します。

    ビジネス・オペレーションの定義” と "アダプタのドキュメント" を参照してください。

電子メール・アドレスや電話番号などの詳細情報を構成できるようにクラスを定義することをお勧めします。前述した “設定の追加と削除” を参照してください。

ルーティング・アラート・プロセッサの使用

ユーザに複数の出力メカニズムを介して連絡する必要がある場合は、アラート・プロセッサを、Ens.AlertRequestOpens in a new tab メッセージのルーティング方法を決定するビジネス・プロセスにする必要があります。この場合は、プロダクションに出力メカニズムごとに 1 つずつの新しいビジネス・オペレーションを追加する必要があり、アラート・プロセッサがメッセージをそれらのビジネス・オペレーションに転送します。

ルーティング・プロセスとしてのアラート・プロセッサの定義

アラート・プロセッサをルーティング・プロセスとして定義するには、Ens.AlertRequestOpens in a new tab メッセージを受信可能なビジネス・プロセス・クラスを作成します。

このビジネス・プロセスはこれらのメッセージを調べて、アラートの内容と組み込まれたロジックに応じて異なるビジネス・オペレーションに転送します。

作成するロジックでは、以下の要因が考慮されている必要があります。

  • ユーザの種類ごとに異なる要件

  • 時刻に応じて異なる要件

  • 組織の問題解決のためのポリシーと手順

EnsLib.MsgRouter.RoutingEngineOpens in a new tab クラスを Ens.Alert のルーティング・プロセスとして使用できます。このクラスには、[ビジネスルール名] という設定があります。この設定をルーティング・ルール・セットの名前として指定した場合は、このビジネス・ホストがルール・セット内のロジックを使用して、受け取ったすべてのメッセージを転送します。

ビジネス・オペレーションの定義

簡単な電子メール・アラート・プロセッサの使用” または “簡単な送信アダプタ・アラート・プロセッサの使用” の説明に従って、必要なビジネス・オペレーションのそれぞれを定義できます。

アラート管理へのカスタム・コードの追加

アラート管理によって、ユーザへのアラートの割り当て、アラートのステータスの追跡、およびアラートの解決の進捗を管理できます。アラート管理の概要は、アラート管理コンポーネントの構成方法と、アラート管理のルールおよびデータ変換の方法について説明する "アラート管理の構成" を参照してください。この節では、アラート管理コンポーネントへのカスタム・コードの追加方法について説明しています。

アラート管理フレームワークには、以下のアーキテクチャが備わっています。

  • 管理対象アラートにはそのライフサイクルに渡って 1 つの永続オブジェクトが使用される。

  • アラート・マネージャ、通知マネージャ、およびアラート・モニタの全体的な内部構造は同一。これらのコンポーネントの 1 つが呼び出されると、3 つのフェーズでその機能が実行されます。

    1. 最初にコンポーネントは、OnProcess メソッドがサブクラスによって実装されている場合に、このメソッドを実行します。このメソッドを実装することで、コンポーネントにカスタム・コードを含めることができます。OnProcess メソッドが処理が完了したことを示すフラグを設定すると、コンポーネントが終了します。

    2. 次に、コンポーネントは、コンポーネントのアクションを制御するためのパラメータを設定するルールを評価するか、通知マネージャの場合はデータ変換を評価します。

    3. 最後に、コンポーネントは、ルールによって設定されたパラメータか、またはコンポーネントの構成によって設定されたデフォルトを基にアクションを実行します。

  • アラート通知オペレーションは、メッセージの形式を指定し、その宛先に転送する単純なコンポーネントです。

アラート・マネージャ

アラート・マネージャは Ens.Alerting.AlertManagerOpens in a new tab クラスを持ち、Ens.Alert と命名される必要があります。アラート・マネージャは、すべてのプロダクション・コンポーネントからアラートを受信します。アラート・マネージャは、ルールで指定されている条件に基づいてアラートを管理対象アラートに昇格できます。アラート・マネージャは管理対象アラートを通知マネージャに送信します。

アラート・マネージャは 3 つのフェーズで実行されます。

  1. コンポーネントのクラスが OnCreateManagedAlert() メソッドをオーバーライドしている場合は、オーバーライドを実行します。アラート要求を処理するカスタム・コードを使用して、このメソッドで管理対象アラートを作成することができます。ベースとなるアラート・マネージャ・コードで、ルールを評価すること、および管理対象アラートを作成して通知マネージャに送信することを希望しない場合は、tProcessingComplete パラメータを 1 に設定する必要があります。この場合、アラート・マネージャではさらなる処理は実行されません。

  2. CreateManagedAlertRule ルールを評価します。このルールでは、tAlertContext へアクセスできます。真の値 (1) が返された場合、アラート・マネージャは管理対象アラートを作成します。偽が返された場合、アラート・マネージャは管理対象アラートを作成せず、アラートはログに書き込まれるだけです。アラートのコンテキストでは、以下へのアクセスが可能です。

    • 受信アラート

    • アラートを発信したコンポーネントに対して構成されたアラート・グループ

    • アラートを発信したコンポーネントに対して構成されたビジネス・パートナー

    • アラートの所有者

    ルールは、0 を返すことでアラートの管理対象アラートへの昇格を抑制できます。また、1 を返すことでアラートを管理対象アラートへ昇格させることができます。

  3. ルールが、tCreateAler を 1 に設定した場合、アラート・マネージャは管理対象アラートを作成します。また、定義済みの CreateManagedAlertRule ルールがない場合、アラート・マネージャはデフォルトのアクションを実行し、管理対象アラートを作成します。アラート・マネージャは、OnCreateManagedAlert() メソッドを呼び出すことで管理対象アラートを作成します。このメソッドは、Ens.Alerting.AlertManagerOpens in a new tab を拡張するクラスによってオーバーライド可能です。OnCreateManagedAlert() のデフォルトの実装では、管理対象アラートにプロダクション名が設定され、現在の所有者は値を空の文字列にすることで割り当てられません。アラート・マネージャが管理対象アラートを作成した場合、通知マネージャに送信します。

通知マネージャ

通知マネージャには、Ens.Alerting.NotificationManagerOpens in a new tab クラスがあり、通知先のグループと使用する通知オペレーションを決定する役割があります。

通知マネージャは 3 つのフェーズで実行されます。

  1. コンポーネントのクラスが OnProcessNotificationRequest() メソッドをオーバーライドしている場合は、オーバーライドを実行します。オーバーライドが pProcessingComplete パラメータを 1 に設定する場合、通知マネージャは変換を評価せず、デフォルトのアクションを適用します。

  2. データ変換が構成されている場合には、実行します。データ変換の詳細は、"通知マネージャの追加とそのデータ変換の定義" を参照してください。

  3. 変換によって target.Notify プロパティが 1 に設定された場合、またはデータ変換がない場合、通知マネージャは各ターゲットのリストにあるコンポーネントにアラート通知を送信し、アドレスのリストをターゲットに渡します。

通知マネージャは、管理対象アラート・オブジェクトを送受信せずに、永続管理対象アラート・オブジェクトへの参照を含んだ通知要求オブジェクトを使用します。

アラート・モニタ

アラート・モニタは、現在の時刻が NextActionTime の値を超えているすべての開かれた管理対象アラートをクエリします。以下の SQL クエリを発行します。

"SELECT ID FROM Ens_Alerting.ManagedAlert WHERE IsOpen = 1 AND NextActionTime <= ?"

ここで、$$$timeUTC によって返される現在の時刻はパラメータとして指定されます。

アラート・モニタは返された各管理対象アラート・メッセージを個別に処理します。各管理対象アラートは、3 つのフェーズで処理されます。

  1. コンポーネントのクラスが OnProcessOverdueAlert() メソッドをオーバーライドしている場合は、オーバーライドを実行します。アラートを処理するカスタム・コードを使用することができます。ベースとなるアラート・モニタ・コードで、ルールを評価すること、および管理対象アラートを更新して通知マネージャに送信することを希望しない場合は、tProcessingComplete パラメータを 1 に設定する必要があります。この場合、アラート・モニタではさらなる処理は実行されません。

  2. OverdueAlertRule ルールを評価します。このルールでは、tOverdueContext へアクセスできます。期限切れのコンテキストでは、以下へのアクセスが可能です。

    • 受信アラート

    • 現在の時刻

    • NewNextActionTime

    • NewEscalationLevel

    このルールは、0 を返すことでリマインダの送信を抑制するか、NewNextActionTime を設定することで管理対象アラートがアラート・モニタによって検出される次の時刻を設定するか、または NewEscalationLevel を設定することで管理対象アラートを昇格または解除できます。

    アラート・ルールのコンテキスト、およびアラート・モニタによる結果の処理方法はオーバーライドできます。

    • GetOnOverdueAlertContext() メソッドをオーバーライドすることで、アラート・ルールのコンテキストに情報を追加できます。

    • OnProcessOverdueRuleResult() メソッドをオーバーライドすることで、アラート・モニタによるルールの結果の処理方法をオーバーライドできます。オーバーライドしない場合は、このメソッドをベース・クラスで実行します。OnProcessOverdueRuleResult() メソッドは管理対象アラートの昇格を実行します。このオーバーライドでは、管理対象アラート、tOverdueContext、tSendNotification、および tNotificationType へアクセスできます。ベース・クラスの実装の機能を再現するか、##super() を呼び出すことでその機能を呼び出す必要があることに注意してください。

  3. ルールが 1 を返す場合、アラート・マネージャは管理対象アラートを通知マネージャに送信します。

通知オペレーション

通知オペレーションはユーザのグループに通知を送信します。複数種類のメカニズムを使用して通知を送信する場合は、転送方法ごとに独立した通知オペレーションを使用する必要があります。

FeedbackOpens in a new tab