Récupération d'attributs dans une expression de routage (Get)
Vous pouvez utiliser la méthode Get de l'API PersistableAdapter pour récupérer les valeurs d'attribut à utiliser dans un modèle de processus de routage. L'exemple ci-après récupère les valeurs d'attribut d'un objet métier principal et les utilise dans l'expression de routage d'un noeud de connecteur Or dans un modèle de processus de routage.
Description
L'API PersistableAdapter récupère la valeur d'attribut d'objet métier principal à utiliser dans une variable de processus d'une activité affectée.
Instructions
La procédure utilisée est la suivante :
1. Ajoutez un noeud de connecteur OU.
2. Dans les propriétés de connecteur, spécifiez les informations suivantes :
a. Sous Type de routage, sélectionnez Conditionnel.
b. Sous le champ Evénements de routage, entrez le nom d'un ou de plusieurs événements personnalisés (en indiquant les différentes entrées sur des lignes distinctes).
c. Dans le champ Expression de routage/comptage, entrez le code d'expression de routage qui sélectionne un événement de routage en fonction des valeurs d'attribut d'objet métier principal. Cliquez sur Vérifier la syntaxe pour vous assurer que la syntaxe de l'expression est correcte. Pour découvrir un exemple de code d'expression de routage, consultez la section ci-après.
d. Cliquez sur OK pour fermer la fenêtre Propriétés de Conditionnel.
3. Créez un noeud d'activité pour chaque événement de routage.
4. Créez un lien de processus pour chaque événement de routage liant le noeud conditionnel au noeud d'activité associé. Dans les propriétés de lien de processus, spécifiez l'action Démarrer en regard de l'événement de routage applicable sous Evénement dans Conditionnel.
5. Achevez votre modèle de processus de la manière appropriée.
Exemple de code d'expression de routage
L'exemple de code qui suit comporte quatre événements de routage reposant sur les valeurs de quatre attributs d'objet métier principal. L'expression utilise l'API PersistableAdapter pour obtenir les valeurs des attributs d'objet métier principal. Chaque valeur est ensuite convertie en une variable qui est évaluée dans l'expression pour sélectionner un événement de routage. Le tableau ci-après répertorie les noms internes d'attribut d'objet métier principal (comme indiqué dans le Gestionnaire des types), les noms de variable, les types de données et l'événement de routage associé pour chaque attribut :
Nom d'attribut interne | Nom de la variable de processus | Type de données | Evénement de routage associé |
---|
StringAttribute | stringVar | java.lang.String | StringMatch |
BooleanAttribute | booleanVar | boolean | BooleanMatch |
DateAttribute | dateVar | java.lang.String | DateMatch |
IntegerAttribute | integerVar | int | IntegerMatch |
| Notez le code utilisé dans l'exemple suivant pour formater la valeur de l'élément DateAttribute à partir de données de type chaîne, afin d'obtenir un format de date. |
wt.part.WTPart part = (wt.part.WTPart)primaryBusinessObject;
com.ptc.core.lwc.server.PersistableAdapter obj = new
com.ptc.core.lwc.server.PersistableAdapter(part,null,null,null);
obj.load("BooleanAttribute","DateAttribute","IntegerAttribute","StringAttribute");
// Retriving Boolean Attribute
Boolean booleanVar = (boolean)obj.get ("BooleanAttribute");
System.out.println("booleanVar = "+booleanVar);
// Retriving String Attribute
String stringVar = (String) obj.get ("StringAttribute");
System.out.println("stringVar = "+stringVar);
// Retriving Integer Attribute
Long integerVar = new java.lang.Long ((java.lang.Long)obj.get ("IntegerAttribute"));
System.out.println("integerVar = "+integerVar);
// Retriving Date Attribute
java.text.DateFormat df = java.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT);
java.sql.Timestamp tempDate = (java.sql.Timestamp)obj.get ("DateAttribute");
java.util.Date dateVar = new java.util.Date(tempDate.getTime());
System.out.println("dateVar = "+dateVar);
java.util.Date today = new java.util.Date();
System.out.println("today = "+today );
if (booleanVar)
{
result="BooleanMatch";
System.out.println("result = "+result);
}
else if(today.compareTo(dateVar) == 0)
{
result = "DateMatch";
System.out.println("result = "+result);
}
else if (integerVar == 123)
{
result= "IntegerMatch";
System.out.println("result = "+result);
}
else if (stringVar.equalsIgnoreCase ("test"))
{
result = "StringMatch";
System.out.println("result = "+result);
}