跳转到主要内容
下面是一些针对实际场景的示例脚本。

检查文档中的规则错误

下面的脚本会检查事务文档中是否存在任何规则错误。如果至少有一个事务文档存在规则错误,脚本将返回 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) {
    // Rule errors exist
    if (document.RuleErrors.length > 0)
        return true;
    // Document type is not confident
    if (!document.IsResultClassConfident)
        return true;
    // Some fields are suspicious
    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) {
    // Check all children for suspicious 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();