Attribute mit Workflow-Variablen ändern (Satz)
Dieses Thema bietet ein Beispiel für die Verwendung von Workflow-Variablen und des Trigger-Robot-Knotens zum Ändern eines Attributs eines primären Geschäftsobjekts. Dies ist hilfreich, wenn der Teilnehmer keine Berechtigungen für die direkte Änderung des Objekts einer Aufgabe hat, die ihm zugewiesen ist.
Beschreibung
Die PersistableAdapter API wird verwendet, um den Attributwert für primäre Geschäftsobjekte auf Grundlage der Workflow-Variable einer zugewiesenen Aktivität abzurufen und festzulegen. Der Wert der Workflow-Variable wird von der Benutzereingabe in einer Aufgabe abgeleitet.
Anweisungen
Das folgende Verfahren auf übergeordneter Ebene wird verwendet:
1. Erstellen Sie in einer Workflow-Vorlage eine oder mehrere Variablen auf Prozessebene. Diese Variablen stellen die Attribute für primäre Geschäftsobjekte dar, die Sie ändern möchten. Wählen Sie den Typname (Datentyp) int, boolean oder java.lang.string aus. Stellen Sie sicher, dass die Variablen sichtbar und zurücksetzbar sind.
2. Auf der Registerkarte Variablen des Aktivitätsknotens für die zugewiesene Aufgabe erstellen Sie Aktivitätsvariablen, die von den Variablen auf Prozessebene, die im vorherigen Schritt erstellt wurden, initialisiert und in diese kopiert werden. Diese Variablen werden verwendet, um Benutzereingaben abzurufen und Werte zu erhalten, die dann in die Variablen auf Prozessebene kopiert werden.
3. Erstellen Sie einen Trigger-Robot. Auf der Registerkarte Ausdruck geben Sie den Code ein, der die Attribute für die primären Geschäftsobjekte mit der Workflow-Variable aktualisiert. Ihre Werte stammen aus der Benutzereingabe der zugewiesenen Aktivität. Im folgenden Abschnitt finden Sie ein Beispiel für einen Ausdruckscode.
Beispiel für einen Ausdruckscode
Im folgenden Codebeispiel sind vier Variablen mit den folgenden internen Namen (wie im Typ-Manager gezeigt), den Variablennamen und den Datentypen vorhanden:
Interner Attributname | Workflow-Variablenname | Datentyp |
StringAttribute | StringAttributeVariable | java.lang.String |
BooleanAttribute | BooleanAttributeVariable | boolean |
DateAttribute | DateAttributeVariable | java.lang.String |
IntegerAttribute | IntegerAttributeVariable | int |
| Das folgende Beispiel stellt auch Anweisungen zur Verfügung, wie der Wert DateAttribute in einem Zeichenfolge-Datentyp formatiert wird. |
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();
}