跳轉到主要內容
以下是一些適用於實際情境的範例指令碼。

檢查文件中的規則錯誤

下列指令碼會檢查處理作業中的文件是否有任何規則錯誤。若處理作業中至少有一個文件包含規則錯誤,指令碼會回傳 true;否則會回傳 false
function hasRuleErrors() {
    for (var i = 0; i < Context.Transaction.Documents.length; i++) {
        var document = Context.Transaction.Documents[i];
        if (document.RuleErrors.length > 0 || document.IsUnknownSkill === true || document.HasSuspiciousSymbols === true)
            return true;
    }
    return false;
}
hasRuleErrors();

檢查是否需要手動審核

下列指令碼會檢查處理作業中的文件是否有錯誤。若至少有一份處理作業文件符合下列任一情況:
  • 規則錯誤
  • 不確定的文件類型
  • 辨識結果不確定的欄位或欄位字元
則指令碼會傳回 true,並將文件送交手動審核。否則,指令碼會傳回 false,並將文件送至匯出步驟。
function needManualReview() {
    for (var i = 0; i < Context.Transaction.Documents.length; i++) {
        var document = Context.Transaction.Documents[i];
        if (needManualReviewForDocument(document))
            return true;
    }
    return false;
}

function needManualReviewForDocument(document) {
    // 存在規則錯誤
    if (document.RuleErrors.length > 0)
        return true;
    // 文件類型不確定
    if (!document.IsResultClassConfident)
        return true;
    // 部分欄位不確定
    for (var i = 0; i < document.Fields.length; i++) {
        var field = document.Fields[i];
        if (field.IsSuspicious || containSuspiciousFields(field))
            return true;
    }
    return false;
}

function containSuspiciousFields(field) {
    // 檢查所有子欄位是否不確定
    if (field.Children) {
        for (var i = 0; i < field.Children.length; i++) {
            var childField = field.Children[i];
            if (childField.IsSuspicious || containSuspiciousFields(childField))
                return true;
        }
    }
    // 檢查所有實例欄位是否不確定
    if (field.Instances) {
        for (var i = 0; i < field.Instances.length; i++) {
            var instanceField = field.Instances[i];
            if (instanceField.IsSuspicious || containSuspiciousFields(instanceField))
                return true;
        }
    }

    return false;
}
needManualReview();