EventProcessorUtilOOB : inclus dans le périmètre

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 5 minutes de lecture
  • Le script include EventProcessorUtilOOB fournit des méthodes permettant de construire et de publier des événements sur le courtier de messages configuré.

    Si vous souhaitez modifier la fonctionnalité par défaut de ce script include, vous devez remplacer ces méthodes dans le script include EventProcessorUtil . Vous devez disposer du rôle admin pour modifier ce script include.

    Ce script include s’exécute dans l’espace de noms sn_api_notif_mgmt .

    EventProcessorUtilOOB : constructandPublishEvent(Object inboundEventPayloadRecord, String eventId)

    Construit une charge utile conforme TMF688 en fonction des informations transmises et publie l’événement sur la plateforme de publication configurée.

    La plateforme de publication par défaut est définie dans la propriété système sn_api_notif_mgmt.publisher_message_bus_config.

    Remarque :
    Cette méthode est une méthode utilitaire de base de la gestion des files d’attente. Vous ne devriez pas avoir besoin de remplacer cette méthode, sauf si vous envisagez de reconcevoir le cadre de travail de notification sous-jacent.
    Tableau 1. Paramètres
    Nom Type Description
    inboundEventPayloadRecord Objet Informations associées à l’événement. Le format de cette charge utile dépend du type d’événement. Dans l’implémentation de base, il s’agit des données d’enregistrement Glide de l’événement associé au format JSON.
    eventId Chaîne ID unique de l’événement à publier, tel qu’un GUID.
    Tableau 2. Renvoie
    Type Description
    tmfEventPayload Charge utile d’événement conforme TMF688 créée pour l’événement. Pour obtenir une description du format par défaut de cette charge utile d’événement, consultez le Guide de l’utilisateur de l’API Gestion des événements TMF688.

    L’exemple de code suivant montre comment appeler cette méthode.

    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)

    Convertit l’objet d’événement brut transmis en objet d’événement conforme TMF en appelant un générateur de charge utile basé sur le type d’événement.

    Vous devrez remplacer cette méthode si votre implémentation effectue l’une des opérations suivantes :
    • Modifie la gestion des événements existante.
    • Ajoute un nouveau type d’événement. Vous devez ajouter le type d’événement et son générateur de charge utile associé.
    • Ajoute un nouvel objet dans le cadre de travail de notification d’événements du producteur.

    Vous devrez peut-être également remplacer les méthodes du script include TroubleTicketNotificationUtil pour ajouter des attributs à la charge utile conforme au TMF renvoyée ou modifier la gestion par défaut de la charge utile.

    Pour en savoir plus, consultez Configurer les notifications de ticket d’incident à l’aide du cadre de travail de notification d’événement du producteur.

    Tableau 3. Paramètres
    Nom Type Description
    Instantané d’événement Objet Données brutes à transformer en objet conforme TMF.

    Vous pouvez obtenir cet objet à partir du champ de charge utile de la table File d’attente entrante [sn_tmt_core_inbound_queue]. Les enregistrements de file d’attente entrante sont créés par des règles métier, telles que l’événement de changement d’attribut du ticket d’incident, qui est associé à la table Incident [incident].

    Le format de l’instantané d’événement est défini par la règle métier qui a initialement placé l’événement dans la file d’attente entrante.

    eventType Chaîne Type d’événement. Cette valeur spécifie le type de données d’événement transmises dans la eventSnapshot charge utile. La charge utile transmise est traitée en fonction de ce type d’événement. Le type d’événement est marqué sur l’enregistrement de file d’attente entrante par la règle métier associée sur la table associée. Chaque type d’événement a sa propre structure de charge utile d’événement. Par exemple :
    {
      "eventId":"dc2003c2c3bb3550054e20bdc0013136",
      "@type":"Troubleticket",
      "eventType":"TroubleTicketCreateEvent",
      "event":{
        "troubleTicket":{
          "short_description":"Test payload",
          "severity":3,
          "ticketType":"incident"
        }
      }
    }

    Les valeurs par défaut pour les types d’événements de ticket d’incident sont définies dans le EVENT_TYPES paramètre du sn_api_notif_mgmt. Constantes du script include.

    eventId Chaîne Identificateur unique de l’événement à convertir.
    Tableau 4. Renvoie
    Type Description
    tmfEventPayload Charge utile de l’événement au format compatible TMF. Pour voir le processus de transformation de l’objet transmis eventSnapshot à la charge utile conforme à TMF, passez en revue le code dans le script include TroubleTicketNotificationUtilOOB .

    L’exemple de code suivant montre comment appeler cette méthode.

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

    L’exemple de code suivant montre les instructions de tickets de commutateur utilisées par cette méthode pour déterminer comment transformer la charge utile de l’événement transmis en fonction du eventType paramètre. Si vous ajoutez d’autres types d’événements à votre implémentation, vous devez remplacer cette méthode et inclure le traitement pour le nouveau type d’événement.

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

    Instancie la classe HermesEventPublisher et publie la charge utile de l’événement transmise dans le courtier de messages Hermes Kafka.

    Tableau 5. Paramètres
    Nom Type Description
    tmfEventPayload Objet Charge utile d’événement conforme TMF688 créée pour l’événement. Pour obtenir une description du format par défaut de cette charge utile d’événement, consultez le Guide de l’utilisateur de l’API Gestion des événements TMF688.
    Tableau 6. Renvoie
    Type Description
    Néant

    L’exemple de code suivant montre comment appeler cette méthode.

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