EventProcessorUtilOOB – Scoped
Die EventProcessorUtilOOB -Skripteinbindung stellt Methoden zum Erstellen und Veröffentlichen von Events im konfigurierten Nachrichten-Broker bereit.
Wenn Sie die Standardfunktionalität dieser Skripteinbindung ändern möchten, müssen Sie diese Methoden in der EventProcessorUtil-Skripteinbindung überschreiben. Sie müssen über die Administratorrolle verfügen, um diese Skripteinbindung zu ändern.
Diese Skripteinbindung wird im Namespace sn_api_notif_mgmt ausgeführt.
EventProcessorUtilOOB – buildandPublishEvent(Object inboundEventPayloadRecord, String eventId)
Erstellt eine TMF688-konforme Nutzlast basierend auf den übergebenen Informationen und veröffentlicht das Event auf der konfigurierten Veröffentlichungsplattform.
Die standardmäßige Veröffentlichungsplattform ist in der Systemeigenschaft sn_api_notif_mgmt.publisher_message_bus_config definiert.
| Name | Typ | Beschreibung |
|---|---|---|
| inboundEventPayloadRecord | Objekt | Informationen, die dem Event zugeordnet sind. Das Format dieser Nutzlast hängt vom Event-Typ ab. In der Basisimplementierung sind dies die Glide-Datensatzdaten des zugeordneten Events im JSON-Format. |
| eventId | Zeichenfolge | Eindeutige ID des zu veröffentlichenden Ereignisses, z. B. eine GUID. |
| Typ | Beschreibung |
|---|---|
| tmfEventPayload | TMF688-konforme Event-Nutzlast, die für das Event erstellt wurde. Eine Beschreibung des Standardformats dieser Event-Nutzlast finden Sie im TMF688 Event Management API-Benutzerhandbuch. |
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
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)
Konvertiert das übergebene Roh-Event-Objekt in ein TMF-konformes Event-Objekt, indem ein Nutzlastgenerator basierend auf dem Event-Typ aufgerufen wird.
- Ändert die vorhandene Event-Verarbeitung.
- Fügt einen neuen Ereignistyp hinzu. Sie müssen den Ereignistyp und den zugehörigen Nutzlastgenerator hinzufügen.
- Fügt ein neues Objekt im Benachrichtigungs-Framework für Produzenten-Events hinzu.
Möglicherweise müssen Sie auch die Methoden in der Skripteinbindung TroubleTicketNotificationUtil überschreiben, um der zurückgegebenen TMF-konformen Nutzlast Attribute hinzuzufügen oder die Standardverarbeitung der Nutzlast zu ändern.
Weitere Informationen finden Sie unter Konfigurieren Sie Problemticketbenachrichtigungen mit dem Producer Event Notification Framework.
| Name | Typ | Beschreibung |
|---|---|---|
| eventSnapshot | Objekt | Rohdaten, die in ein TMF-konformes Objekt umgewandelt werden sollen. Sie können dieses Objekt aus dem Nutzlastfeld der Tabelle „Eingehende Warteschlange“ [sn_tmt_core_inbound_queue] abrufen. Datensätze der eingehenden Warteschlange werden durch Business Rules erstellt, z. B. „Trouble Ticket Attribute Change Event“, das der Incident-Tabelle [Incident] zugeordnet ist. Das Format des Event-Snapshots wird durch die Geschäftsregel definiert, die das Event ursprünglich in die eingehende Warteschlange verschoben hat. |
| eventType | Zeichenfolge | Event-Typ Dieser Wert gibt den Typ der Event-Daten an, die in der Nutzlast eventSnapshot übergeben werden. Die übergebene Nutzlast wird basierend auf diesem Event-Typ verarbeitet. Der Event-Typ wird im Datensatz der eingehenden Warteschlange von der zugeordneten Geschäftsregel in der zugehörigen Tabelle gestempelt. Jeder Event-Typ verfügt über eine eigene Event-Nutzlaststruktur. Beispiel:Standardwerte für Problemticket-Ereignistypen sind im Parameter EVENT_TYPES in der Skripteinbindung sn_api_notif_mgmt.Constants definiert. |
| eventId | Zeichenfolge | Eindeutiger Identifier des zu konvertierenden Events. |
| Typ | Beschreibung |
|---|---|
| tmfEventPayload | Event-Nutzlast im TMF-konformen Format. Um den Transformationsprozess des übergebenen Objekts eventSnapshot in die TMF-konforme Nutzlast anzuzeigen, überprüfen Sie den Code in der Skripteinbindung TroubleTicketNotificationUtilOOB. |
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
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;
},
Das folgende Codebeispiel zeigt die Switch-Case-Anweisungen, die von dieser Methode verwendet werden, um zu bestimmen, wie die übergebene Event-Nutzlast basierend auf dem Parameter eventType transformiert wird. Wenn Sie Ihrer Implementierung weitere Event-Typen hinzufügen, müssen Sie diese Methode überschreiben und die -Verarbeitung für den neuen Event-Typ einbeziehen.
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 – veröffentlichenMessageToHermesKafka(Object tmfEventPayload)
Instantiiert die HermesEventPublisher -Klasse und veröffentlicht die übergebene Event-Nutzlast im Hermes Kafka-Nachrichten-Broker.
| Name | Typ | Beschreibung |
|---|---|---|
| tmfEventPayload | Objekt | TMF688-konforme Event-Nutzlast, die für das Event erstellt wurde. Eine Beschreibung des Standardformats dieser Event-Nutzlast finden Sie im TMF688 Event Management API-Benutzerhandbuch. |
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
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;
},