EventProcessorUtilOOB : inclus dans le périmètre
Le script include EventProcessorUtilOOB fournit des méthodes permettant de construire et de publier des événements sur le courtier de messages configuré.
Si vous souhaitez modifier la fonctionnalité par défaut de ce script include, vous devez remplacer ces méthodes dans le script include EventProcessorUtil . Vous devez disposer du rôle admin pour modifier ce script include.
Ce script include s’exécute dans l’espace de noms sn_api_notif_mgmt .
EventProcessorUtilOOB : constructandPublishEvent(Object inboundEventPayloadRecord, String eventId)
Construit une charge utile conforme TMF688 en fonction 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.
| 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. |
| Type | Description |
|---|---|
| tmfEventPayload | Charge utile d’événement conforme 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 Gestion des événements TMF688. |
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 conforme TMF en appelant un générateur de charge utile basé sur le type d’événement.
- 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 d’événements du producteur.
Vous devrez peut-être également remplacer les méthodes du script include TroubleTicketNotificationUtil pour ajouter des attributs à la charge utile conforme au 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 producteur.
| Nom | Type | Description |
|---|---|---|
| Instantané d’événement | Objet | Données brutes à transformer en objet conforme 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 l’événement de changement d’attribut du 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 placé 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 transmise 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 d’événement. Par exemple :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. Constantes du script include. |
| eventId | Chaîne | Identificateur unique de l’événement à convertir. |
| Type | Description |
|---|---|
| tmfEventPayload | Charge utile de l’événement au format compatible TMF. Pour voir le processus de transformation de l’objet transmis eventSnapshot à la charge utile conforme à TMF, passez en revue le code dans le script include 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 de tickets de commutateur 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(Objet tmfEventPayload)
Instancie la classe HermesEventPublisher et publie la charge utile de l’événement transmise dans le courtier de messages Hermes Kafka.
| Nom | Type | Description |
|---|---|---|
| tmfEventPayload | Objet | Charge utile d’événement conforme 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 Gestion des événements TMF688. |
| Type | Description |
|---|---|
| Néant |
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;
},