EventProcessorUtilOOB: スコープ指定

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:14分
  • EventProcessorUtilOOB スクリプトインクルードは、構成されたメッセージブローカーでイベントを作成して公開するためのメソッドを提供します。

    このスクリプトインクルードのデフォルト機能を変更する場合は、 EventProcessorUtil スクリプトインクルードでこれらのメソッドを上書きする必要があります。このスクリプトインクルードを変更するには、admin ロールが必要です。

    このスクリプトインクルードは 、sn_api_notif_mgmt 名前空間で実行されます。

    EventProcessorUtilOOB:constructandPublishEvent(オブジェクト inboundEventPayloadRecord、文字列 eventId)

    渡された情報に基づいて TMF688 準拠のペイロードを構築し、構成された公開プラットフォームにイベントを公開します。

    デフォルトの公開プラットフォームは、sn_api_notif_mgmt.publisher_message_bus_config システムプロパティで定義されます。

    注:
    この方法は、キュー管理のコアユーティリティメソッドです。基になる通知フレームワークを再設計する予定がない限り、このメソッドをオーバーライドする必要はありません。
    表 : 1. パラメーター
    名前 タイプ 説明
    inboundEventPayloadRecord オブジェクト イベントに関連付けられた情報。このペイロードの形式は、イベントタイプによって異なります。基本実装では、これは JSON 形式の関連するイベントの Glide レコードデータです。
    eventId 文字列 公開するイベントの一意の ID (GUID など)。
    表 : 2. 戻り値
    タイプ 説明
    TMFEVENT ペイロード イベント用に作成された TMF688 準拠のイベントペイロード。このイベントペイロードのデフォルト形式の説明については、『 TMF688 Event Management API User Guide』を参照してください。

    次のコード例は、このメソッドを呼び出す方法を示しています。

    processIndividualEventRecord: function(inboundQueueGr, node_id) {
      var isError = false;
      var errorMessage;
      try {
        new EventProcessorUtil().constructandPublishEvent(JSON.parse(inboundQueueGr.getValue('payload')), inboundQueueGr.getValue('record_id'));
      } catch (ex) {
        this._logger.logErr("Event processing failed " + ex);
        isError = true;
        errorMessage = JSON.stringify(ex);
      }
    
      // Update the inbound queue record based on processing
      var inboundQueueObj = new sn_tmt_core.BaseObject();
      if (isError == true) {
        inboundQueueObj.setValue('state', sn_tmt_core.Constants.INBOUND_QUEUE_STATE.ERROR);
        inboundQueueObj.setValue('error_message', errorMessage);
      } else {
        inboundQueueObj.setValue('state', sn_tmt_core.Constants.INBOUND_QUEUE_STATE.COMPLETED);
      }
        var inboundQueue = new sn_tmt_core.InboundQueue(inboundQueueGr, false);
        inboundQueue.updateInboundQueueRecord(inboundQueueObj);
    },

    EventProcessorUtilOOB:fetchEventHandlerAndCreateTMFEvent(オブジェクト eventSnapshot、文字列 eventType、文字列 eventId)

    イベントタイプに基づいてペイロードジェネレーターを呼び出すことで、渡された生イベントオブジェクトを TMF 準拠のイベントオブジェクトに変換します。

    実装で次のいずれかを行う場合は、このメソッドをオーバーライドする必要があります。
    • 既存のイベント処理を変更します。
    • 新しいイベントタイプを追加します。イベントタイプとそれに関連付けられたペイロードジェネレーターを追加する必要があります。
    • プロデューサーイベント通知フレームワークに新しいオブジェクトを追加します。

    また、 TroubleTicketNotificationUtil スクリプトインクルード内のメソッドを上書きして、返された TMF 準拠のペイロードに属性を追加したり、ペイロードのデフォルト処理を変更したりする必要が生じる場合もあります。

    詳細については、「プロデューサーイベント通知フレームワークを使用したトラブルチケット通知の構成」を参照してください。

    表 : 3. パラメーター
    名前 タイプ 説明
    イベントスナップショット オブジェクト TMF 準拠のオブジェクトに変換する生データ。

    このオブジェクトは、受信キュー [sn_tmt_core_inbound_queue] テーブルのペイロードフィールドから取得できます。受信キューレコードは、インシデント [incident] テーブルに関連付けられたトラブルチケット属性変更イベントなどのビジネスルールによって作成されます。

    イベントスナップショットの形式は、最初にイベントを受信キューにプッシュしたビジネスルールによって定義されます。

    eventType 文字列 イベントタイプ。この値は、 eventSnapshot ペイロードで渡されるイベントデータのタイプを指定します。渡されたペイロードは、このイベントタイプに基づいて処理されます。イベントタイプは、関連するテーブルの関連するビジネスルールによって受信キューレコードにスタンプされます。各イベントタイプには、独自のイベントペイロード構造があります。たとえば、次のようになります。
    {
      "eventId":"dc2003c2c3bb3550054e20bdc0013136",
      "@type":"Troubleticket",
      "eventType":"TroubleTicketCreateEvent",
      "event":{
        "troubleTicket":{
          "short_description":"Test payload",
          "severity":3,
          "ticketType":"incident"
        }
      }
    }

    トラブルチケットイベントタイプのデフォルト値は、sn_api_notif_mgmtの EVENT_TYPES パラメーターで定義されます 。定数 スクリプトインクルード。

    eventId 文字列 変換するイベントの一意の識別子。
    表 : 4. 戻り値
    タイプ 説明
    TMFEVENT ペイロード TMF 準拠形式のイベントペイロード。渡された eventSnapshot オブジェクトが TMF 準拠のペイロードに変換するプロセスを確認するには、 TroubleTicketNotificationUtilOOB スクリプトインクルードのコードを確認します。

    次のコード例は、このメソッドを呼び出す方法を示しています。

    constructandPublishEvent: function(inboundEventPayloadRecord, eventId) {
      if (gs.nil(inboundEventPayloadRecord)) return;
      var tmfEventPayload = this.fetchEventHandlerAndCreateTMFEvent(inboundEventPayloadRecord.eventSnapshot, inboundEventPayloadRecord.eventType, eventId);
    
      this._logger.debug("Event payload generated for the event id " + eventId + " is " + JSON.stringify(tmfEventPayload));
    
      if (gs.getProperty(Constants.EVENT_PUBLISH_MESSAGE_BUS_CONFIGURATION) == Constants.EVENT_PUBLISH_MESSAGE_BUS_CONFIGURATION_VALUES.OPEN_MESSAGE_BUS) {
        // Publish event in custom message bus
          this.publishEventToOpenMessageBus(tmfEventPayload);
    
      } else if (gs.getProperty(Constants.EVENT_PUBLISH_MESSAGE_BUS_CONFIGURATION) == Constants.EVENT_PUBLISH_MESSAGE_BUS_CONFIGURATION_VALUES.HERMES) {
        // Publish event in hermes kafka
        try {
          this.publishMessageToHermesKafka(tmfEventPayload);
        } catch (ex) {
          this._logger.logErr("Publishing message to Hermes Kafka Failed, error is: " + ex);
        }
      } else if (gs.getProperty(Constants.EVENT_PUBLISH_MESSAGE_BUS_CONFIGURATION) == Constants.EVENT_PUBLISH_MESSAGE_BUS_CONFIGURATION_VALUES.BOTH_MESSAGE_BUS_CONFIGURATIONS) {
        // Publish event in both custom message bus and hermes kafka
        this.publishEventToOpenMessageBus(tmfEventPayload);
        try {
          this.publishMessageToHermesKafka(tmfEventPayload);
        } catch (ex) {
          this._logger.logErr("Publishing message to Hermes Kafka Failed, error is: " + ex);
        }
      }
      return tmfEventPayload;
    },

    次のコード例は、渡されたイベントペイロードを eventType パラメーターに基づいて変換する方法を決定するために、このメソッドで使用される switch case ステートメントを示しています。実装に他のイベントタイプを追加する場合は、このメソッドをオーバーライドして、新しいイベントタイプの処理を含める必要があります。

    fetchEventHandlerAndCreateTMFEvent: function(eventSnapshot, eventType, eventId) {
    var eventPayload;
    switch (eventType) {
      case Constants.EVENT_TYPES.TROUBLE_TICKET_STATUS_CHANGE:
        eventPayload = new sn_ind_tsm_sdwan.TroubleTicketNotificationUtil().generateTroubleTicketStatusChangePayload(eventSnapshot, eventType, eventId);
        break;
    
      // New event type in trouble ticket
      case ‘troubleTicketPriorityChange’
        eventPayload = new sn_ind_tsm_sdwan.TroubleTicketNotificationUtil().generateTroubleTicketAttributeChangePayload(eventSnapshot, eventType, eventId);
        break;
    
      // New event type of object other than trouble ticket
      case ‘domainOrderStatusChange’
        eventPayload = new sn_ind_tmt_orm().domainOrderNotification().generatedomainOrderStatusChangePayoad(eventSnapshot, eventType, eventId);
        break;
    
      default:
        this._logger.debug("Event with id " + eventId + " could not find the matching payload generator");
        eventPayload = null;
      }
    return eventPayload;
    },

    EventProcessorUtilOOB:publishMessageToHermesKafka(オブジェクト tmfEventPayload)

    HermesEventPublisher クラスをインスタンス化し、渡されたイベントペイロードを Hermes Kafka メッセージブローカーに公開します。

    表 : 5. パラメーター
    名前 タイプ 説明
    TMFEVENT ペイロード オブジェクト イベント用に作成された TMF688 準拠のイベントペイロード。このイベントペイロードのデフォルト形式の説明については、『 TMF688 Event Management API User Guide』を参照してください。
    表 : 6. 戻り値
    タイプ 説明
    なし

    次のコード例は、このメソッドを呼び出す方法を示しています。

    constructandPublishEvent: function(inboundEventPayloadRecord, eventId) {
      if (gs.nil(inboundEventPayloadRecord)) return;
      var tmfEventPayload = this.fetchEventHandlerAndCreateTMFEvent(inboundEventPayloadRecord.eventSnapshot, inboundEventPayloadRecord.eventType, eventId);
    
      this._logger.debug("Event payload generated for the event id " + eventId + " is " + JSON.stringify(tmfEventPayload));
    
      if (gs.getProperty(Constants.EVENT_PUBLISH_MESSAGE_BUS_CONFIGURATION) == Constants.EVENT_PUBLISH_MESSAGE_BUS_CONFIGURATION_VALUES.OPEN_MESSAGE_BUS) {
        // Publish event in open message bus
        this.publishEventToOpenMessageBus(tmfEventPayload);
    
      } else if (gs.getProperty(Constants.EVENT_PUBLISH_MESSAGE_BUS_CONFIGURATION) == Constants.EVENT_PUBLISH_MESSAGE_BUS_CONFIGURATION_VALUES.HERMES) {
        // Publish event in Hermes Kafka
        try {
          this.publishMessageToHermesKafka(tmfEventPayload);
        } catch (ex) {
            this._logger.logErr("Publishing message to Hermes Kafka Failed, error is: " + ex);
        }
      } else if (gs.getProperty(Constants.EVENT_PUBLISH_MESSAGE_BUS_CONFIGURATION) == Constants.EVENT_PUBLISH_MESSAGE_BUS_CONFIGURATION_VALUES.BOTH_MESSAGE_BUS_CONFIGURATIONS) {
        // Publish event in both custom message bus and Hermes Kafka
        this.publishEventToOpenMessageBus(tmfEventPayload);
        try {
          this.publishMessageToHermesKafka(tmfEventPayload);
        } catch (ex) {
          this._logger.logErr("Publishing message to Hermes Kafka Failed, error is: " + ex);
        }
      }
      return tmfEventPayload;
    },