Exportieren Sie einen Anwendungsfall für die Dokumentklassifizierung

  • Freigeben Version: Xanadu
  • Aktualisiert 4. September 2024
  • 4 Minuten Lesedauer
  • Exportieren Sie einen Anwendungsfall für die Dokumentklassifizierung zur Verwendung in einer anderen ServiceNow® -Instanz, indem Sie ihn einem Update Set hinzufügen.

    Vorbereitungen

    • Stellen Sie sicher, dass auf beiden Instanzen das gleiche Familienrelease und die gleiche Version von Document Intelligence installiert sind, wenn Sie Anwendungsfälle exportieren und importieren.
    • Erforderliche Rolle: sn_docintel.manager

    Warum und wann dieser Vorgang ausgeführt wird

    Befolgen Sie diese Schritte, um einen Anwendungsfall für die Dokumentklassifizierung zusammen mit seinen Feldern, Feldgruppen, Integrationen, Flows und allen zugehörigen Modellen für maschinelles Lernen (ML) in ein Update Set zu exportieren. Das Update Set kann dann zur Verwendung in einer anderen Instanz exportiert werden.

    Weitere Informationen finden Sie unter System update sets.

    Prozedur

    1. Navigieren zu Alle > Systemdefinition > Skripts: Hintergrund.
    2. Kopieren Sie das unten bereitgestellte Skript, und fügen Sie es in das Feld Skript ausführen ein.
      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. Öffnen Sie die Instanz auf einer neuen Browserregisterkarte, und navigieren Sie zu Alle > Document Intelligence > Dokumentklassifizierung > Anwendungsfälle.
    4. Öffnen Sie den Anwendungsfall, den Sie exportieren möchten.
    5. Kopieren Sie die sys_id aus der URL.

      Kopieren Sie beispielsweise 9f426b878749e110ba3540809bbb35a6 aus der folgenden URL:

      https://instanzname.service-now.com/now/docintel-admin/usecase/9f426b878749e110ba3540809bbb35a6

    6. Fügen Sie auf der Registerkarte Skripts – Hintergrund in der ersten Zeile für die Variable TASK_DEFINITION_TO_EXPORT_SYS_ID die sys_id ein.

      Die Zeile des Skripts sollte beispielsweise wie folgt aussehen:

      var TASK_DEFINITION_TO_EXPORT_SYS_ID = "9f426b878749e110ba3540809bbb35a6";

    7. Wählen Sie Skript ausführen aus, um das Hintergrundskript im globalen Bereich auszuführen.

      Die Ausführung dieses Skripts kann einige Minuten dauern.

    8. Navigieren zu Systemupdate-Sätze > Lokale Update-Sätze.

      Möglicherweise werden mehrere Update Sets angezeigt, deren Namen mit dem Namen des Anwendungsfalls beginnen.

    9. Wählen Sie alle Update-Sätze aus, deren Name „globaler Update-Satz“ und „globale Update-Satz-Aufgabe xy“ enthält, und wählen Sie in den zugehörigen Links Update-Satz-Batch in XML exportieren, um die XML-Dateien herunterzuladen.
      Hinweis:
      Mit dem Namen „globale Update-Satz-Aufgabe xy“ bezieht sich „xy“ auf eine Reihe von Aufgaben, die Teil des Update Set sind. Wenn Sie beispielsweise 100 Dokumentaufgaben haben, finden Sie zwei Batch-Update-Sätze, einen mit „globaler Update-Satz-Aufgabe 1-50“ im Namen und einen anderen mit „globaler Update-Satz-Aufgabe 51-100“.

    Ergebnisse

    Der Anwendungsfall wird als XML-Datei auf Ihren Computer exportiert.

    Nächste Maßnahme

    Nachdem Sie einen Anwendungsfall exportiert haben, importieren Sie ihn zur Verwendung in Ihrer -Instanz ServiceNow®. Weitere Informationen finden Sie unter Importieren Sie einen Anwendungsfall für die Dokumentklassifizierung.