EventProcessorUtilOOB - 범위 지정됨
EventProcessorUtilOOB 스크립트 포함은 구성된 메시지 브로커에서 이벤트를 구성하고 게시하는 메서드를 제공합니다.
이 스크립트 포함의 기본 기능을 변경하려면 EventProcessorUtil 스크립트 포함에서 이러한 메서드를 재정의해야 합니다. 이 스크립트 포함을 수정하려면 관리자 역할이 있어야 합니다.
이 스크립트 포함은 sn_api_notif_mgmt 네임스페이스에서 실행됩니다.
EventProcessorUtilOOB - constructandPublishEvent(객체, inboundEventPayloadRecord, 문자열, eventId)
전달된 정보를 기반으로 TMF688 호환 페이로드를 구성하고 구성된 게시 플랫폼에 이벤트를 게시합니다.
기본 게시 플랫폼은 sn_api_notif_mgmt.publisher_message_bus_config 시스템 속성에 정의되어 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| inboundEventPayloadRecord | 객체 | 이벤트와 관련된 정보입니다. 이 페이로드의 형식은 이벤트 유형에 따라 다릅니다. 기본 구현에서는 JSON 형식으로 된 연결된 이벤트의 Glide 기록 데이터입니다. |
| eventId | 문자열 | 게시할 이벤트의 고유 ID(예: GUID)입니다. |
| 유형 | 설명 |
|---|---|
| tmf이벤트 페이로드 | 이벤트에 대해 생성된 TMF688 준수 이벤트 페이로드입니다. 이 이벤트 페이로드의 기본 형식에 대한 설명은 TMF688 이벤트 관리 API 사용자 가이드를 참조하십시오. |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
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(객체, eventSnapshot, 문자열, eventType, 문자열, eventId)
이벤트 유형에 따라 페이로드 생성기를 호출하여 전달된 원시 이벤트 객체를 TMF 호환 이벤트 객체로 변환합니다.
- 기존 이벤트 처리를 수정합니다.
- 새 이벤트 유형을 추가합니다. 이벤트 유형 및 관련 페이로드 생성기를 추가해야 합니다.
- 생산자 이벤트 알림 프레임워크에 새 객체를 추가합니다.
반환된 TMF 호환 페이로드에 속성을 추가하거나 페이로드의 기본 처리를 수정하기 위해 TroubleTicketNotificationUtil 스크립트 포함 내의 메서드를 재정의해야 할 수도 있습니다.
자세한 내용은 생산자 이벤트 알림 프레임워크를 사용하여 문제 티켓 알림 구성 문서를 참조하십시오.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이벤트 스냅샷 | 객체 | TMF 규격 개체로 변환할 원시 데이터입니다. 이 객체는 인바운드 큐 [sn_tmt_core_inbound_queue] 테이블의 페이로드 필드에서 얻을 수 있습니다. 인바운드 큐 기록은 인시던트 [incident] 테이블과 연결된 문제 티켓 속성 변경 이벤트와 같은 비즈니스 규칙에 의해 생성됩니다. 이벤트 스냅샷의 형식은 이벤트를 원래 인바운드 큐로 밀어 넣은 비즈니스 규칙에 의해 정의됩니다. |
| eventType | 문자열 | 이벤트 유형입니다. 이 값은 페이로드에 eventSnapshot 전달되는 이벤트 데이터의 유형을 지정합니다. 전달된 페이로드는 이 이벤트 유형에 따라 처리됩니다. 이벤트 유형은 연결된 테이블의 연결된 비즈니스 규칙에 따라 인바운드 큐 기록에 스탬프 처리됩니다. 각 이벤트 유형에는 고유한 이벤트 페이로드 구조가 있습니다. 예:문제 티켓 이벤트 유형의 기본값은 sn_api_notif_mgmt의 매개변수에 EVENT_TYPES 정의됩니다 . 상수 스크립트 포함. |
| eventId | 문자열 | 변환할 이벤트의 고유 식별자입니다. |
| 유형 | 설명 |
|---|---|
| tmf이벤트 페이로드 | TMF 규격 형식의 이벤트 페이로드입니다. 전달 eventSnapshot 된 개체가 TMF 규격 페이로드로 변환되는 과정을 보려면 TroubleTicketNotificationUtilOOB 스크립트 포함의 코드를 검토하세요. |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
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;
},
다음 코드 예제에서는 매개 변수를 기반으로 eventType 전달된 이벤트 페이로드를 변환하는 방법을 결정하기 위해 이 메서드에서 사용하는 switch case 문을 보여 줍니다. 구현에 다른 이벤트 유형을 추가하는 경우 이 메서드를 재정의하고 새 이벤트 유형에 대한 처리를 포함해야 합니다.
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)
HermesEventPublisher 클래스를 인스턴스화하고 전달된 이벤트 페이로드를 Hermes Kafka 메시지 브로커에 게시합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| tmf이벤트 페이로드 | 객체 | 이벤트에 대해 생성된 TMF688 준수 이벤트 페이로드입니다. 이 이벤트 페이로드의 기본 형식에 대한 설명은 TMF688 이벤트 관리 API 사용자 가이드를 참조하십시오. |
| 유형 | 설명 |
|---|---|
| 없음 |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
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;
},