アルゴリズム引数の構文
AttrValueAttrConstraintValueVarDef の各タグ内では、3 つのタグを使用して、既定のオブジェクト初期化規則アルゴリズムの引数を指定できます。必須の引数セットはアルゴリズムによって異なりますが、これらの引数は以下のカテゴリに属します。
文字列引数では Arg タグを使用します。
属性として評価させる引数では、Attr タグを使用します。
文字列または属性以外のすべての引数では、Value タグを使用します。たとえば、追加のアルゴリズムを指定するには Value タグを使用します。
また、AttrValue タグ、AttrConstraint タグ、および Value タグでは、VarRef タグを使用して、規則変数の値となる引数を指定できます。
以下のセクションでは、各引数の構文について説明し、引数の使用例を示します。
Arg タグの構文
Arg タグの構文は以下のとおりです。
<Arg>string</Arg>
* 
Arg タグ内に使用されている空白は無視されます。空白を表すには、ハイフン (-) やその他の文字を代わりに使用します。文字列に XML 予約文字を含む必要がある場合は、文字列を CDATA セクションとして定義する必要があります。予約文字にはアンパーサンド (&) と左右の山形括弧 (< >) があります。たとえば、Arg タグにアンパーサンド文字 (&) を含む場合は、想定どおりに機能するように次の構文を使用します。<Arg><![CDATA[Text &amp; 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 タグの使用例
以下のサンプル XML では、GeneratedNumber 変数内で 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 アルゴリズムを実行するには 2 つの引数が必要です。最初の引数では、Attr タグを使用して名前属性を評価します。2 番目の引数では、Value タグを使用して、null 値を返す GetNullValue アルゴリズムを指定します。
<Value algorithm="wt.rule.algorithm.EqualsTest">
<Attr id="name"/>
<Value algorithm="wt.rule.algorithm.GetNullValue"/>
</Value>
これは役に立ちましたか?