TopicUtilOOB - 범위 지정됨

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기12분
  • TopicUtilOOB 스크립트 포함에는 Topic [sn_api_notif_mgmt_topic] 테이블의 레코드를 쿼리하고 조작할 수 있는 함수가 포함되어 있습니다. 이 클래스는 DAO(Data Access Object) 클래스와 상호 작용하는 서비스 계층에서 작동합니다.

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

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

    주제에 대한 자세한 내용은 을 참조하십시오 .

    TopicUtilOOB - createTopic(object: 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 
    
    });

    TopicUtilOOB - getSubFlowName()

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

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

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

    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 이며 엔드 투 엔드 처리를 표시하기 위해 &quot;모의&quot; 응답(외부 시스템을 호출하지 않음)을 생성합니다.

    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} 테이블에 기록을 삽입합니다.

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

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

    표 7. 매개변수
    이름 유형 설명
    topicsResponse 개체 배열 하위 플로우 내의 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(문자열 topicname, 문자열 headerQuery, 문자열 contentQuery, 문자열 네임스페이스, 문자열 previousSysId)

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

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

    예: &quot; headerQuery&quot;: &quot;eventType=AlarmCreateNotification&amp;domain=Paris&quot;,

    자세한 내용은 TMF688 Event Management API 사용 설명서를 참조하십시오.

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

    예: &quot; contentQuery&quot;: &quot;event.alarm.perceivedSeverity=CRITICAL&quot;,

    자세한 내용은 TMF688 Event Management API 사용 설명서를 참조하십시오.

    namespace 문자열 연결된 주제가 있는 네임스페이스입니다. 주제는 도메인 내에서 복제할 수 없지만 여러 도메인에 포함될 수 있습니다.
    이전시스템 ID 문자열 옵션입니다. 업데이트할 주제의 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 
    
    });