16.11. DRL トラブルシューティングのエラーメッセージ
Red Hat Process Automation Manager は、DRL ファイルの問題のトラブルシューティングと解決に役立つ、DRL エラーの標準化されたメッセージを提供します。エラーメッセージでは、以下の形式が使用されています。
図16.1 DRL ファイルの問題に関するエラーメッセージの形式
- 最初のブロック: エラーコード
- 2 番目のブロック: DRL ソースのエラーが発生している行および列
- 3 番目のブロック: 問題の説明
- 4 番目のブロック: DRL ソース内のエラーが発生しているコンポーネント (ルール、関数、クエリー)
- 5 番目のブロック: DRL ソース内のエラーが発生しているパターン (該当する場合)
Red Hat Process Automation Manager では、以下の標準化されたエラーメッセージがサポートされます。
- 101: no viable alternative
パーサーが決定ポイントに到達したにもかかわらず、選択肢を特定できなかったことを示します。
誤ったスペリングを含むルールの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow エラーメッセージ
[ERR 101] Line 4:4 no viable alternative at input 'exits' in rule "simple rule"
[ERR 101] Line 4:4 no viable alternative at input 'exits' in rule "simple rule"Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルール名がないルールの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow エラーメッセージ
[ERR 101] Line 3:2 no viable alternative at input 'when'
[ERR 101] Line 3:2 no viable alternative at input 'when'Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、パーサーがキーワード
whenを検出しましたが、予想していたのはルール名であったため、パーサーはwhenに予想外の不適切なトークンというフラグを付けます。誤った構文が使用されるルールの例
1: rule "simple rule" 2: when 3: Student( name == "Andy ) // Must be `"Andy"` 4: then 5: end
1: rule "simple rule" 2: when 3: Student( name == "Andy ) // Must be `"Andy"` 4: then 5: endCopy to Clipboard Copied! Toggle word wrap Toggle overflow エラーメッセージ
[ERR 101] Line 0:-1 no viable alternative at input '<eof>' in rule "simple rule" in pattern Student
[ERR 101] Line 0:-1 no viable alternative at input '<eof>' in rule "simple rule" in pattern StudentCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記列と行の値が
0:-1の場合は、パーサーがソースファイルの終わり (<eof>) に到達しましたが、不完全な設定を検出したことを示します。よくある原因として、引用符"…"、アポストロフィー'…'、または括弧(…)が欠落している場合があります。- 102: mismatched input
パーサーが特定の記号を予想していましたが、これが現在の入力位置で欠落していることを示します。
不完全なルールステートメントが使用されるルールの例
1: rule simple_rule 2: when 3: $p : Person( // Must be a complete rule statement1: rule simple_rule 2: when 3: $p : Person( // Must be a complete rule statementCopy to Clipboard Copied! Toggle word wrap Toggle overflow エラーメッセージ
[ERR 102] Line 0:-1 mismatched input '<eof>' expecting ')' in rule "simple rule" in pattern Person
[ERR 102] Line 0:-1 mismatched input '<eof>' expecting ')' in rule "simple rule" in pattern PersonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記列と行の値が
0:-1の場合は、パーサーがソースファイルの終わり (<eof>) に到達しましたが、不完全な設定を検出したことを示します。よくある原因として、引用符"…"、アポストロフィー'…'、または括弧(…)が欠落している場合があります。誤った構文が使用されるルールの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow エラーメッセージ
[ERR 102] Line 5:36 mismatched input ',' expecting ')' in rule "Wrong syntax" in pattern Car [ERR 101] Line 5:57 no viable alternative at input 'type' in rule "Wrong syntax" [ERR 102] Line 5:106 mismatched input ')' expecting 'then' in rule "Wrong syntax"
[ERR 102] Line 5:36 mismatched input ',' expecting ')' in rule "Wrong syntax" in pattern Car [ERR 101] Line 5:57 no viable alternative at input 'type' in rule "Wrong syntax" [ERR 102] Line 5:106 mismatched input ')' expecting 'then' in rule "Wrong syntax"Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、構文に関する問題が原因で相互に関連する複数のエラーメッセージが発生しています。
&&演算子で,を置き換えるという 1 つの解決策により、すべてのエラーが解消されます。複数のエラーが発生した場合に、エラーが前のエラーの結果である場合があるため、一度に 1 つずつ解決します。- 103: failed predicate
セマンティクスの述語の検証が
falseと評価されたことを示します。これらのセマンティクスの述語は一般にdeclare、rule、exists、notなど、DRL ファイルのコンポーネントのキーワードを特定するために使用されます。無効なキーワードが使用されているルールの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow エラーメッセージ
[ERR 103] Line 6:0 rule 'rule_key' failed predicate: {(validateIdentifierKey(DroolsSoftKeywords.RULE))}? in rule[ERR 103] Line 6:0 rule 'rule_key' failed predicate: {(validateIdentifierKey(DroolsSoftKeywords.RULE))}? in ruleCopy to Clipboard Copied! Toggle word wrap Toggle overflow Some textの行は、DRL キーワード設定で始まっていないか、DRL キーワード設定の一部ではないため、パーサーが DRL ファイルの残りの部分の評価に失敗します。注記このエラーは
102: mismatched inputに似ていますが、通常は DRL キーワードが関係しています。- 104: trailing semi-colon not allowed
ルール条件の
eval()句でセミコロン;が使用されていますが、セミコロンは使用できません。eval()と末尾のセミコロンが使用されているルールの例1: rule "simple rule" 2: when 3: eval( abc(); ) // Must not use semicolon `;` 4: then 5: end
1: rule "simple rule" 2: when 3: eval( abc(); ) // Must not use semicolon `;` 4: then 5: endCopy to Clipboard Copied! Toggle word wrap Toggle overflow エラーメッセージ
[ERR 104] Line 3:4 trailing semi-colon not allowed in rule "simple rule"
[ERR 104] Line 3:4 trailing semi-colon not allowed in rule "simple rule"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 105: did not match anything
パーサーが文法内で、少なくとも 1 回は代替の選択肢に一致する必要があるサブルールに到達しましたが、サブルールがいすれにも一致しなかったことを示します。パーサーは出口のないブランチに入ります。
空の条件内に無効なテキストがあるルールの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow エラーメッセージ
[ERR 105] Line 2:2 required (...)+ loop did not match anything at input 'WHEN' in rule "empty condition"
[ERR 105] Line 2:2 required (...)+ loop did not match anything at input 'WHEN' in rule "empty condition"Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、条件は空であることが意図されていますが、
Noneという単語が使用されています。このエラーは、DRL の有効でないキーワード、データタイプ、またはパターン設定であるNoneを削除することによって解決できます。
解決できないその他の DRL エラーメッセージが発生した場合は、Red Hat のテクニカルアカウントマネージャーにお問い合わせください。