Migración de flujos de script

Durante la migración de un flujo de script, un script IEG reemplazado se migra a un script IEG. Este nuevo script se identifica mediante el ID de script original, un número de versión que será 1 de forma predeterminada a menos que el ID de script termine con la letra V seguida de un número. En tal caso, la versión se establecerá a dicho número. El tipo se copia del script original, pero si está vacío será "DefaultType" ("tipo predeterminado"). Las páginas de Salir y Finalizar se extraen del IEGPlayerConfig.xml de la aplicación. Si es necesario modificar manualmente las páginas de Salir y Finalizar, tendrán que cambiarse en el archivo de definición del script así como en el archivo de propiedades a nivel de script.

El nuevo script contendrá una sección que no se mostrará de forma predeterminada (ya que el concepto de sección no existe en los scripts IEG reemplazados). El título de la sección se establecerá al nombre del script original y todo el contenido del script migrado residirá en esta sección.

Por cada página del script original (tanto si es una página de nivel superior como si es una página hija), se añadirá una nueva página a la sección. El nuevo ID de página y la descripción se establecen a la descripción e ID del grupo de preguntas, mientras que el título de la página proviene del nombre de la página antigua. La presencia de los atributos loopsize o precondition incluirá las nuevas páginas en elementos loop o condition.

Los tipos de bucle iban implícitos en la expresión. Ahora se establecen de forma explícita en los elementos de bucle.

La barra de progreso está habilitada por omisión y el valor del progreso de cada página se calcula asignando pesos a partes iguales.

Las condiciones posteriores se sustituyen de forma automática por elementos de validación.

El ejemplo siguiente muestra cómo se migra el flujo del script, mostrando en primer lugar una definición de script IEG reemplazado previa al proceso de migración:

Figura 1. Definición del script IEG reemplazado, antes de la migración
<?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>

El siguiente ejemplo de XML representa la definición del script IEG creado por la herramienta de migración después de haber operado sobre la definición del script reemplazado anterior:

Figura 2. Definición del script IEG tras la migración
<?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>