Специализированное администрирование > Настройка бизнес-объектов > Администрирование правил инициализации объектов > Работа с правила инициализации объектов > Определение правил > Синтаксис тега VarDef
  
Синтаксис тега VarDef
XML-документ, используемый для правила, может содержать один или несколько тегов VarDef. Всегда вкладывайте тег VarDef в тег AttributeValues.
Каждый тег VarDef определяет имя переменной и ее значение, на которое затем можно ссылаться в правилах, используя тег VarRef. Определения переменных, доступные при создании ссылки на переменную (с помощью тега VarRef), определяются имеющимся типом объекта и иерархией контекста. Сведения об использовании этих иерархий см. в разделе Слияние правил для создания композитного правила.
Например, предположим, что вы определили переменную в контексте сайта, которую можно использовать в правилах, определенных для типа объекта wt.doc.WTDocument. После этого определение становится доступным во всех контекстах для правил, определенных для типа объекта wt.doc.WTDocument и всех его подтипов. Определение одной и той же переменной в контексте потомка сайта или связанного с подтипом wt.doc.WTDocument, обычно имеет преимущество перед определением в контексте сайта, если объект, к которому применяются правила, либо находился в контексте потомка, либо был связан с подтипом.
Значение переменной не вычисляется до тех пор, пока элемент правила не обработает ссылки на переменную. Для ссылок на конкретную переменную, определенную через тег VarDef, используется значение, заданное в атрибуте идентификатора тега VarDef в атрибуте идентификатора тега VarRef. Первый элемент обрабатывается при применении правила с определенной ссылкой на переменную, в результате чего вычисляется и кэшируется значение переменной. Затем кэшированное значение используется в каждой ссылке на переменную, которая обрабатывается в ходе применения правила.
Для тега VarDef используется следующий синтаксис:
<VarDef id="variable_name"
algorithm="default_value_algorithm">
algorithm_arguments
</VarDef>
где variable_name - имя переменной, используемое при ссылке в теге VarRef. Имя может состоять из любого имени XML по вашему выбору.
В следующем примере определяется переменная GeneratedNumber, которая может использоваться для генерации номеров документов, чтобы в сгенерированный номер можно было включить имя документа. Эту переменную можно определить, чтобы использовать ее при создании документов, путем вложения XML-кода в тег AttributeValues для объектов типа wt.doc.WTDocument:
<VarDef id="GeneratedNumber"
algorithm=”com.ptc.windchill.enterprise.revisionControlled.server.impl.NumberGenerator">
<Arg>{GEN:wt.enterprise.SequenceGenerator:WTDOCUMENTID_seq:10:0}</Arg>
</VarDef>
* 
Значение переменной, определенной в теге VarDef, не может быть производным от расчета другого значения в том же правиле. Например, невозможно определить переменную GeneratedNumber для детали из значения атрибута number, которое задается тегом AttrValue в том же правиле. Дополнительные сведения см. в разделе Variables.
Кроме того, можно включить дополнительные атрибуты XML в тег VarDef, чтобы выполнить следующие действия:
Задать определение переменной как абсолютное определение, чтобы использовать его в композитном правиле.
Игнорировать заданное определение, если оно унаследовано от родительского контекста.