> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# サンプル スクリプト

> Condition アクティビティ スクリプトのサンプル: ルール エラーの確認や、Documentを手動確認に回す際によく使われるパターン。

Condition アクティビティ スクリプトを記述する際によく使われるパターンです。各サンプルは [`Context.Transaction.Documents`](/ja/vantage/documentation/skill-designer/process/condition-activity/transaction) を読み取り、ブール値を返します。

<div id="checking-for-rule-errors-in-a-document">
  ## ドキュメント内のルールエラーの確認
</div>

次のスクリプトは、トランザクション内の少なくとも1つの Document にルールエラー、未確定のドキュメントクラス、または疑わしい記号がある場合に `true` を返し、それ以外の場合は `false` を返します。

```javascript theme={null}
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();
```

<div id="checking-whether-manual-review-is-required">
  ## 手動確認が必要かどうかの確認
</div>

次のスクリプトは、トランザクション内の少なくとも1件のドキュメントに次のいずれかがある場合、`true`を返してドキュメントを手動確認にルーティングします。

* ルールエラー
* 不確かな文書タイプ
* 疑わしいfieldまたはfield文字 (入れ子の子要素および繰り返しインスタンスを含む)

それ以外の場合は`false`を返し、ドキュメントはエクスポート手順に進みます。

```javascript theme={null}
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;
    // 一部のfieldが疑わしい
    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) {
    // 疑わしい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;
        }
    }
    // 疑わしいfieldがないか全てのインスタンスをチェック
    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();
```

<div id="related-topics">
  ## 関連トピック
</div>

* [Context](/ja/vantage/documentation/skill-designer/process/condition-activity/context)
* [Transaction](/ja/vantage/documentation/skill-designer/process/condition-activity/transaction)
* [Document](/ja/vantage/documentation/skill-designer/process/condition-activity/document)
* [Field](/ja/vantage/documentation/skill-designer/process/condition-activity/field)
* [RuleError](/ja/vantage/documentation/skill-designer/process/condition-activity/rule-error)
* [オブジェクト モデル](/ja/vantage/documentation/skill-designer/process/condition-activity/object-model)
