操作规则编辑错误和警告

Rule Designer 在编辑操作规则时搜索问题。 错误和警告显示在“问题”视图中。

以下部分描述了 Rule Designer 在您编辑操作规则时报告的错误和警告类型,其中报告了错误或警告以及可以执行的补救步骤。

词汇错误

当无法识别规则中的某个单词时,就会发生词汇错误,而当您在 Intellirule 编辑器中输入此规则时,就会报告这些错误。

此时需要修改规则文本以遵循由语言语法以及由应用程序中定义的词汇表共同指定的语法 (Syntax)。 错误消息可能有帮助,但并非所有时间都有帮助。 代码完成和词汇表使用可能用于学习词汇表的短语的准确语法。

语法错误

在 Intellirule 编辑器中输入规则时,如果规则语句格式不正确,那么将报告语法错误。

此时需要修改规则文本以遵循由语言语法以及由应用程序中定义的词汇表共同指定的语法 (Syntax)。 错误消息可能有帮助,但并非所有时间都有帮助。 代码完成和词汇表使用可能用于学习词汇表的短语的准确语法。

语义错误

在 Intellirule 编辑器中输入规则时,如果规则文本在语法上正确但其解释错误,那么将报告语义错误。

对于语义错误,您应该考虑修改规则文本以符合语言语义和可能已设置的语义规则 (例如, BOM 域)。

一致性错误

一致性错误由一致性校验器在构建时进行报告。 例如,如果规则包含不兼容测试或始终为 false 的测试,那么将引发一致性错误。

您可以在 Rule Designer 构建首选项中禁用一致性检查程序。

歧义

在以下情况下可能会发生歧义:

  • 规则的一部分至少有两种在语义上正确的解释。 可以使用括号、中间变量或标点(如果在语句中可用)来消除规则的歧义。

  • 词汇表中有两个相同的术语或短语。 更改词汇表中的其中一个术语或短语可以消除岐义。

下表列出在编辑操作规则时可以看到的错误消息。

表 1. 操作规则编辑错误快速参考
消息 描述
A ruleset parameter <parameter name> is already declared.

已声明规则集参数

已声明的某个变量与针对某个类型声明的规则集参数具有相同名称。

A ruleset variable <variable name> is already declared.

已声明规则集变量

已声明的某个变量与针对某个类型声明的规则集变量具有相同名称。

Ambiguous sentence.

模糊句子

规则的一部分至少具有两种在语义上正确的解释。 使用括号、中间变量或标点(如果在语句中可用)。

词汇表中有两个相同的术语或短语。 更改词汇表中的其中一个术语或短语。

An automatic variable <variable name> is already declared.

已声明自动变量

已声明的某个变量与针对某个类型声明的自动变量具有相同名称。

Can't specify else clause without if clause.

只有 Else,没有 If

规则中指定了 else 部分,但没有 if 部分。

Invalid cardinality <cardinality>, it is incompatible with <cardinality>

基数无效

给定基数(单个或多个)与所请求基数不兼容。

Invalid type <type name>, it is not assignable from type <type name>

不可分配自

给定类型 is 无法根据所请求类型进行赋值。 例如:

  • CD 的标题是 {1} 其中之一
  • 要分配的请求类型String(the title of a CD) 无法从Number(1).
Invalid value (<type name>) <value text>

值无效

与值类型关联的值描述符已报告有关值的错误(值校验)。

Invalid variable <variable name> for expected type <a type>.

变量无效

变量的类型与所请求类型不兼容。

Number must be integer.

非整数值

必须指定整数值。

Value is not in domain.

值不在域中

已指定 BOM 域,但规则中使用的值违反此域。

Value is out of the range 已指定 BOM 域的范围,但规则中使用的值超出此范围。
Only values are expected.

表达式无效

诸如句子、变量和语法构造之类的表达式无效。 只接受值表达式。

Incompatible sentence, due to incompatible precedence

某些运算符与句子中使用的类型不兼容。

例如,在句子 print "Hello world!" +2 -3中,运算符不兼容,因为 "Hello world!" +2 求值为String以及运算符-与字符串类型不兼容。 要解决此问题,请使用显式括号: print "Hello world!" + (2 - 3)"

Origin type: <type name> is not a super type of target type: <type name>.

不是以下类型的超类型

类型不是所请求类型的子类型。 例如:

the name of the customer is 3

请求的类型为String(the name of the customer) 并且给定的类型为Number(3).String不是超类型Number.

The variable <variable name> cannot be used, a variable of that type is already declared.

已绑定自动变量

如果已经声明了某一类型的全局变量,则无法使用该类型的自动变量。

The variable <variable name> is not assignable.

变量不可分配

无法为变量赋值。

The word <word> is expected in place of <word>.

标记突变

规则中的某个单词错误,并且错误恢复机制建议使用其他单词。

The word <word> is missing.

缺少标记

规则中缺少某个单词。

The word <word> is not required.

已插入标记

已在规则中的错误位置插入单词。

Unknown word: <word>.

未知标记

无法识别某个单词。 格式错误的值通常会发生此情况。

The phrase <phrase> is not required.

未实现

完整短语处于错误位置中,必须移除以更正规则。

The phrase <phrase> is missing.

未实现

文本中缺少一个完整短语。 补全短语以更正规则。

No term <term> found.

术语不存在

引用了词汇表中不存在的术语。

No navigation phrase <phrase> (of subject <subject>) found on term <term>. 针对给定术语的导航句子在词汇表中不存在。
No action phrase <phrase> (of subject <subject>) found on term <term>. 针对给定术语的操作句子在词汇表中不存在。
No automatic variable <variable> found. 未针对某个术语将自动变量声明为自动,或者某个术语在词汇表中不存在。
Too many errors. Cannot recover from errors. 规则包含过多错误而无法更正。
Invalid variable name: <variable>, the characters: <character> are not allowed.

名称/字符无效

变量名称无效,并包含以下一个或多个无效字符:

' " \n \r \t / ( ) , ;

Unknown phrase, did you mean: <phrase>?

未知短语

文本中的某个句子不正确,但是与某个现有正确句子类似。 该消息会建议正确的句子。

Value (<value type>) <value text> is incorrect. <a message>

值错误

与短语中的角色关联的值信息已报告有关值的错误(值校验)。 如果在定义了 BOM 域的位置中使用了值,而且该值违反了 BOM 域,那么将生成此错误。

Variable <variable name> already declared.

已声明变量

已声明该名称的变量。

Variable <variable name> is not declared.

未声明变量

引用了一个未声明的变量。

下表列出了您在编辑操作规则时可能看到的最新警告。

表 2. 操作规则编辑警告快速参考
消息 描述
<an element> is deprecated

不推荐元素

在规则中使用了某个不推荐元素(类型、常量或短语)。Deprecated是业务元素上定义的属性。

Can not bind value types. 不能在绑定中使用诸如数字或字符串之类的值类型。
Category(ies) (<categories>) defined on phrase <a phrase> does not match the rule category filter.

短语类别无效

该短语不能在规则中使用,因为该短语的类别与规则类别过滤器不匹配。

Category(ies) (<categories>) defined on term <a term> does not match the rule category filter.

术语类别无效

该术语不能在规则中使用,因为该术语的类别与规则类别过滤器不匹配。

Category(ies) (<categories>) defined on type of variable <variable name> does not match the rule category filter.

变量类别无效

该变量不能在规则中进行声明,因为该变量类型的类别与规则类别过滤器不匹配。

Category(ies) (<categories>) defined on value <a constant> does not match the rule category filter.

常量类别无效

该常量不能在规则中使用,因为该常量的类别与规则类别过滤器不匹配。

Predicate not applicable to value types.

谓词不适用

该谓词不适用于数字或字符串之类的值类型。

The construct <construct> is deprecated.

不推荐使用构造

在规则中使用了不推荐的语法构造(从语言的 XML 模式定义中发出)。

The (part of the) rule execution may be unsafe: <message>.

规则执行服务器

该规则尝试将属性设置为其域范围之外的值。

The (part of the) rule is never applicable because <message>. 永远不会应用该规则,因为永远不能满足其条件。 这通常由规则中的简单逻辑错误导致。
The rule is incomplete, fill all the placeholders.

规则不完整

规则至少具有一个空占位符。

Value (<value type>) <value text> is incorrect. <a message>

值警告

与短语中的角色关联的值信息已报告有关值的警告(值校验)。

Variable <variable name> is not used.

未使用变量 (Variable Not Used)

变量已声明但未使用。