EventProcessorUtilOOB - Com escopo
. 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.
| 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. |
| 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.
- 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.
| 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: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. |
| 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.
| 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 . |
| 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;
},