EventProcessorUtilOOB : Bereichsbezogen

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 4 Minuten Lesedauer
  • Die EventProcessorUtilOOB -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 der EventProcessorUtil-Skripteinbindung überschreiben. Sie müssen über die Administratorrolle verfügen, um diese Skripteinbindung ändern zu können.

    Diese Skripteinbindung wird im Namespace sn_api_notif_mgmt ausgeführt.

    EventProcessorUtilOOB - buildandPublishEvent(Object inboundEventPayloadRecord, Zeichenfolge eventId)

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

    Die Standardveröffentlichungsplattform ist in der Systemeigenschaft sn_api_notif_mgmt.publisher_message_bus_config definiert.

    Hinweis:
    Diese Methode ist eine der wichtigsten Dienstprogrammmethoden 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 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. GUID.
    Tabelle : 2. Ergebnisse
    Typ Beschreibung
    tmfEventPayload TMF688-konforme Ereignisnutzlast, die für das Ereignis erstellt wurde. Eine Beschreibung des Standardformats dieser Ereignisnutzlast finden Sie im TMF688 Ereignismanagement-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, Zeichenfolge eventType, Zeichenfolge 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 einen der folgenden Vorgänge ausführt:
    • Ä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 Benachrichtigungen über Ersteller-Ereignisse 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 Framework für Benachrichtigungen über Ersteller-Ereignisse.

    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 von Business-Regeln erstellt, z. B. Change-Ereignis für Problemticketattribut, 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 der Nutzlast eventSnapshot übergeben werden. Die übergebene Nutzlast wird basierend auf diesem Ereignistyp verarbeitet. Der Ereignistyp wird von der zugehörigen Geschäftsregel in der zugehörigen Tabelle auf den Datensatz der eingehenden Warteschlange gestempelt. Jeder Ereignistyp hat eine eigene Ereignis-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 Bezeichner des zu konvertierenden Ereignisses.
    Tabelle : 4. Ergebnisse
    Typ Beschreibung
    tmfEventPayload Ereignisnutzlast 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 Ereignisnutzlast basierend auf dem Parameter eventType transformiert wird. Wenn Sie Ihrer -Implementierung weitere 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 – veröffentlichenMessageToHermesKafka(Objekt tmfEventPayload)

    Instanziiert die Klasse „ HermesEventPublisher“ 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 im TMF688 Ereignismanagement-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;
    },