Vai al contenuto principale
Di seguito alcuni script di esempio per situazioni reali.

Verifica degli errori di regola in un documento

Lo script seguente verifica la presenza di errori di regola nei documenti della transaction. Se almeno un documento della transaction contiene errori di regola, lo script restituisce true; in caso contrario restituisce 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();

Verificare se è necessaria la revisione manuale

Il seguente script verifica la presenza di errori nei documenti della transaction. Se almeno un documento della transaction contiene uno dei seguenti elementi:
  • Errori di regole
  • Un tipo di documento incerto
  • field o caratteri di field riconosciuti con incertezza
Lo script restituisce true e invia i documenti alla revisione manuale. In caso contrario, restituisce false e invia i documenti alla fase di esportazione.
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) {
    // Esistono errori di regole
    if (document.RuleErrors.length > 0)
        return true;
    // Il tipo di documento non è attendibile
    if (!document.IsResultClassConfident)
        return true;
    // Alcuni field sono sospetti
    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) {
    // Controlla tutti i figli per field sospetti
    if (field.Children) {
        for (var i = 0; i < field.Children.length; i++) {
            var childField = field.Children[i];
            if (childField.IsSuspicious || containSuspiciousFields(childField))
                return true;
        }
    }
    // Controlla tutte le istanze per field sospetti
    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();