Nettoyage des données d'application

Le nettoyage des données d'application nécessite de supprimer les données de la table de base de données IEGEXECUTIONSTATE et du magasin de données (DS), le cas échéant. Cette section décrit en détail les tâches de nettoyage des données manuelles et automatiques que les auteurs de script doivent connaître et fournit des recommandations visant à garantir un nettoyage simple des données d'application.

Pour prendre en charge l'exécution d'un script IEG, des informations sur les exécutions de chaque script doivent être conservées par le moteur IEG. Par exemple, le moteur IEG doit conserver la page en cours de l'exécution du script. Le moteur IEG doit également conserver une liste des pages qui ont été présentées à l'utilisateur pour prendre en charge la navigation. Les réponses aux questions de contrôle ne sont pas conservées dans le DS et le moteur IEG doit également conserver une trace de celles-ci. Toutes les informations permettant de prendre en charge l'exécution d'un script IEG sont conservées dans la table IEGEXECUTIONSTATE. Lorsqu'un nouvel objet IEGScriptExecution est créé via l'API IEGScriptExecutionFactory, une entrée correspondante est créée dans la table IEGEXECUTIONSTATE. La table IEGEXECUTIONSTATE est une table "interne" destinée à être utilisée par le moteur IEG. Elle ne doit pas être modifiée ou étendue. Les auteurs de script ne doivent pas dépendre du/émettre des hypothèses en se basant sur le contenu de cette table car celui-ci peut être modifié sans préavis.

IEG n'a aucun moyen de savoir quand une entrée de la table IEGEXECUTIONSTATE n'est plus nécessaire. Par conséquent, les entrées sont conservées jusqu'à ce qu'elles soient explicitement supprimées. Pour éviter tout encombrement inutile de la table IEGEXECUTIONSTATE, si une exécution de script s'est terminée ou n'est pas reprise/réexécutée, son entrée dans la table doit être supprimée via la méthode removeScriptExecutionObject de l'API IEGScriptExecutionFactory.

IEG ne peut effectuer aucune supposition quant aux données utilisées pour identifier de façon unique et logique une exécution de script particulière, car celles-ci peuvent varier d'une définition de script à une autre. IEG ne peut identifier une exécution de script que via l'ID généré qui est affecté à l'exécution de script lors de sa création. Il est fortement recommandé que les auteurs de script implémentent un mécanisme permettant d'identifier les exécutions de script en associant des données uniques aux ID d'exécution de script. Une nouvelle table peut être créée pour gérer la relation entre les données qui identifient l'exécution et l'ID d'exécution pour faciliter la reprise de l'exécution de scripts. Lorsqu'elle n'est plus nécessaire, elle peut être supprimée. La suppression d'un script d'exécution ne supprime pas les données collectées qui sont conservées dans le DS.

A l'instar d'IEGEXECUTIONSTATE, le moteur IEG et le DS n'ont aucun moyen de savoir quand les données qui sont collectées lors de l'exécution du script et conservées dans le DS ne sont plus requises. Encore une fois, le DS peut être inutilement encombré par des entités qui ne sont plus requises. Il est prévu que les entités ne seront pas conservées indéfiniment, mais que les données collectées seront déplacées vers les tables d'application, puis supprimées du DS. Lorsqu'une entité est supprimée du DS, ses entités sont également supprimées. En conséquence, lorsque les données collectées à l'aide de l'exécution d'un script ont été déplacées vers les tables d'application et ne sont plus nécessaire, il suffit de supprimer l'entité racine pour l'exécution.

L'exemple de fragment de code suivant illustre la suppression de l'entité racine :

Figure 1. Suppression de l'entité racine
final Long applicationID = execution.getRootEntityID();
      final Entity rootEntity = datastore.readEntity(applicationID);
      rootEntity.delete();