EventProcessorUtilOOB - com escopo
A inclusão de script EventProcessorUtilOOB fornece métodos para construir e publicar eventos no agente de mensagens configurado.
Se você quiser mudar a funcionalidade padrão desta inclusão de script, será necessário substituir esses métodos na inclusão de script EventProcessorUtil. Você deve ter a função de administrador para modificar esta inclusão de script.
Esta inclusão de script é executada no namespace sn_api_notif_mgmt.
EventProcessorUtilOOB - constructandPublishEvent(objeto 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.
| Nome | Tipo | Descrição |
|---|---|---|
| inboundEventPayloadRecord | Objeto | Informações associadas ao evento. O formato desta carga útil depende do tipo de evento. Na implementação base, 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. |
| 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 o 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 (objeto eventSnapshot, cadeia de caracteres eventType, cadeia de caracteres 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.
- Modifica a manipulação 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 eventos do produtor.
Você também pode precisar substituir os métodos na inclusão de script TroubleTicketNotificationUtil para adicionar atributos à carga compatível com TMF retornada ou modificar o processamento padrão da carga útil.
Para obter informações adicionais, confira Configurar notificações de tíquete de problema usando a Estrutura de notificação de eventos do produtor.
| Nome | Tipo | Descrição |
|---|---|---|
| eventSnapshot | Objeto | Dados brutos a serem transformados em um objeto compatível com TMF. Você pode obter este objeto do 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ócio, como Evento de mudança de atributo do tíquete de problema, que está associado à tabela Incidente [incidente]. O formato do snapshot do evento é definido pela regra de negócio 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 na carga útil eventSnapshot. 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ócio associada na tabela associada. Cada tipo de evento tem sua própria estrutura de carga de evento. Por exemplo:Os valores padrão para tipos de evento de tíquete de problema são definidos no parâmetro EVENT_TYPES na inclusão de script sn_api_notif_mgmt.Constants. |
| eventId | Cadeia de caracteres | Identificador exclusivo do evento a ser convertido. |
| Tipo | Descrição |
|---|---|
| tmfEventPayload | Carga do evento no formato compatível com TMF. Para ver o processo de transformação do objeto eventSnapshot aprovado para a carga compatível com TMF, revise o código na inclusão de script TroubleTicketNotificationUtilOOB. |
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 declarações de caso de alternância usadas por este método para determinar como transformar a carga do evento passada com base no parâmetro eventType. 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 – publicarMessageToHermesKafka(Object tmfEventPayload)
Instancia a classe HermesEventPublisher e publica a carga do evento aprovada no agente de mensagens Hermes Kafka.
| 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 o Guia do usuário da API de gestão de eventos TMF688. |
| 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;
},