ドキュメント分類ユースケースのエクスポート
ドキュメント分類ユースケースをエクスポートし、別の ServiceNow® インスタンスで使用するために更新セットに追加します。
始める前に
- ユースケースをエクスポートおよびインポートするときは、両方のインスタンスに同じファミリリリースと同じバージョンがインストールされていることを確認してください ドキュメントインテリジェンス (DocIntel) 。
- 必要なロール:sn_docintel.manager
このタスクについて
次の手順に従って、ドキュメント分類ユースケースを、そのフィールド、フィールドグループ、統合、フロー、および関連するすべての機械学習 (ML) モデルとともに更新セットにエクスポートします。その後、更新セットを別のインスタンスで使用するためにエクスポートできます。
更新セットが自動的に作成され、バックグラウンドプロセスとして「完了」に設定されます。このプロセスには数分かかります。バックグラウンドジョブが終了する前に、結果の更新セットを手動で「完了」に設定したり、エクスポートしたりしないでください。
詳細については、「System update sets」を参照してください。
手順
- 次のように移動する。 All (すべて) > システム定義 > スクリプト – バックグラウンド.
-
以下のスクリプトをコピーして、[ スクリプトを実行 ] ボックスに貼り付けます。
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); - 新しいブラウザータブでインスタンスを開き、次に移動します: All (すべて) > Document Intelligence (ドキュメントインテリジェンス (DocIntel)) > ドキュメント分類 > Use Cases (ユースケース).
- エクスポートするユースケースを開きます。
-
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 のコピー] を選択します。
-
[ スクリプト - バックグラウンド] タブで、
TASK_DEFINITION_TO_EXPORT_SYS_ID変数の 1 行目にsys_idを貼り付けます。たとえば、スクリプトの行は次の行のようになります。
var TASK_DEFINITION_TO_EXPORT_SYS_ID = "9f426b878749e110ba3540809bbb35a6"; -
グローバルスコープでバックグラウンドスクリプトを実行するには、[ スクリプトを実行 ] を選択します。
このスクリプトの実行には数分かかる場合があります。
-
次のように移動する。 システムアップデートセット > ローカル更新セット.
ユースケースの名前で始まる名前の更新セットがいくつか表示される場合があります。
-
名前に「グローバル更新セット」と「グローバル更新セットタスク x-y」が含まれる各更新セットを選択し、関連リンクで [ 更新セットバッチを XML にエクスポート ] を選択して XML ファイルをダウンロードします。
注:「グローバル更新セットタスク x-y」という名前では、x-y は更新セットの一部である一連のタスクを指します。たとえば、100 件のドキュメントタスクがある場合、2 つのバッチ更新セットがあり、1 つは名前に「グローバル更新セットタスク 1-50」、もう 1 つは「グローバル更新セットタスク 51-100」です。
タスクの結果
ユースケースは XML ファイルとしてコンピューターにエクスポートされます。
次のタスク
ユースケースをエクスポートした後、 ServiceNow® インスタンスで使用するためにインポートします。詳細については、「ドキュメント分類ユースケースのインポート」を参照してください。