ドキュメント分類ユースケースのエクスポート

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:13分
  • ドキュメント分類ユースケースをエクスポートし、別の ServiceNow® インスタンスで使用するために更新セットに追加します。

    始める前に

    • ユースケースをエクスポートおよびインポートするときは、両方のインスタンスに同じファミリリリースと同じバージョンがインストールされていることを確認してください ドキュメントインテリジェンス (DocIntel)
    • 必要なロール:sn_docintel.manager

    このタスクについて

    次の手順に従って、ドキュメント分類ユースケースを、そのフィールド、フィールドグループ、統合、フロー、および関連するすべての機械学習 (ML) モデルとともに更新セットにエクスポートします。その後、更新セットを別のインスタンスで使用するためにエクスポートできます。

    更新セットが自動的に作成され、バックグラウンドプロセスとして「完了」に設定されます。このプロセスには数分かかります。バックグラウンドジョブが終了する前に、結果の更新セットを手動で「完了」に設定したり、エクスポートしたりしないでください。

    詳細については、「System update sets」を参照してください。

    手順

    1. 次のように移動する。 All (すべて) > システム定義 > スクリプト – バックグラウンド.
    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. 新しいブラウザータブでインスタンスを開き、次に移動します: All (すべて) > Document Intelligence (ドキュメントインテリジェンス (DocIntel)) > ドキュメント分類 > Use Cases (ユースケース).
    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 変数の 1 行目にsys_idを貼り付けます。

      たとえば、スクリプトの行は次の行のようになります。

      var TASK_DEFINITION_TO_EXPORT_SYS_ID = "9f426b878749e110ba3540809bbb35a6";

    7. グローバルスコープでバックグラウンドスクリプトを実行するには、[ スクリプトを実行 ] を選択します。

      このスクリプトの実行には数分かかる場合があります。

    8. 次のように移動する。 システムアップデートセット > ローカル更新セット.

      ユースケースの名前で始まる名前の更新セットがいくつか表示される場合があります。

    9. 名前に「グローバル更新セット」と「グローバル更新セットタスク x-y」が含まれる各更新セットを選択し、関連リンクで [ 更新セットバッチを XML にエクスポート ] を選択して XML ファイルをダウンロードします。
      注:
      「グローバル更新セットタスク x-y」という名前では、x-y は更新セットの一部である一連のタスクを指します。たとえば、100 件のドキュメントタスクがある場合、2 つのバッチ更新セットがあり、1 つは名前に「グローバル更新セットタスク 1-50」、もう 1 つは「グローバル更新セットタスク 51-100」です。

    タスクの結果

    ユースケースは XML ファイルとしてコンピューターにエクスポートされます。

    次のタスク

    ユースケースをエクスポートした後、 ServiceNow® インスタンスで使用するためにインポートします。詳細については、「ドキュメント分類ユースケースのインポート」を参照してください。