Modification d'attributs avec des variables de processus (Set)
Cette rubrique contient un exemple d'utilisation des variables de processus et du noeud de l'automate d'expression pour modifier un attribut associé à un objet métier principal. Cela peut s'avérer utile lorsque le participant ne dispose d'aucune permission lui permettant de modifier directement un objet correspondant à l'objet d'une tâche affectée audit participant.
Description
L'API PersistableAdapter permet d'obtenir et de définir la valeur d'attribut d'objet métier principal en fonction de la variable de processus d'une activité affectée. La valeur de cette variable est dérivée de l'entrée utilisateur effectuée dans une tâche.
Instructions
La procédure générale utilisée est la suivante :
1. Dans un modèle de processus, créez une ou plusieurs variables de processus. Ces variables représentent les attributs d'objet métier principal que vous souhaitez modifier. Sélectionnez une valeur pour le champ Nom du type (type de données), à savoir entier, booléen ou chaîne java.lang.string. Assurez-vous que les variables correspondent à Visible et Réinitialisable.
2. Dans l'onglet Variables du noeud d'activité correspondant à la tâche affectée, créez des variables d'activité pour l'initialisation, copiez-les et collez-les dans le dossier des variables de processus que vous avez créées lors de l'étape précédente. Ces variables permettent d'obtenir les entrées utilisateur afin d'acquérir les valeurs adéquates. Ces dernières sont ensuite copiées et collées dans le dossier des variables de processus.
3. Créez un automate d'expression. Dans l'onglet Expression, saisissez le code permettant de mettre à jour les attributs de l'objet métier principal en fonction de la variable de processus (ses valeurs ayant été obtenues au moyen des entrées utilisateur correspondant à l'activité affectée). Pour découvrir un exemple de code d'expression, consultez la section ci-après.
Exemple de code d'expression
Dans l'exemple de code qui suit figurent quatre variables, qui présentent les noms internes (indiqués par le gestionnaire des types), les noms de variable et les types de données suivants :
Nom d'attribut interne | Nom de la variable de processus | Type de données |
StringAttribute | StringAttributeVariable | java.lang.String |
BooleanAttribute | BooleanAttributeVariable | boolean |
DateAttribute | DateAttributeVariable | java.lang.String |
IntegerAttribute | IntegerAttributeVariable | int |
| L'exemple ci-après fournit également des instructions sur le formatage de la valeur DateAttribute à partir de données de type chaîne. |
wt.part.WTPart part = (wt.part.WTPart)primaryBusinessObject;
//Get check out folder for the current user in the session
wt.folder.Folder checkoutFolder = wt.vc.wip.WorkInProgressHelper.service.getCheckoutFolder();
//Check out object
wt.vc.wip.CheckoutLink chklink = wt.vc.wip.WorkInProgressHelper.service.checkout(part, checkoutFolder, "Check out comment");
wt.part.WTPart wrk = (wt.part.WTPart) chklink.getWorkingCopy();
System.out.println("\nChecked out WTPart ......"+wrk.getName()+"\t"+wrk.getCheckoutInfo());
com.ptc.core.lwc.server.PersistableAdapter pbo = new com.ptc.core.lwc.server.PersistableAdapter(wrk, null, null, null);
System.out.println("\nGot pbo...."+pbo.toString());
pbo.load("StringAttribute","BooleanAttribute","DateAttribute","IntegerAttribute");
System.out.println("Loading Attributes");
System.out.println("StringAttribute : "+pbo.get("StringAttribute"));
System.out.println("BooleanAttribute : "+pbo.get("BooleanAttribute"));
System.out.println("DateAttribute : "+pbo.get("DateAttribute"));
System.out.println("IntegerAttribute : "+pbo.get("IntegerAttribute"));
pbo.set("StringAttribute", StringAttributeVariable);
pbo.set("BooleanAttribute", BooleanAttributeVariable);
pbo.set("IntegerAttribute", new java.lang.Long(IntegerAttributeVariable));
//Date attribute is more complex
java.text.DateFormat df = java.text.DateFormat.getDateInstance(java.text.DateFormat SHORT);
String tempDate= DateAttributeVariable;
java.util.Date objectDate = df.parse(tempDate);
pbo.set("DateAttribute", new java.sql.timestamp(objectDate.gettime()));
wt.fc.Persistable p = pbo.apply();
//Modify attributes
wt.fc.PersistenceHelper manager.modify(p);
try
{
// Check in object
wt.vc.wip.WorkInProgressHelper.service.checkin((wt.vc.wip.Workable) p, "Check in comment");
}
catch (wt.util.WTException e)
{
e.printStackStrace();
}
catch (wt.util.WTPropertyVetoException e)
{
e.printStackTrace();
}