EreignisprozessorUtilOOB – Umfang

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 4 Minuten Lesedauer
  • Die EreignisprozessorUtilOOB Die Skripteinbindung bietet Methoden zum Erstellen und Veröffentlichen von Ereignissen im konfigurierten Nachrichten-Broker.

    Wenn Sie die Standardfunktionalität dieser Skripteinbindung ändern möchten, müssen Sie diese Methoden in überschreiben EreignisprozessorUtil Skripteinbindung. Sie müssen über die Administratorrolle verfügen, um diese Skripteinbindung zu ändern.

    Diese Skripteinbindung wird in ausgeführt sn_api_notif_mgmt Namespace.

    EventProcessorUtilOOB – constructandPublishEvent(Object inbound EventPayloadRecord, Zeichenfolge eventId)

    Erstellt eine TMF688-konforme Nutzlast basierend auf den übergebenen Informationen und veröffentlicht das Ereignis in der konfigurierten Veröffentlichungsplattform.

    Die standardmäßige Veröffentlichungsplattform ist in der Systemeigenschaft sn_api_notif_mgmt.Publisher_message_Bus_config definiert.

    Hinweis:
    Diese Methode ist eine Kerndienstprogrammmethode der Warteschlangenverwaltung. Sie sollten diese Methode nicht überschreiben müssen, es sei denn, Sie planen, das zugrunde liegende Benachrichtigungs-Framework neu zu entwerfen.
    Tabelle : 1. Parameter
    Name Typ Beschreibung
    InboEventPayloadRecord Objekt Informationen, die dem Ereignis zugeordnet sind. Das Format dieser Nutzlast hängt vom Ereignistyp ab. In der Basisimplementierung sind dies die Glide-Datensatzdaten des zugehörigen Ereignisses im JSON-Format.
    eventId Zeichenfolge Eindeutige ID des zu veröffentlichenden Ereignisses, z. B. eine GUID.
    Tabelle : 2. Rückgaben
    Typ Beschreibung
    TmfEventPayload TMF688-konforme Ereignisnutzlast, die für das Ereignis erstellt wurde. Eine Beschreibung des Standardformats dieser Ereignisnutzlast finden Sie unter TMF688 Ereignismanagement-API – Anwenderhandbuch .

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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(Object eventSnapshot, String eventType, String eventId)

    Konvertiert das übergebene Rohereignisobjekt in ein TMF-konformes Ereignisobjekt, indem ein Nutzlastgenerator basierend auf dem Ereignistyp aufgerufen wird.

    Sie müssen diese Methode überschreiben, wenn Ihre Implementierung eine der folgenden Funktionen erfüllt:
    • Ändert die vorhandene Ereignisverarbeitung.
    • Fügt einen neuen Ereignistyp hinzu. Sie müssen den Ereignistyp und den zugehörigen Nutzlastgenerator hinzufügen.
    • Fügt ein neues Objekt im Framework für Erstellererereignisbenachrichtigungen hinzu.

    Möglicherweise müssen Sie auch die Methoden in überschreiben TroubleTicketNotificationUtil Skripteinbindung zum Hinzufügen von Attributen zur zurückgegebenen TMF-konformen Nutzlast oder zum Ändern der Standardverarbeitung der Nutzlast.

    Weitere Informationen finden Sie unter Konfigurieren Sie Problemticketbenachrichtigungen mit dem Framework für Ereignisbenachrichtigungen des Erstellers.

    Tabelle : 3. Parameter
    Name Typ Beschreibung
    EventSnapshot Objekt Rohdaten, die in ein TMF-konformes Objekt umgewandelt werden sollen.

    Sie können dieses Objekt aus dem Nutzlastfeld der Tabelle „eingehende Warteschlange“ [sn_tmt_Core_inbound_Queue] abrufen. Eingehende Warteschlangendatensätze werden durch Geschäftsregeln erstellt, z. B. durch das Change-Ereignis für das Trouble Ticket-Attribut, das der Incident-Tabelle [Incident] zugeordnet ist.

    Das Format des Ereignis-Snapshots wird durch die Geschäftsregel definiert, die das Ereignis ursprünglich in die eingehende Warteschlange verschoben hat.

    eventType Zeichenfolge Event-Typ Dieser Wert gibt den Typ der Ereignisdaten an, die in übergeben werden eventSnapshotNutzlast. Die übergebene Nutzlast wird basierend auf diesem Ereignistyp verarbeitet. Der Ereignistyp wird im Datensatz der eingehenden Warteschlange durch die zugehörige Business-Regel in der zugehörigen Tabelle gestempelt. Jeder Ereignistyp hat eine eigene Ereignisnutzlaststruktur. Zum Beispiel:
    {
      "eventId":"dc2003c2c3bb3550054e20bdc0013136",
      "@type":"Troubleticket",
      "eventType":"TroubleTicketCreateEvent",
      "event":{
        "troubleTicket":{
          "short_description":"Test payload",
          "severity":3,
          "ticketType":"incident"
        }
      }
    }

    Standardwerte für Problemticket-Ereignistypen sind in definiert EVENT_TYPESParameter in sn_api_notif_mgmt.Konstanten Skripteinbindung.

    eventId Zeichenfolge Eindeutiger Bezeichner des zu konvertierenden Ereignisses.
    Tabelle : 4. Rückgaben
    Typ Beschreibung
    TmfEventPayload Ereignisnutzlast im TMF-konformen Format. Um den Transformationsprozess der bestandenen anzuzeigen eventSnapshotObjekt für die TMF-konforme Nutzlast, überprüfen Sie den Code in TroubleTicketNotificationUtilOOB Skripteinbindung.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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;
    },

    Das folgende Codebeispiel zeigt die Switch-Fallanweisungen, die von dieser Methode verwendet werden, um zu bestimmen, wie die übergebene Ereignisnutzlast basierend auf transformiert werden soll eventTypeParameter. Wenn Sie Ihrer Implementierung andere Ereignistypen hinzufügen, müssen Sie diese Methode überschreiben und die Verarbeitung für den neuen Ereignistyp einschließen.

    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(Object tmfEventPayload)

    Instanziiert HermesEventPublisher Klassifiziert und veröffentlicht die übergebene Ereignisnutzlast im Hermes Kafka-Nachrichten-Broker.

    Tabelle : 5. Parameter
    Name Typ Beschreibung
    TmfEventPayload Objekt TMF688-konforme Ereignisnutzlast, die für das Ereignis erstellt wurde. Eine Beschreibung des Standardformats dieser Ereignisnutzlast finden Sie unter TMF688 Ereignismanagement-API – Anwenderhandbuch .
    Tabelle : 6. Rückgaben
    Typ Beschreibung
    Keine

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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;
    },