EventProcessorUtilOOB – Scoped

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 4 Minuten Lesedauer
  • Die EventProcessorUtilOOB -Skripteinbindung stellt Methoden zum Erstellen und Veröffentlichen von Events im konfigurierten Nachrichten-Broker bereit.

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

    Diese Skripteinbindung wird im Namespace sn_api_notif_mgmt ausgeführt.

    EventProcessorUtilOOB – buildandPublishEvent(Object inboundEventPayloadRecord, String eventId)

    Erstellt eine TMF688-konforme Nutzlast basierend auf den übergebenen Informationen und veröffentlicht das Event auf 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 zentrale Dienstprogrammmethode der Warteschlangenverwaltung. Sie sollten diese Methode nicht überschreiben müssen, es sei denn, Sie planen, das zugrunde liegende Benachrichtigungs-Framework neu zu gestalten.
    Tabelle : 1. Parameter
    Name Typ Beschreibung
    inboundEventPayloadRecord Objekt Informationen, die dem Event zugeordnet sind. Das Format dieser Nutzlast hängt vom Event-Typ ab. In der Basisimplementierung sind dies die Glide-Datensatzdaten des zugeordneten Events im JSON-Format.
    eventId Zeichenfolge Eindeutige ID des zu veröffentlichenden Ereignisses, z. B. eine GUID.
    Tabelle : 2. Ergebnisse
    Typ Beschreibung
    tmfEventPayload TMF688-konforme Event-Nutzlast, die für das Event erstellt wurde. Eine Beschreibung des Standardformats dieser Event-Nutzlast finden Sie im TMF688 Event Management API-Benutzerhandbuch.

    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 Roh-Event-Objekt in ein TMF-konformes Event-Objekt, indem ein Nutzlastgenerator basierend auf dem Event-Typ aufgerufen wird.

    Sie müssen diese Methode überschreiben, wenn Ihre Implementierung eine der folgenden Aktionen ausführt:
    • Ändert die vorhandene Event-Verarbeitung.
    • Fügt einen neuen Ereignistyp hinzu. Sie müssen den Ereignistyp und den zugehörigen Nutzlastgenerator hinzufügen.
    • Fügt ein neues Objekt im Benachrichtigungs-Framework für Produzenten-Events hinzu.

    Möglicherweise müssen Sie auch die Methoden in der Skripteinbindung TroubleTicketNotificationUtil überschreiben, um der zurückgegebenen TMF-konformen Nutzlast Attribute hinzuzufügen oder die Standardverarbeitung der Nutzlast zu ändern.

    Weitere Informationen finden Sie unter Konfigurieren Sie Problemticketbenachrichtigungen mit dem Producer Event Notification Framework.

    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. Datensätze der eingehenden Warteschlange werden durch Business Rules erstellt, z. B. „Trouble Ticket Attribute Change Event“, das der Incident-Tabelle [Incident] zugeordnet ist.

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

    eventType Zeichenfolge Event-Typ Dieser Wert gibt den Typ der Event-Daten an, die in der Nutzlast eventSnapshot übergeben werden. Die übergebene Nutzlast wird basierend auf diesem Event-Typ verarbeitet. Der Event-Typ wird im Datensatz der eingehenden Warteschlange von der zugeordneten Geschäftsregel in der zugehörigen Tabelle gestempelt. Jeder Event-Typ verfügt über eine eigene Event-Nutzlaststruktur. Beispiel:
    {
      "eventId":"dc2003c2c3bb3550054e20bdc0013136",
      "@type":"Troubleticket",
      "eventType":"TroubleTicketCreateEvent",
      "event":{
        "troubleTicket":{
          "short_description":"Test payload",
          "severity":3,
          "ticketType":"incident"
        }
      }
    }

    Standardwerte für Problemticket-Ereignistypen sind im Parameter EVENT_TYPES in der Skripteinbindung sn_api_notif_mgmt.Constants definiert.

    eventId Zeichenfolge Eindeutiger Identifier des zu konvertierenden Events.
    Tabelle : 4. Ergebnisse
    Typ Beschreibung
    tmfEventPayload Event-Nutzlast im TMF-konformen Format. Um den Transformationsprozess des übergebenen Objekts eventSnapshot in die TMF-konforme Nutzlast anzuzeigen, überprüfen Sie den Code in der Skripteinbindung TroubleTicketNotificationUtilOOB.

    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-Case-Anweisungen, die von dieser Methode verwendet werden, um zu bestimmen, wie die übergebene Event-Nutzlast basierend auf dem Parameter eventType transformiert wird. Wenn Sie Ihrer Implementierung weitere Event-Typen hinzufügen, müssen Sie diese Methode überschreiben und die -Verarbeitung für den neuen Event-Typ einbeziehen.

    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 – veröffentlichenMessageToHermesKafka(Object tmfEventPayload)

    Instantiiert die HermesEventPublisher -Klasse und veröffentlicht die übergebene Event-Nutzlast im Hermes Kafka-Nachrichten-Broker.

    Tabelle : 5. Parameter
    Name Typ Beschreibung
    tmfEventPayload Objekt TMF688-konforme Event-Nutzlast, die für das Event erstellt wurde. Eine Beschreibung des Standardformats dieser Event-Nutzlast finden Sie im TMF688 Event Management API-Benutzerhandbuch.
    Tabelle : 6. Ergebnisse
    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;
    },