EventProcessorUtilOOB : inclus dans le champ d’application
L’include de script EventProcessorUtilOOB fournit des méthodes pour construire et publier des événements sur le courtier de messages configuré.
Si vous voulez modifier la fonctionnalité par défaut de cet include de script, vous devez remplacer ces méthodes dans l’include de script EventProcessorUtil . vous devez disposer du rôle administrateur pour modifier cet include de script.
Cet include de script 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 plate-forme 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 de l’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énement du producteur.
Vous devrez peut-être également remplacer les méthodes de l’include de script 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 de l’infrastructure de notification d’événement du créateur.
| Nom | Type | Description |
|---|---|---|
| Instantané d’événement | Objet | Données brutes à transformer en un objet compatible 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 de ticket de problème, qui est associée à la table Incident [incident]. Le format de l’instantané d’événement est défini par la règle métier qui a initialement poussé 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 de la sn_api_notif_mgmt. Constantes script include. |
| eventId | Chaîne | Identificateur unique de l’événement à convertir. |
| Type | Description |
|---|---|
| tmfEventPayload | Charge utile de l’événement dans un format compatible TMF. Pour voir le processus de transformation de l’objet transmis eventSnapshot en charge utile conforme à TMF, examinez le code dans l’include de script 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 ticket 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(Object tmfEventPayload)
Instancie la classe HermesEventPublisher et publie la charge utile de l’événement transmise au 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 |
|---|---|
| Aucun |
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;
},