特定管理 > 訂做企業物件 > 物件初始化規則管理 > 瞭解物件初始化規則 > 定義用於物件初始化規則的 XML 文件內容 > 變數
  
變數
建立物件初始化規則時,可以選擇使用變數。使用 VarDef 標籤定義變數,而後使用 VarRef 標籤進行參考。使用變數的主要原因是可以一次生成一個值,然後在設定的規則內多次使用所生成的值,或是簡化複雜的規則。
在參考變數 (使用 VarRef 標籤) 時可用的變數定義由適當的物件類型及前後關聯階層決定。在處理參考變數的規則元素之前,不會計算變數的值。此外,變數定義中的值無法從正在評估之規則集的另一個值計算衍生而來。
下列 XML 範例使用 VarDef 標籤來生成編號,然後使用 VarRef 標籤,對所產生的編號設定零件名稱和編號:
<AttributeValues objType="wt.part.WTPart">
<VarDef id="GeneratedNumber" algorithm=
”com.ptc.windchill.enterprise.revisionControlled.server.impl.NumberGenerator”>
<Arg>{GEN:wt.enterprise.SequenceGenerator:WTPARTID_seq:10:0}</Arg>
</VarDef>
<AttrValue id="name" algorithm=”wt.rule.algorithm.StringConstant”>
<VarRef id="GeneratedNumber"/>
</AttrValue>
<AttrValue id="number" algorithm=”wt.rule.algorithm.StringConstant”>
<VarRef id="GeneratedNumber"/>
</AttrValue>
<AttrConstraint id="name"
algorithm="com.ptc.core.rule.server.impl.GatherAttributeConstraints">
<Value algorithm="com.ptc.core.rule.server.impl.GetServerAssignedConstraint"/>
</AttrConstraint>
<AttrConstraint id="number"
algorithm="com.ptc.core.rule.server.impl.GatherAttributeConstraints">
<Value algorithm="com.ptc.core.rule.server.impl.GetServerAssignedConstraint"/>
<Value algorithm="com.ptc.core.rule.server.impl.GetImmutableConstraint"/>
</AttrConstraint>
</AttributeValues>
在此範例 XML 中,會使用編號生成器演算法來設定 GeneratedNumber 變數。而後,變數的值會用於設定名稱和編號屬性的值。
* 
此範例假設列於範例中的條件約束都在適當位置;這些條件約束不是現成條件約束 (介面內需要名稱,若是現成條件約束,則不會生成名稱)。
下列是生成零件編號而後定義 GeneratedNumber 變數的 XML 範例,它的值會設定為等於編號屬性的值。而後,名稱屬性會設定為 GeneratedNumber 變數的值:
<AttributeValues objType="wt.part.WTPart">
<AttrValue id="number" algorithm=
"com.ptc.windchill.enterprise.revisionControlled.server.impl.NumberGenerator">
<Arg>{GEN:wt.enterprise.SequenceGenerator:WTPARTID_seq:10:0}</Arg>
</AttrValue>
<VarDef id="GeneratedNumber" algorithm="wt.rule.algorithm.StringConstant">
< Attr id="number">
</VarDef>
<AttrValue id="name" algorithm=”wt.rule.algorithm.StringConstant”>
<VarRef id="GeneratedNumber"/>
</AttrValue>
.
.
.
</AttributeValues>
因為正在定義之變數的值無法從正在評估之規則集的另一個值計算衍生而來,所以此範例無法將名稱和編號屬性設定為相同值。在此情況下,VarDef 標籤中識別的編號屬性值會來自於先前快取的編號屬性值 (如果有一個快取值),而不是來自於 AttrValue 標籤所設定的值,此標籤是針對相同規則中的編號屬性而指定。