算法自变量的语法
在 AttrValue、AttrConstraint、Value 和 VarDef 标记中,有三种标记可用来为预置对象初始化规则算法指定自变量。每种算法都有唯一的一组所需自变量,这些自变量分为以下类别:
• 对于字符串自变量,请使用 Arg 标记。
• 对于想要作为属性评估的自变量,请使用 Attr 标记。
• 对于所有非字符串或属性的自变量,请使用 Value 标记。例如,使用 Value 标记来指定其他算法。
除了 AttrValue、AttrConstraint 和 Value 标记以外,还可以使用 VarRef 标记来指定作为规则变量值的自变量。
以下各节描述了每个自变量的语法,并提供了使用自变量的示例。
Arg 标记语法
Arg 标记的语法如下所示:
<Arg>string</Arg>
|
用于 Arg 标记中的空格将被忽略。要表示空格,请使用连字符 (-) 或使用其他字符。如果需要使字符串包含 XML 保留字符,则必须将该字符串定义为 CDATA 部分。保留字符包括“与”(&) 和左/右尖角号 (< >)。例如,如果您的 Arg 标记包括“与”符号字符 (&),请使用下面语法确保其按预期方式起作用:<Arg><![CDATA[Text & Text]]></Arg>。
|
Attr 标记语法
Attr 标记的语法如下所示:
<Attr id="attribute_name"/>
其中,attribute_name 是执行该算法时要使用的现有属性的名称。对于属性名称,使用创建属性时在“内部名称”字段中指定的值。
Value 标记语法
Value 标记的语法取决于指定的值。在 Value 标记内,可以使用任意受支持的标记来指定附加的自变量。
VarRef 标记语法
VarRef 标记的语法如下所示:
<VarRef id="variable_name"/>
其中,
variable_name 是执行该算法时要使用的现有变量的名称。对于在父项
AttributeValues 标记中指定的相同对象类型,必须在规则中使用
VarDef 标记定义变量。
如果引用的变量不存在变量定义,则评估 VarRef 标记时会出错。
使用 Arg、Attr、Value 和 VarRef 标记的示例
下列定义 GeneratedNumber 变量的示例 XML 使用 Arg 标记来指定用于生成编号的序列:
<VarDef id="GeneratedNumber"
algorithm=”com.ptc.windchill.enterprise.revisionControlled.server.impl.NumberGenerator">
<Arg>{GEN:wt.enterprise.SequenceGenerator:WTPARTID_seq:10:0}</Arg>
</VarDef>
在本例中,序列生成器返回的字符串值被用作 GeneratedNumber 变量的值。
在以下示例 XML 中,VarRef 标记为编号属性提供默认值:
<AttrValue id=”number”>
<VarRef id=”GeneratedNumber”/>
</AttrValue>
该示例假定 GeneratedNumber 的变量定义在其他规则中也可用 (如上一个示例所示)。
在下列示例 XML 中,EqualsTest 算法需要两个自变量。第一个自变量使用 Attr 标记来评估名称属性;第二个自变量使用 Value 标记来指定返回空值的 GetNullValue 算法:
<Value algorithm="wt.rule.algorithm.EqualsTest">
<Attr id="name"/>
<Value algorithm="wt.rule.algorithm.GetNullValue"/>
</Value>