Migration du flux de script

Lors de la migration du flux de script, un script IEG obsolète est migré vers un script IEG. Ce nouveau script est identifié à l'aide de l'ID du script d'origine, un numéro de version défini par défaut sur 1, sauf si l'ID de script se termine par la lettre V suivie d'un nombre. Dans ce cas, la version sera définie sur ce nombre. Le type sera copié à partir du script d'origine, mais s'il était vide, il devient "DefaultType". Les pages quitter et terminer sont extraites du fichier IEGPlayerConfig.xml de l'application. Si les pages quitter et terminer doivent être modifiées manuellement, elles doivent être modifiées dans le fichier de définition du script, ainsi que dans le fichier de propriétés de niveau script.

Le nouveau script contiendra une section qui ne s'affichera pas par défaut (car le concept de sections n'existe pas dans les scripts IEG obsolètes). Le titre de section sera défini sur le nom du script d'origine, et le contenu tout entier du script migré résidera dans cette section.

Pour chaque page du script original (qu'il s'agisse d'une page de niveau supérieur ou d'une page enfant), une nouvelle page sera ajoutée à la section. Les nouveaux ID de page et description sont définis sur l'ID de groupe de question et la description, tandis que le titre de la page provient de l'ancien nom de la page. La présence des attributs loopsize ou precondition va placer les nouvelles pages dans une boucle ou des éléments de condition.

Types de boucle utilisés pour être implicites, selon l'expression. Ils sont désormais explicitement définis sur les éléments de la boucle.

La barre de progression est activée par défaut et la valeur de progression pour chaque page est calculée par l'affectation des pondérations de manière égale.

Des postconditions seront automatiquement remplacées par des éléments de validation.

L'exemple suivant illustre la migration du flux de script, en affichant d'abord une définition de script IEG obsolète avant le processus de migration :

Figure 1. Définition de script IEG obsolète avant la migration
<?xml version="1.0" encoding="UTF-8"?>
<IEGScript id="SampleScript">
    <QuestionPageDefinition questionpageid="1" 
      questiongroupid="QuestionGroup1" loopsize="" precondition="">
	…
    </QuestionPageDefinition>
    <QuestionPageDefinition questionpageid="2" 
      questiongroupid="QuestionGroup2" 
      precondition="QuestionGroup1.Q1>0" 
      loopsize="">
	<postcondition id="ValueUnder100" 
	  expression="QuestionGroup2.Q1<100">
	    <message>
		<Translation id="en" 
		  value="Value must be under 100" />
	    </message>
	</postcondition>
	…
	<QuestionPageDefinition questionpageid="3" 
	  questiongroupid="QuestionGroup3" precondition="" 
	  loopsize="QuestionGroup2.Q1">
	    …
	</QuestionPageDefinition>
    </QuestionPageDefinition>
    <ScriptName>
	<Translation id="en" value="Sample Script" />
    </ScriptName>
    <ScriptDescription>
	<Translation id="en" value="" />
    </ScriptDescription>
</IEGScript>

L'exemple XML suivant représente la définition de script IEG créée par l'outil de migration, après avoir fonctionné sur la définition de script obsolète ci-dessus :

Figure 2. Définition de script IEG après la migration
<?xml version="1.0" encoding="UTF-8"?>
<ieg-script finish-page="IEGPlayer_summary" 
  quit-page="IEGPlayer_summary" show-sections="false" 
  show-progress-bar="true">
    <identifier id="SampleScript" scriptversionnumber="1" 
      type="DefaultType" />
    <section>
	<title id="Section.Title" />
	<question-page id="QuestionGroup1" entity="QuestionGroup1" 
	  progress="0" … >
	    …
	</question-page>
	<condition expression="QuestionGroup1.Q1>0">
	    <question-page id="QuestionGroup2" 
	      entity="QuestionGroup2" progress="33" … >
		…
		<validation expression="QuestionGroup1.Q1 < 100">
		    <message 
		      id="QuestionGroup2.ValueUnder100.Message" />
		</validation>
		…
	    </question-page>
	    <loop loop-type="for" expression="QuestionGroup2.Q1" 
	      entity="QuestionGroup3">
		<question-page id="QuestionGroup3" 
		  entity="QuestionGroup3" progress="67" … >
		    …
		</question-page>
	    </loop>
	</condition>
	<summary-page id="SummaryPage" progress="100" … >
	    …
	</summary-page>
    </section>
</ieg-script>