TopicUtilOOB - 범위 지정됨

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기12분
  • TopicUtilOOB 스크립트 포함에는 주제 [sn_api_notif_mgmt_topic] 테이블의 기록을 쿼리하고 조작할 수 있는 기능이 포함되어 있습니다. 이 클래스는 DAO(데이터 액세스 개체) 클래스와 상호 작용하는 서비스 계층에서 작동합니다.

    이러한 함수는 주제 양식에서 주제 가져오기 버튼을 선택하면 호출됩니다. 이 스크립트 포함의 기본 기능을 변경하려면 TopicUtil 스크립트 포함에서 이 스크립트 포함에 포함된 기능을 재정의해야 합니다.

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

    주제에 대한 자세한 내용은 다음 문서를 Handling the external events using Telecommunications API notification참조하십시오.

    TopicUtilOOB - createTopic(객체 topicObj)

    DAO 삽입을 사용하여 주제 [sn_api_notif_mgmt_topic] 테이블에 기록을 작성합니다.

    일반적으로 콘텐츠에 대한 다양한 유효성 검사도 수행하는 validateAndInsertTopic 함수 내에서 이 함수를 호출합니다.

    표 1. 매개변수
    이름 유형 설명
    주제Obj 객체 주제 기록에 저장할 필드를 포함하는 객체입니다. 기본 구현의 경우 개체의 형식은 다음과 같습니다. 주제 테이블을 수정하거나 확장하는 경우 이 객체는 해당 구조를 반영해야 합니다. 필수 필드를 포함해야 합니다.
    "topicObj": {
      "content_query": "String";
      "description": "String";
      "header_query": "String";
      "namespace": "String";
      "topic_id": "String";
      "topic_name": "String";
      "type": "String";
    }
    표 2. 반환
    유형 설명
    문자열 생성된 주제 기록의 Sys_id입니다.

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

    validateAndInsertTopics: function(topicsResponse) {
      if (!gs.nil(topicsResponse)) {
        var topicsArr = topicsResponse.response;
        for (var i = 0; i < topicsArr.length; i++) {
          var name = topicsArr[i].name;
          var headerQuery = topicsArr[i].headerQuery;
          var contentQuery = topicsArr[i].contentQuery;
          var namespace = topicsArr[i].namespace;
          var id = topicsArr[i].id;
          var description = topicsArr[i].description;
          var topicGr = TopicDAO.getTopicByNameHeaderContentNamespace(name, headerQuery, contentQuery, namespace,'');
          if (topicGr && !topicGr.hasNext()) {
            var topicObj = new sn_tmt_core.BaseObject();
            topicObj.setValue('topic_name', name);
            topicObj.setValue('header_query', headerQuery);
            topicObj.setValue('content_query', contentQuery);
            topicObj.setValue('namespace', namespace);
            topicObj.setValue('description', description);
            topicObj.setValue('topic_id', id);
            topicObj.setValue('type', Constants.TYPE_INGRESS);
            this.createTopic(topicObj);
          }
        }
      }
    }

    다음 코드 예제에서는 이 함수를 재정의하는 방법을 보여 줍니다.

    var TopicUtil = Class.create();
    TopicUtil.prototype = 
      Object.extendsObject(TopicUtilOOB, { 
    
      // Define overriding functions here. Pass a topic record object with 
      // values for a single Topic table record.
    
      createTopic: function(topicObj){ 
        return this.topicDAO.create(topicObj); 
      } 
    
      type: TopicUtil 
    
    });

    주제UtilOOB - getSubFlowName()

    외부 시스템에서 주제를 가져오기 위해 호출할 하위 플로우의 이름을 반환합니다.

    일반적으로 이 함수는 triggerSubflow() 함수에서 호출됩니다. 이 하위 플로우는 외부 시스템에 연결하고 주제 [sn_api_notif_mgmt_topic] 테이블에 삽입해야 하는 주제 기록을 가져오는 작업을 담당합니다.

    하위 플로우의 이름은 Constants.GET_TOPICS_SUBFLOW에 정의되어 있습니다. 데모 구현의 경우 이 하위 플로우는 sn_ind_tmf642.event_alarm_notifications_api 이며 엔드 투 엔드 처리를 표시하기 위해 "모의" 응답(외부 시스템을 호출하지 않음)을 생성합니다.

    sn_api_notif_mgmt에서 실행할 하위 플로우의 이름을 재정의하여 자신의 하위 플로우의 이름을 포함하도록 이 기능을 변경할 수 있습니다 . 상수 스크립트 포함

    표 3. 매개변수
    이름 유형 설명
    없음
    표 4. 반환
    유형 설명
    문자열 외부 시스템에서 주제를 가져오는 데 사용할 하위 플로우의 이름입니다.

    다음 코드 예제에서는 이 함수를 재정의하는 방법을 보여 줍니다.

    var TopicUtil= Class.create();  
    TopicUtil.prototype = 
      Object.extendsObject(TopicUtilOOB, { 
    
      // Define overriding function here. In TopicUtilOOB it returns the flow name of a GET outbound API call that mocks the GET call.
      // Override this function to return a flow that returns topics from an external system. 
    
      getSubflowName: function(){ 
        return <flow_name>; // Return the name here
      } 
    
      type: TopicUtil 
    
    });

    TopicUtilOOB - triggerSubflow()

    외부 시스템에서 주제 기록을 가져오는 하위 플로우를 트리거합니다.

    이 함수는 사용자가 주제 양식에서 주제 가져오기 버튼을 선택할 때 호출됩니다.

    트리거되는 하위 플로우의 이름은 Constants.GET_TOPICS_SUBFLOW에 정의되어 있습니다. 데모 구현의 경우 이 하위 플로우는 sn_ind_tmf642.event_alarm_notifications_api 이며 엔드 투 엔드 처리를 표시하기 위해 "모의" 응답(외부 시스템을 호출하지 않음)을 생성합니다.

    sn_api_notif_mgmt에서 실행할 하위 플로우의 이름을 재정의하여 자신의 하위 플로우 이름을 포함하도록 이 기능을 변경해야 합니다 . 상수 스크립트 포함

    하위 플로우 내에서 REST 단계, 연결 별칭 또는 기타 구현을 작성하여 외부 네트워크에서 주제를 검색하는 엔드포인트 URL을 제공해야 합니다. 해당 하위 플로우에서 주제가 반환되면 validateAndInsertTopics 함수를 호출하여 다시 전달된 주제 페이로드를 확인하고 주제 테이블에 기록을 삽입/업데이트합니다.

    표 5. 매개변수
    이름 유형 설명
    없음
    표 6. 반환
    유형 설명
    안 함

    다음 코드 예제에서는 이 함수를 재정의하는 방법을 보여 줍니다.

    var TopicUtil = Class.create();
    TopicUtil.prototype = 
      Object.extendsObject(TopicUtilOOB, { 
    
      // Define overriding functions here. Override this function to call your own GET API outbound call subflow.
      triggerSubflow: function(){
        var result =''; // Pass the subflow here 
    
        try {
          var flowOp = sn_fd.FlowAPI.getRunner().subflow(result).inBackground().withInputs().run();
          if (flowOp) { 
            gs.addInfoMessage(gs.getMessage('Please refresh the list to see new Topics.'));
          } 
        } catch (ex) {
          gs.addInfoMessage(gs.getMessage(ex + ' Please check if the trigger is defined and passed correctly')); 
        }
      } 
    
      type: TopicUtil 
    
    });

    TopicUtilOOB - validateAndInsertTopics(배열 topicsResponse)

    전달된 주제 기록 페이로드를 확인하고 이 데이터가 포함된 주제 [sn_api_notif_mgmt_topic} 테이블에 기록을 삽입합니다.

    전달된 주제 페이로드는 외부 시스템에서 주제를 검색하는 데 사용되는 "GET API 엔드포인트"에서 가져옵니다. 이 GET API 트리거에 대한 자세한 내용은 triggerSubflow()를 참조하세요.

    TopicUtil 스크립트 포함에서 이 함수를 재정의하여 자체 유효성 검사 규칙과 주제 기록 필드를 포함하도록 이 기능을 변경할 수 있습니다.

    표 7. 매개변수
    이름 유형 설명
    주제응답 객체 배열 하위 플로우 내의 GET API 엔드포인트를 통해 외부 시스템에서 반환된 주제 기록 페이로드입니다. 이 페이로드는 주제 [sn_api_notif_mgmt_topic] 테이블의 구조와 일치해야 합니다. 배열 내의 각 개체는 개별 항목입니다. 예를 들어, 데모 구현에서는 다음과 같습니다.
    "topicResponse": [
      {
        "name": "String";
        "header_query": "String";
        "content_query": "String";
        "namespace": "String";
        "id": "String";
        "description": "String"
      },
      {
        "name": "String";
        "header_query": "String";
        "content_query": "String";
        "namespace": "String";
        "id": "String";
        "description": "String"
      }
    ]
    표 8. 반환
    유형 설명
    안 함

    다음 코드 예제에서는 이 함수를 재정의하는 방법을 보여 줍니다.

    var TopicUtil= Class.create();  
    TopicUtil.prototype = 
      Object.extendsObject(TopicUtilOOB, { 
    
      // Define overriding functions here. Override this function to include custom 
      // validations on topic payload parameters and insert the record into the Topics table. 
    
      validateInsertTopics: function(topicsResponse){ 
    
        // Provide validation on the passed payload. 
        this.createTopic(topicObj);
      } 
    
    type: TopicUtil 
    
    });

    TopicUtilOOB - verifyTopics(String topicname, String headerQuery, String contentQuery, String namespace, String previousSysId)

    주제 [sn_api_notif_mgmt_topic] 테이블의 다른 주제 기록에 중복 항목을 나타내는 복합 키로 지정된 필드 조합이 포함되어 있는지 여부를 확인합니다.

    표 9. 매개변수
    이름 유형 설명
    주제 이름 문자열 주제의 이름입니다.
    headerQuery 문자열 이벤트 헤더 속성의 컨텐츠에 적용할 필터입니다. 이 쿼리는 관련 주제에 대해 수신할 이벤트의 유형을 정의합니다. 이 매개 변수를 중첩 쿼리로 전달할 수 있습니다.

    예: "headerQuery": "eventType=AlarmCreateNotification&domain=Paris",

    자세한 내용은 TMF688 이벤트 관리 API 사용 설명서를 참조하십시오.

    contentQuery 문자열 이벤트의 콘텐츠에 적용할 필터입니다. 이 쿼리는 이벤트 심각도 또는 가능한 원인과 같은 정보를 찾는 데 사용되는 보다 심층적인 이벤트 필터입니다. 이 매개 변수를 중첩 쿼리로 전달할 수 있습니다.

    예: "contentQuery": "event.alarm.perceivedSeverity=CRITICAL",

    자세한 내용은 TMF688 이벤트 관리 API 사용 설명서를 참조하십시오.

    네임스페이스 문자열 연결된 주제가 있는 네임스페이스입니다. 주제는 도메인 내에서 복제할 수 없지만 여러 도메인에 포함될 수 있습니다.
    이전SysId 문자열 옵션입니다. 업데이트할 주제의 Sys_id입니다. 기존 주제를 업데이트할 때만 이 값을 전달합니다.
    표 10. 반환
    유형 설명
    부울

    주제 테이블의 다른 기록에 지정된 필드 조합이 포함되어 있는지 여부를 나타내는 플래그입니다.

    가능한 값:
    • true: 주제 테이블의 다른 기록에 필드 조합이 포함되어 있습니다.
    • false: 주제 테이블에 필드 조합을 포함하는 다른 기록이 없습니다.

    다음 코드 예제에서는 이 함수를 재정의하는 방법을 보여 줍니다.

    
    var TopicUtil= Class.create();
    TopicUtil.prototype = 
      Object.extendsObject(TopicUtilOOB, {
    
      // Define overriding functions here. Override this function to provide custom validations on 
      // the passed parameters and to verify whether an insert is possible or not. 
    
      verifyTopics: function(topicname, headerQuery, contentQuery, namespace, previousSysId) { 
    
        // Write modified code here to get any combination of records present in the current Topic table. 
        // In the current implementation, the function checks if there is a duplicate topic record that contains the
        // passed parameters. 
    
      },
    
    type: TopicUtil 
    
    });