문서 분류 사용 사례 익스포트

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기13분
  • 다른 인스턴스에서 사용할 ServiceNow® 수 있도록 문서 분류 사용 사례를 업데이트 세트에 추가하여 익스포트합니다.

    시작하기 전에

    • 사용 사례를 익스포트하고 임포트할 때 두 인스턴스가 동일한 제품군 릴리스와 동일한 설치 버전을 문서 인텔리전스 갖도록 합니다.
    • 필요한 역할: sn_docintel.manager

    이 태스크 정보

    다음 단계에 따라 문서 분류 사용 사례를 필드, 필드 그룹, 통합, 플로우 및 모든 관련 ML(머신 러닝) 모델과 함께 업데이트 세트로 익스포트합니다. 그런 다음 다른 인스턴스에서 사용하기 위해 업데이트 세트를 익스포트할 수 있습니다.

    업데이트 세트가 백그라운드 프로세스로 자동 생성되고 "완료됨"으로 설정됩니다. 이 프로세스는 몇 분 정도 걸립니다. 백그라운드 작업이 완료되기 전에 결과 업데이트 세트를 수동으로 "완료됨"으로 설정하거나 익스포트해서는 안 됩니다.

    자세한 내용은 System update sets 문서를 참조하십시오.

    프로시저

    1. 다음으로 이동 모두 > 시스템 정의 > 스크립트 – 백그라운드.
    2. 아래에 제공된 스크립트를 복사하여 스크립트 실행 상자에 붙여넣습니다.
      var TASK_DEFINITION_TO_EXPORT_SYS_ID = "";
      var TASK_BATCH_SIZE = 50;
      
      var scopeToUpdateSet = {};
      var taskDefinitionName = "";
      
      function getTaskSuffix(taskBatchNum) {
         if (taskBatchNum != null) {
            return (
               " task " +
               ((taskBatchNum - 1) * TASK_BATCH_SIZE + 1) +
               "-" +
               taskBatchNum * TASK_BATCH_SIZE
            );
         } else {
            return "";
         }
      }
      
      function createUpdateSet(taskBatchNum) {
         var taskSuffix = getTaskSuffix(taskBatchNum);
         var globalNameSuffix = " global update set" + taskSuffix;
         var docintelNameSuffix = " docintel update set" + taskSuffix;
         var globalKey = "global" + taskSuffix;
         var docintelKey = "19b40605edae411005e8007f82757635" + taskSuffix;
      
         // Create a new global update set
         var globalUpdateSetGR = new GlideRecord("sys_update_set");
         globalUpdateSetGR.initialize();
         globalUpdateSetGR.name = taskDefinitionName + globalNameSuffix;
         globalUpdateSetGR.application = "global";
         var globalUpdateSetID = globalUpdateSetGR.insert();
         scopeToUpdateSet[globalKey] = globalUpdateSetID;
         // Create a new DocIntel scope update set
         var updateSetGR = new GlideRecord("sys_update_set");
         updateSetGR.initialize();
         updateSetGR.name = taskDefinitionName + docintelNameSuffix;
         updateSetGR.application = "19b40605edae411005e8007f82757635";
         updateSetGR.parent = globalUpdateSetGR.sys_id;
         var updateSetID = updateSetGR.insert();
         scopeToUpdateSet[docintelKey] = updateSetID;
      }
      
      function saveToUpdateSet(glideRecord, taskCount) {
         var gum;
         var scope = String(glideRecord.sys_scope || "global");
         if (scope !== "global" && scope !== "19b40605edae411005e8007f82757635") {
            gs.info("unknown scope: " + scope + "|" + glideRecord.getDisplayValue());
            return;
         }
         
         var taskBatchNum = taskCount ? Math.ceil(taskCount / TASK_BATCH_SIZE) : null;
         var updateSetSysId = scopeToUpdateSet[scope + getTaskSuffix(taskBatchNum)];
         if (!updateSetSysId) {
            createUpdateSet(taskBatchNum);
            updateSetSysId = scopeToUpdateSet[scope + getTaskSuffix(taskBatchNum)];
         }
       
         try {
            gum = new GlideUpdateManager2(updateSetSysId);
         } catch (e) {
            var gus = new GlideUpdateSet();
            gus.set(updateSetSysId);
            gum = new GlideUpdateManager2();
         }
         gum.saveRecord(glideRecord);
      }
      
      function exportTaskDefinition(taskDefinitionId) {
       var currentUpdateSetSysId = gs.getPreference("sys_update_set");
       // Get task definition
       var taskDefinitionGR = new GlideRecord("di_task_definition");
       if (!taskDefinitionGR.get(taskDefinitionId)) {
       gs.info("task definition not found.");
       return;
       }
       
      taskDefinitionName = taskDefinitionGR.getValue("display_name");
       createUpdateSet(null);
       
       //Push records into the current update set
       // Task Definition
       saveToUpdateSet(taskDefinitionGR);
       saveToUpdateSet(taskDefinitionGR.ml_definition_ocr.getRefRecord());
       saveToUpdateSet(taskDefinitionGR.ml_definition_training.getRefRecord());
       saveToUpdateSet(taskDefinitionGR.ml_definition_prediction.getRefRecord());
       saveToUpdateSet(
       taskDefinitionGR.ml_definition_pdf_preprocessing.getRefRecord()
       );
      
       // KeyGroups
       var keyGroupGR = new GlideRecord("di_key_group");
       keyGroupGR.addQuery("task_definition", taskDefinitionId);
       keyGroupGR.query();
       while (keyGroupGR.next()) {
       saveToUpdateSet(keyGroupGR);
       }
      
       // Keys
       var keyGR = new GlideRecord("di_key");
       keyGR.addQuery("task_definition", taskDefinitionId);
       keyGR.query();
       while (keyGR.next()) {
       saveToUpdateSet(keyGR);
       }
      
       // ML Solutions
       var mlSolutionGR = new GlideRecord("ml_solution");
       mlSolutionGR.addQuery("solution_name", "CONTAINS", taskDefinitionId);
       mlSolutionGR.addQuery("active", true);
       mlSolutionGR.query();
       while (mlSolutionGR.next()) {
       saveToUpdateSet(mlSolutionGR);
       // ML Model Artifacts
       var mlModelArtifactGR = new GlideRecord("ml_model_artifact");
       mlModelArtifactGR.addQuery("solution", mlSolutionGR.sys_id);
       mlModelArtifactGR.query();
       while (mlModelArtifactGR.next()) {
       saveToUpdateSet(mlModelArtifactGR);
       }
       // ML progress tracker
       saveToUpdateSet(mlSolutionGR.progress_tracker.getRefRecord());
       }
      
       // Tasks
       var taskCount = 0;
      
       var taskGR = new GlideRecord("di_task");
       taskGR.addQuery("task_definition", taskDefinitionId);
       taskGR.query();
       while (taskGR.next()) {
       taskCount += 1;
       saveToUpdateSet(taskGR, taskCount);
       // PDFs
       var pdfGR = new GlideRecord("di_pdf");
       pdfGR.addQuery("task", taskGR.sys_id);
       pdfGR.query();
       while (pdfGR.next()) {
       saveToUpdateSet(pdfGR, taskCount);
       }
       // Images
       var imageGR = new GlideRecord("di_image");
       imageGR.addQuery("task", taskGR.sys_id);
       imageGR.query();
       while (imageGR.next()) {
       saveToUpdateSet(imageGR, taskCount);
       // Candidate Scores
       var candidateScoreGR = new GlideRecord("di_candidate_score");
       candidateScoreGR.addQuery("image", imageGR.sys_id);
       candidateScoreGR.query();
       while (candidateScoreGR.next()) {
       saveToUpdateSet(candidateScoreGR, taskCount);
       }
       }
       // Extracted Values
       var extractedValueGR = new GlideRecord("di_extracted_value");
       extractedValueGR.addQuery("task", taskGR.sys_id);
       extractedValueGR.query();
       while (extractedValueGR.next()) {
       saveToUpdateSet(extractedValueGR, taskCount);
       }
       // Prediction Inputs
       var predictionInputGR = new GlideRecord("di_prediction_input");
       predictionInputGR.addQuery("task", taskGR.sys_id);
       predictionInputGR.query();
       while (predictionInputGR.next()) {
       saveToUpdateSet(predictionInputGR, taskCount);
      }
      
       // Training Inputs
       var trainingInputGR = new GlideRecord("di_training_input");
       trainingInputGR.addQuery("task", taskGR.sys_id);
       trainingInputGR.query();
       while (trainingInputGR.next()) {
       saveToUpdateSet(trainingInputGR, taskCount);
       }
       }
      
       // Reset current update set
       new GlideUpdateSet().set(currentUpdateSetSysId);
      
       // Mark as completed
       for (var updateSetKey in scopeToUpdateSet) {
       var globalUpdateSetGR = new GlideRecord("sys_update_set");
       globalUpdateSetGR.get(scopeToUpdateSet[updateSetKey]);
       globalUpdateSetGR.setValue("state", "complete");
       globalUpdateSetGR.update();
       }
      }
      
      exportTaskDefinition(TASK_DEFINITION_TO_EXPORT_SYS_ID);
      
    3. 새 브라우저 탭에서 인스턴스를 열고 모두 > 문서 인텔리전스 > 문서 분류 > 사용 케이스.
    4. 익스포트할 사용 사례를 엽니다.
    5. URL에서 sys_id 복사합니다.

      예를 들어 다음 URL에서 fda6a8b36b700210f465ee188e44afe8%26 을 복사합니다.

      https://instancename.service-now.com/nav_to.do?uri=sys_di_task_definition.do?sys_id=fda6a8b36b700210f465ee188e44afe8%26sysparm_view=edit_sys_di_task_definition_doc_classifier

      팁:
      URL을 가져오려면 추가 작업 아이콘( 추가 작업 아이콘. )을 선택하고 URL 복사를 선택합니다.
    6. 스크립트 - 백그라운드 탭에서 TASK_DEFINITION_TO_EXPORT_SYS_ID 변수의 첫 번째 줄에 sys_id 붙여 넣습니다.

      예를 들어, 스크립트의 행은 다음 행과 같아야 합니다.

      var TASK_DEFINITION_TO_EXPORT_SYS_ID = "9f426b878749e110ba3540809bbb35a6";

    7. 전역 범위에서 백그라운드 스크립트를 실행하려면 스크립트 실행을 선택합니다.

      이 스크립트를 실행하는 데 몇 분 정도 걸릴 수 있습니다.

    8. 다음으로 이동 시스템 업데이트 세트 > 로컬 업데이트 세트.

      사용 사례 이름으로 시작하는 이름의 여러 업데이트 세트를 볼 수 있습니다.

    9. 이름에 "전역 업데이트 세트" 및 "전역 업데이트 세트 작업 x-y"가 포함된 각 업데이트 세트를 선택하고 관련 링크에서 업데이트 세트 배치를 XML로 익스포트를 선택하여 XML 파일을 다운로드합니다.
      주:
      "전역 업데이트 세트 작업 x-y"라는 이름에서 x-y는 업데이트 세트의 일부인 작업 범위를 나타냅니다. 예를 들어 문서 작업이 100개인 경우 배치 업데이트 세트 2개를 찾을 수 있는데, 하나는 이름에 "전역 업데이트 세트 작업 1-50"이 있고 다른 하나는 "전역 업데이트 세트 작업 51-100"입니다.

    결과

    사용 사례가 XML 파일로 컴퓨터에 익스포트됩니다.

    다음에 수행할 작업

    사용 사례를 익스포트한 후 인스턴스에서 사용할 수 있도록 임포트합니다 ServiceNow® . 자세한 내용은 문서 분류 사용 사례 임포트 문서를 참조하십시오.