Modificación de atributos con variables de proceso de trabajo (conjunto)
En este tema se proporciona un ejemplo de utilización de variables de proceso de trabajo y del nodo del robot de ejecución de expresiones para modificar un atributo de un objeto de negocio principal. Esto es de utilidad si el participante no dispone de permisos para modificar directamente el objeto que es el asunto de una tarea que tiene asignada.
Descripción
La API PersistableAdapter se utiliza para obtener y definir el valor de atributo del objeto de negocio principal según la variable de proceso de trabajo de una actividad asignada. El valor de la variable de proceso de trabajo se deriva de la entrada del usuario en una tarea.
Instrucciones
Se utiliza el siguiente procedimiento de nivel superior:
1. En una plantilla de proceso de trabajo, cree una o varias variables de nivel proceso. Estas variables representan los atributos del objeto de negocio principal que desea modificar. Seleccione una opción Nombre del tipo (tipo de datos) de ent, booleano o java.lang.string. Asegúrese de que las variables sean Visible y Redefinible.
2. En la ficha Variables del nodo de actividad de la tarea asignada, cree las variables de actividad desde las que realizar la inicialización y cópielas en las variables de nivel de proceso que se han creado en el paso anterior. Estas variables se utilizan para que la entrada del usuario adquiera valores que se copien posteriormente en las variables de nivel proceso.
3. Cree un robot de ejecución de expresiones. En la ficha Expresión, introduzca el código que actualiza los atributos del objeto de negocio principal con la variable de proceso de trabajo, cuyos valores se han obtenido de la entrada del usuario en la actividad asignada. Consulte la siguiente sección para ver un ejemplo de código de expresión.
Ejemplo de código de expresión
En el ejemplo de código que aparece, hay cuatro variables con los nombres internos (tal como se muestra en el Administrador de tipos), los nombres de variables y los tipos de datos siguientes:
Nombre interno del atributo | Nombre variable de proceso de trabajo | Tipo de datos |
---|
StringAttribute | StringAttributeVariable | java.lang.String |
BooleanAttribute | BooleanAttributeVariable | boolean |
DateAttribute | DateAttributeVariable | java.lang.String |
IntegerAttribute | IntegerAttributeVariable | ent |
| En el siguiente ejemplo también se proporcionan instrucciones para formatear el valor DateAttribute de un tipo de datos de cadena. |
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();
}