Modifica degli attributi con variabili di workflow (Set)
In questa sezione viene presentato un esempio relativo all'utilizzo di variabili di workflow e del nodo di robot di esecuzione espressione per modificare un attributo di un business object principale. Questo esempio risulta utile se il partecipante non dispone dei permessi per modificare direttamente l'oggetto di un task assegnatogli.
Descrizione
L'API PersistableAdapter viene utilizzata per ottenere e impostare il valore di attributo del business object principale in base alla variabile di workflow di un'attività assegnata, il cui valore viene derivato dall'input utente in un task.
Istruzioni
Attenersi alla seguente procedura di livello superiore.
1. Nel modello di workflow creare una o più variabili a livello di processo. Queste variabili rappresentano attributi del business object principale che si desidera modificare. Selezionare un Nome tipo (tipo di dati) tra int, boolean o java.lang.string. Assicurarsi che le variabili siano visibili e reimpostabili.
2. Nella scheda Variabili del nodo di attività per il task assegnato, creare le variabili di attività da cui inizializzare e copiarle nelle variabili a livello di processo create nel passo precedente. Queste variabili vengono utilizzate per ottenere l'input utente per acquisire i valori che vengono poi copiati nelle variabili a livello di processo.
3. Creare un robot di esecuzione espressione. Nella scheda Espressione immettere il codice che aggiorna gli attributi del business object principale con la variabile di workflow, i cui valori sono stati ottenuti dall'input utente nell'attività assegnata. Per un esempio di codice di espressione, vedere la sezione riportata di seguito.
Esempio di codice di espressione
Nell'esempio di codice riportato di seguito sono disponibili quattro variabili con i seguenti nomi interni (come visualizzato in Gestione tipi), nomi di variabili e tipi di dati.
Nome interno attributo | Nome variabile workflow | Tipo di dati |
StringAttribute | StringAttributeVariable | java.lang.String |
BooleanAttribute | BooleanAttributeVariable | boolean |
DateAttribute | DateAttributeVariable | java.lang.String |
IntegerAttribute | IntegerAttributeVariable | Int |
| L'esempio riportato di seguito offre anche istruzioni per la formattazione del valore DateAttribute da un tipo di dati stringa. |
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();
}