EventProcessorUtilOOB - 범위 지정됨

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기13분
  • EventProcessorUtilOOB 스크립트 포함은 구성된 메시지 브로커에서 이벤트를 생성하고 게시하는 메서드를 제공합니다.

    이 스크립트 포함의 기본 기능을 변경하려면 EventProcessorUtil 스크립트 포함에서 이러한 메서드를 재정의해야 합니다. 이 스크립트 포함을 수정하려면 관리자 역할이 있어야 합니다.

    이 스크립트 포함은 sn_api_notif_mgmt 네임스페이스에서 실행됩니다.

    EventProcessorUtilOOB - constructandPublishEvent(객체: inboundEventPayloadRecord, 문자열 eventId)

    전달된 정보를 기반으로 TMF688 호환 페이로드를 구성하고 구성된 게시 플랫폼에 이벤트를 게시합니다.

    기본 게시 플랫폼은 sn_api_notif_mgmt.publisher_message_bus_config 시스템 속성에 정의되어 있습니다.

    주:
    이 방법은 큐 관리의 핵심 유틸리티 방법입니다. 기본 알림 프레임워크를 재설계할 계획이 아니라면 이 메서드를 재정의할 필요가 없습니다.
    표 1. 매개변수
    이름 유형 설명
    인바운드이벤트페이로드레코드 객체 이벤트와 관련된 정보입니다. 이 페이로드의 형식은 이벤트 유형에 따라 다릅니다. 기본 구현에서는 JSON 형식으로 된 연결된 이벤트의 Glide 기록 데이터입니다.
    eventId 문자열 게시할 이벤트의 고유 ID(예: GUID)입니다.
    표 2. 반환
    유형 설명
    tmfEvent페이로드 이벤트에 대해 생성된 TMF688 호환 이벤트 페이로드입니다. 이 이벤트 페이로드의 기본 형식에 대한 설명은 TMF688 Event Management 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 스크립트 포함 내의 메서드를 재정의해야 할 수도 있습니다.

    자세한 내용은 생산자 이벤트 알림 프레임워크를 사용하여 문제 티켓 알림 구성 문서를 참조하십시오.

    표 3. 매개변수
    이름 유형 설명
    이벤트 스냅샷 객체 TMF 규격 개체로 변환할 원시 데이터입니다.

    이 객체는 인바운드 큐 [sn_tmt_core_inbound_queue] 테이블의 페이로드 필드에서 얻을 수 있습니다. 인바운드 큐 기록은 인시던트 [incident] 테이블과 관련된 문제 티켓 속성 변경 이벤트와 같은 비즈니스 규칙에 의해 생성됩니다.

    이벤트 스냅샷의 형식은 원래 이벤트를 인바운드 큐로 밀어넣은 비즈니스 규칙에 의해 정의됩니다.

    eventType 문자열 이벤트 유형입니다. 이 값은 페이로드에 eventSnapshot 전달되는 이벤트 데이터의 유형을 지정합니다. 전달된 페이로드는 이 이벤트 유형을 기반으로 처리됩니다. 연결된 테이블에서 연결된 비즈니스 규칙에 따라 인바운드 큐 기록에서 이벤트 유형이 스탬프 처리됩니다. 각 이벤트 유형에는 자체 이벤트 페이로드 구조가 있습니다. 예:
    {
      "eventId":"dc2003c2c3bb3550054e20bdc0013136",
      "@type":"Troubleticket",
      "eventType":"TroubleTicketCreateEvent",
      "event":{
        "troubleTicket":{
          "short_description":"Test payload",
          "severity":3,
          "ticketType":"incident"
        }
      }
    }

    문제 티켓 이벤트 유형의 기본값은 sn_api_notif_mgmt의 매개변수에 EVENT_TYPES 정의되어 있습니다. 상수 스크립트 포함.

    eventId 문자열 변환할 이벤트의 고유 식별자입니다.
    표 4. 반환
    유형 설명
    tmfEvent페이로드 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(객체: tmfEventPayload)

    HermesEventPublisher 클래스를 인스턴스화하고 전달된 이벤트 페이로드를 Hermes Kafka 메시지 브로커에 게시합니다.

    표 5. 매개변수
    이름 유형 설명
    tmfEvent페이로드 객체 이벤트에 대해 생성된 TMF688 호환 이벤트 페이로드입니다. 이 이벤트 페이로드의 기본 형식에 대한 설명은 TMF688 Event Management API 사용 설명서를 참조하십시오.
    표 6. 반환
    유형 설명
    없음

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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;
    },