Limpieza de datos de aplicación

La limpieza de datos de aplicación implica la eliminación de datos de la tabla de base de datos IEGEXECUTIONSTATE y del almacén de datos (DS), donde sea apropiado. En esta sección se detallan las tareas de limpieza de datos manuales y automáticas que los autores de script deben conocer y se hacen algunas recomendaciones para garantizar que la limpieza de datos de aplicación puede continuar sin contratiempos.

Con el fin de soportar la ejecución de un script IEG, el motor IEG debe mantener información sobre las ejecuciones de script individuales. Por ejemplo, el motor IEG debe hacer un seguimiento de la página actual para la ejecución de script. El motor IEG también debe mantener una lista de las páginas que se han presentado al usuario para dar soporte a la navegación. Las respuestas a las preguntas de control no son persistentes en el DS y el motor IEG también debe hacer un seguimiento de las mismas. Toda la información para soportar la ejecución de un script IEG se conserva en la tabla IEGEXECUTIONSTATE. Cuando se crea un objeto IEGScriptExecution nuevo a través de la API IEGScriptExecutionFactory, se crea una entrada correspondiente en la tabla IEGEXECUTIONSTATE. La tabla IEGEXECUTIONSTATE es una tabla "interna" destinada sólo a ser utilizada por el motor IEG y no se debe modificar o ampliar. Los autores de script no deben hacerse dependientes o realizar suposiciones sobre el contenido de esta tabla puesto que pueden estar sujetos a cambios sin previo aviso.

IEG no tiene forma de saber si una entrada en la tabla IEGEXECUTIONSTATE ya no es necesaria y, por lo tanto, las entradas se mantendrán hasta que se supriman explícitamente. Para evitar que la tabla IEGEXECUTIONSTATE se recargue de forma innecesaria, si una ejecución de script se ha completado o no se reanudará o volverá a ejecutar, la entrada de la tabla se debe eliminar a través del método removeScriptExecutionObject de la API IEGScriptExecutionFactory.

IEG no puede hacer ninguna deducción sobre qué datos se pueden utilizar para identificar de forma lógica y exclusiva una determinada ejecución de script porque esto puede variar de una definición de script a otra. La única manera para que IEG identifique una ejecución de script es a través del ID generado que se asigna a la ejecución de script cuando se crea inicialmente. Es muy recomendable que los autores de script implementen un mecanismo para identificar las ejecuciones de script asociando datos exclusivos con los ID de ejecución de script. Se puede crear una nueva tabla para mantener la relación entre los datos que identifican la ejecución y el ID de ejecución para facilitar la reanudación de las ejecuciones de script. Cuando ya no son necesarios se pueden eliminar. La eliminación de una ejecución de script no hace que se elimine ninguno de los datos recopilados que se conservan en el DS.

De forma similar a IEGEXECUTIONSTATE, el motor IEG y el DS no tienen manera de saber cuándo ya no son necesarios los datos que se recopilan durante una ejecución de script y se conservan en el DS. De nuevo, el DS se puede recargar de forma innecesaria con entidades que ya no son necesarias. Está previsto que las entidades no permanezcan en el DS indefinidamente, sino que los datos recopilados se muevan a las tablas de aplicación y, a continuación, se eliminen del DS. Cuando se suprime una entidad del DS, también se suprimen las entidades hijo. Por lo tanto, cuando los datos que se recopilan durante una ejecución de script se han trasladado a las tablas de aplicación y ya no se necesitan, es suficiente suprimir la entidad raíz para la ejecución.

El fragmento de código de ejemplo siguiente muestra la supresión de la entidad raíz:

Figura 1. Supresión de la entidad raíz
final Long applicationID = execution.getRootEntityID();
      final Entity rootEntity = datastore.readEntity(applicationID);
      rootEntity.delete();