Syntaxe des arguments dans un algorithme
Dans les balises AttrValue, AttrConstraint, Value et VarDef, trois balises vous permettent de déclarer des arguments pour les algorithmes de règle d'initialisation d'un objet fournis. Bien que chaque algorithme ait ses propres arguments obligatoires, ceux-ci peuvent être catégorisés comme suit :
Pour les arguments de chaîne, utilisez la balise Arg.
Pour les arguments que vous souhaitez évaluer comme attribut, utilisez la balise Attr.
Pour tous les arguments qui ne sont ni des chaînes ni des attributs, utilisez la balise Value. Par exemple, utilisez la balise Value pour spécifier des algorithmes supplémentaires.
De plus, dans les balises AttrValue, AttrConstraint et Value, vous pouvez spécifier un argument représentant la valeur d'une variable de règles grâce à la balise VarRef.
Les sections suivantes décrivent la syntaxe de chaque argument et fournissent des exemples d'utilisation des différents arguments.
Syntaxe de la balise Arg
La syntaxe de la balise Arg est la suivante :
<Arg>string</Arg>
* 
Les espaces utilisés dans une balise Arg seront ignorés. Pour indiquer un espace, utilisez un tiret (-) ou tout autre caractère. Si votre chaîne est amenée à contenir des caractères réservés XML, vous devez définir cette dernière en tant que section CDATA. Les caractères réservés comprennent notamment l'esperluette (&), ainsi que les caractères "inférieur à" et "supérieur à" (< >). Par exemple, si votre étiquette Arg contient le caractère "&", utilisez la syntaxe suivante afin de garantir un fonctionnement correct : <Arg><![CDATA[Text &amp; Text]]></Arg>.
Syntaxe de la balise Attr
La syntaxe de la balise Attr est la suivante :
<Attr id="attribute_name"/>
attribute_name représente le nom de l'attribut existant que vous souhaitez utiliser à l'exécution de l'algorithme. Comme nom d'attribut, utilisez la valeur spécifiée dans le champ Nom interne lors de la création de l'attribut.
* 
Si un attribut n'a pas de nom interne correspondant, les utilisateurs qui sont autorisés à le modifier peuvent lui en ajouter un à l'aide de l'utilitaire Gestion d'attributs et de types.
Syntaxe de la balise Value
La syntaxe de la balise Value dépend de la valeur que vous déclarez. Dans la balise Value, vous pouvez spécifier des arguments supplémentaires grâce aux balises prises en charge.
Syntaxe de la balise VarRef
La syntaxe de la balise VarRef est la suivante :
<VarRef id="variable_name"/>
variable_name représente le nom de la variable existante que vous souhaitez utiliser à l'exécution de l'algorithme. Cette variable doit être définie à l'aide d'une balise VarDef dans une règle pour le même type d'objet que celui spécifié dans la balise AttributeValues parente.
Si la variable référencée n'est pas définie, une erreur est générée lors de l'évaluation de la balise VarRef.
Exemples d'utilisation des balises Arg, Attr, Value et VarRef
Le code XML ci-dessous, qui définit la variable GeneratedNumber, utilise la balise Arg pour spécifier la séquence générant le numéro :
<VarDef id="GeneratedNumber"
algorithm=”com.ptc.windchill.enterprise.revisionControlled.server.impl.NumberGenerator">
<Arg>{GEN:wt.enterprise.SequenceGenerator:WTPARTID_seq:10:0}</Arg>
</VarDef>
Dans cet exemple, le générateur de séquence renvoie une valeur texte qui est ensuite utilisée comme valeur pour la variable GeneratedNumber.
Dans l'exemple XML suivant, la balise VarRef indique la valeur par défaut de l'attribut number :
<AttrValue id=”number”>
<VarRef id=”GeneratedNumber”/>
</AttrValue>
L'exemple part du principe que la définition de variable de GeneratedNumber est disponible par l'intermédiaire d'une autre règle (comme l'indique l'exemple précédent).
Dans le code XML suivant, l'algorithme EqualsTest requiert deux arguments. Le premier utilise la balise Attr pour évaluer l'attribut name et le second, la balise Value pour spécifier l'algorithme GetNullValue, qui renvoie une valeur nulle :
<Value algorithm="wt.rule.algorithm.EqualsTest">
<Attr id="name"/>
<Value algorithm="wt.rule.algorithm.GetNullValue"/>
</Value>
Est-ce que cela a été utile ?