EventProcessorUtilOOB : dans le champ d’application

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 5 minutes de lecture
  • L’include de script EventProcessorUtilOOB fournit des méthodes pour construire et publier des événements sur le courtier en messages configuré.

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

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

    EventProcessorUtilOOB : constructandPublishEvent(Object inboundEventPayloadRecord, String eventId)

    Construit une charge utile compatible TMF688 sur la base 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 compatible 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 TMF688 Event Management.

    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 compatible 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 de l’événement du producteur.

    Vous devrez peut-être également remplacer les méthodes de l’include de script TroubleTicketNotificationUtil pour ajouter des attributs à la charge utile compatible 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 créateur.

    Tableau 3. Paramètres
    Nom Type Description
    Instantané d’événement Objet Données brutes à transformer en objet compatible 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 Événement de changement d’attribut de 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 poussé 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 réussie 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. 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. Include de script des constantes .

    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 en charge utile compatible TMF, examinez le code dans l’include de script 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 switch case 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(Object tmfEventPayload)

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

    Tableau 5. Paramètres
    Nom Type Description
    tmfEventPayload Objet Charge utile d’événement compatible 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 TMF688 Event Management.
    Tableau 6. Renvoie
    Type Description
    Aucun

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