campo no de base de datos en forma de ClearQuest
-
03-07-2019 - |
Pregunta
¿Hay alguna forma de usar campos de formulario que no correspondan al campo de la base de datos para procesos temporales?
I.e. Quiero añadir:
- campos temporales item1 , item2
- campo de base de datos sum botón
- con el enganche de registro que establece suma = elemento1 + artículo2
Solución
Por lo que sé, simplemente no es posible con ClearQuest. Intenté hacer algo similar y nuestro consultor de IBM me dijo que la única forma es crear un campo de base de datos para todas las variables.
Otros consejos
En realidad, no puede adjuntar datos a campos de formularios: son representaciones de los datos subyacentes, no algo con lo que los scripts interactúan directamente.
La adición de datos temporales al registro subyacente (entidad) en sí también parece poco probable. Tal vez sea posible abusar de la API de perl y adjuntar datos de forma dinámica a los objetos de la entidad, pero personalmente no lo intentaría, es probable que pierda sus datos por el capricho de CQ ;-)
Sin embargo, eso no significa que sea imposible tener datos temporales. La mejor manera para mí es utilizar el objeto de sesión, que está explícitamente destinado a ese propósito.
Desde el archivo de ayuda:
IBM Rational ClearQuest es compatible con Uso de variables de toda la sesión para almacenamiento de información. Después de crear variables de toda la sesión, puede acceder ellos a través de la sesión actual Objeto usando funciones o subrutinas, incluyendo ganchos, que tienen acceso a el objeto Session. Cuando la corriente sesión termina, todas las variables asociado con ese objeto de sesión se eliminan. La sesión termina cuando el el usuario se desconecta o la referencia final al objeto Session deja de existir.
Hay algo de documentación útil sobre este tema en file: /// C: /Program%20Files/Rational/ClearQuest/doc/help/cq_api/c_session_vars.htm (Suponiendo una instalación predeterminada en una máquina con Windows, por supuesto)
Traduciendo el ejemplo del código allí a lo que parece querer, primero almacena los datos que ha calculado dentro del objeto de la sesión:
$session->SetNameValue("item1", $value1);
$session->SetNameValue("item2", $value2);
Luego, en su enlace de cálculo, recupera los valores almacenados y establece el valor de ese campo de totales de esta manera:
my $item1 = GetNameValue("item1");
my $item2 = GetNameValue("item2");
my $sum = $item1 + $item2;
$entity->SetFieldValue("some_totals_record", $sum);
Ajustar al gusto, por supuesto ;-)
Los diseñadores de esquemas de ClearQuest a menudo incluyen campos "temporales" en sus tipos de registro. Hacen esto para que realicen operaciones en ganchos para generar otro valor.
Por ejemplo, para los campos de Notas, hay un campo Notes_entry 'temporal' en el que el usuario escribe la nota más reciente y, cuando se guarda el registro, el valor se agrega al campo Notes_Log. La próxima vez que se edite el registro, se borra el campo Notes_entry para que el usuario pueda escribir una nueva Notes_entry.