EventProcessorUtilOOB - Com escopo

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. 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, String 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 este 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 Guia do usuário da API de gestão de eventos TMF688 .

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

    Converte o objeto de evento bruto aprovado 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.

    Você também pode precisar substituir os métodos no 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
    Snapshot do evento Objeto Dados brutos a serem transformados em um objeto compatível com TMF.

    Você pode obter este objeto no campo de carga da tabela Fila de entrada [sn_tmt_core_inbound_queue]. Os registros da fila de entrada são criados por regras de negócios, como o 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 aprovada é 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 Constantes sn_api_notif_mgmt.constantes 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 de switch usadas por este método para determinar como transformar a carga de 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 - publishMessageToHermesKafka(Objeto tmfEventPayload)

    Instancia o. HermesEventPublisher E publica a carga de 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 Guia do usuário da API de gestão de eventos TMF688 .
    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;
    },