14.11. DRL 故障排除的错误消息
Red Hat Process Automation Manager 为 DRL 错误提供标准化的信息,以帮助您对 DRL 文件中的问题进行故障排除和解决问题。错误消息使用以下格式:
图 14.1. DRL 文件问题的错误消息格式
- 1st Block: Error code
- 发生错误的 DRL 源中的 2nd Block: Line 和 column
- 第 3 个块: 问题的描述
- 4th Block: 发生错误的 DRL 源(规则、函数、查询)中的组件
- 5th Block: 在发生错误的 DRL 源中的模式(如果适用)
Red Hat Process Automation Manager 支持以下标准化错误消息:
- 101: 无可行替代方案
表示解析器达到决策点,但不能识别替代方案。
带有不正确的拼写错误的规则示例
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 在本例中,解析器在预期预期
名称时
会遇到关键字,因此当
作为不正确的预期令牌时,它会标记。带有不正确语法的规则示例
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: end
Copy 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 Student
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意行和列值为
0:-1
表示解析器达到源文件的末尾(<eof>
;),但遇到不完整的结构,通常是因为缺少引号"…"
、apostrophes'…'
或括号(…)
。- 102: 不匹配的输入
表示解析器预期在当前输入位置中缺少的特定符号。
带有不完整 rule 语句的规则示例
1: rule simple_rule 2: when 3: $p : Person( // Must be a complete rule statement
1: rule simple_rule 2: when 3: $p : Person( // Must be a complete rule statement
Copy 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 Person
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意行和列值为
0:-1
表示解析器达到源文件的末尾(<eof>
;),但遇到不完整的结构,通常是因为缺少引号"…"
、apostrophes'…'
或括号(…)
。带有不正确语法的规则示例
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 在本例中,syntactic 问题会导致多个与彼此相关的错误消息。使用
&
amp;& 运算符替换逗号的单一解决方案会解决所有错误。- 103: failed predicate
表示验证语义 predicate 被评估为
false
。这些语义 predicates 通常用于识别 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 rule
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有些文本行
无效,因为它没有以或不是 DRL 关键字结构的一部分,因此解析器无法验证 DRL 文件的其余部分。注意此错误类似于
102:不匹配的输入
,但通常涉及 DRL 关键字。- 104:不允许使用分号
表示规则条件中的
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: end
Copy 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: 不与任何项匹配
表示解析器在语法中达到了一个子规则,它必须至少匹配一次,但子规则与任何规则不匹配。解析器已输入了一个分支,无需超时。
空条件中带有无效文本的规则示例
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
。通过删除None
来解决此错误,这不是有效的 DRL 关键字、数据类型或模式结构。
如果您遇到无法解决的其他 DRL 错误消息,请联系您的红帽大客户经理。