EventProcessorUtilOOB - Com escopo

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 5 min. de leitura
  • . EventProcessorUtilOOB a inclusão de script fornece métodos para criar e publicar eventos no agente de mensagens configurado.

    Se você quiser mudar a funcionalidade padrão desta inclusão de script, precisará substituir esses métodos no EventProcessorUtil inclusão de script. Você deve ter a função de administrador para modificar esta inclusão de script.

    Esta inclusão de script é executada no sn_api_notif_mgmt namespace.

    EventProcessorUtilOOB - constructandPublishEvent(Object inboundEventPayloadRecord, cadeia de caracteres eventID)

    Constrói uma carga compatível com TMF688 com base nas informações passadas e publica o evento na plataforma de publicação configurada.

    A plataforma de publicação padrão é definida na propriedade do sistema sn_api_notif_mgmt.publisher_message_bus_config.

    Nota:
    Este método é um método utilitário principal de gestão de filas. Você não deve precisar substituir esse método, a menos que planeje reprojetar a estrutura de notificação subjacente.
    Tabela 1. Parâmetros
    Nome Tipo Descrição
    InboundEventPayloadRecord Objeto Informações associadas ao evento. O formato desta carga depende do tipo de evento. Na implementação de base, estes são os dados de registro do Glide do evento associado no formato JSON.
    eventId Cadeia de caracteres ID exclusivo do evento a ser publicado, como um GUID.
    Tabela 2. Retornos
    Tipo Descrição
    TmfEventPayload Carga de evento compatível com TMF688 criada para o evento. Para obter uma descrição do formato padrão desta carga de evento, consulte TMF688 Event Management API Guia do usuário .

    O exemplo de código a seguir mostra como chamar este método.

    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 - fetchEventHandlerAndCreateTMEvent(Object eventSnapshot, cadeia de caracteres eventType, cadeia de caracteres eventID)

    Converte o objeto de evento bruto passado em um objeto de evento compatível com TMF invocando um gerador de carga com base no tipo de evento.

    Você precisará substituir este método se sua implementação fizer qualquer um dos seguintes procedimentos:
    • Modifica o tratamento de eventos existente.
    • Adiciona um novo tipo de evento. Você deve adicionar o tipo de evento e seu gerador de carga associado.
    • Adiciona um novo objeto na Estrutura de notificação de evento do produtor.

    Também pode ser necessário substituir os métodos em TroubleTicketNotificationUtil Inclusão de script para adicionar atributos à carga retornada compatível com TMF ou modificar o tratamento padrão da carga.

    Para obter informações adicionais, confira Configure notificações de tíquete de problemas usando a Estrutura de notificação de evento do produtor.

    Tabela 3. Parâmetros
    Nome Tipo Descrição
    EventSnapshot Objeto Dados brutos a serem transformados em um objeto compatível com TMF.

    Este objeto pode ser obtido no campo de carga da tabela Fila de entrada [sn_tmt_core_inbound_queue]. Registros de fila de entrada são criados por regras de negócio, como Evento de mudança de atributo de tíquete de problema, que está associado à tabela Incidente [incidente].

    O formato do snapshot do evento é definido pela regra de negócios que originalmente enviou o evento para a fila de entrada.

    eventType Cadeia de caracteres Tipo de evento. Este valor especifica o tipo de dados de evento que são passados no eventSnapshotcarga. A carga passada é processada com base neste tipo de evento. O tipo de evento é carimbado no registro da fila de entrada pela regra de negócios associada na tabela associada. Cada tipo de evento tem sua própria estrutura de carga de evento. Por exemplo:
    {
      "eventId":"dc2003c2c3bb3550054e20bdc0013136",
      "@type":"Troubleticket",
      "eventType":"TroubleTicketCreateEvent",
      "event":{
        "troubleTicket":{
          "short_description":"Test payload",
          "severity":3,
          "ticketType":"incident"
        }
      }
    }

    Os valores padrão para tipos de evento de tíquete de problemas são definidos em EVENT_TYPESparâmetro no sn_api_notif_mgmt.Constants inclusão de script.

    eventId Cadeia de caracteres Identificador exclusivo do evento a ser convertido.
    Tabela 4. Retornos
    Tipo Descrição
    TmfEventPayload Carga do evento no formato compatível com TMF. Para ver o processo de transformação do aprovado eventSnapshotObjeto para a carga compatível com TMF, revise o código no TroubleTicketNotificationUtilOOB inclusão de script.

    O exemplo de código a seguir mostra como chamar este método.

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

    O exemplo de código a seguir mostra as instruções de caso do comutador usadas por este método para determinar como transformar a carga útil do evento aprovada com base em eventTypeparâmetro. Se você adicionar outros tipos de evento à sua implementação, deverá substituir este método e incluir o processamento do novo tipo de evento.

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

    Instancia o. HermesEventPublisher E publica a carga do evento aprovada para o agente de mensagens Hermes Kafka.

    Tabela 5. Parâmetros
    Nome Tipo Descrição
    TmfEventPayload Objeto Carga de evento compatível com TMF688 criada para o evento. Para obter uma descrição do formato padrão desta carga de evento, consulte TMF688 Event Management API Guia do usuário .
    Tabela 6. Retornos
    Tipo Descrição
    Nenhum(a)

    O exemplo de código a seguir mostra como chamar este método.

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