Scriptabläufe migrieren

Während der Migration des Scriptablaufs wird ein veraltetes IEG-Script in ein IEG-Script migriert. Das neue Script wird mit der Original-Script-ID identifiziert. Diese ID ist eine Versionsnummer, die den Standardwert 1 hat, es sei denn, die Script-ID endet mit dem Buchstaben "V", gefolgt von einer Nummer. In diesem Fall wird die Versionsnummer auf diese Nummer festgelegt. Der Typ wird aus dem Original-Script kopiert. Wenn der Typ aber nicht festgelegt wurde, wird "DefaultType" verwendet. Die Seiten zum Schließen und Beenden werden aus der Datei "IEGPlayerConfig.xml" der Anwendung extrahiert. Wenn die Seiten zum Schließen und Beenden manuell bearbeitet werden müssen, müssen sie in der Scriptdefinitionsdatei sowie in der Eigenschaftendatei auf Scriptebene geändert werden.

Das neue Script enthält einen Abschnitt, der standardmäßig nicht angezeigt wird (da es das Konzept der Abschnitte in veralteten IEG-Scripts nicht gibt). Der Abschnittstitel wird auf den ursprünglichen Scriptnamen festgelegt und der gesamte Inhalt des migrierten Scripts bleibt in diesem Abschnitt.

Für jede Seite des Original-Scripts (ob Seiten der obersten Ebene oder untergeordnete Seiten) wird eine neue Seite zum Abschnitt hinzugefügt. Die neue Seiten-ID und Beschreibung werden auf die Fragengruppen-ID und -Beschreibung festgelegt, wobei der Seitentitel der alte Seitenname ist. Wenn eine Schleifengröße oder Vorbedingungsattribute vorhanden sind, schließen diese die neuen Seiten in die Elemente "loop" und "condition" ein.

Schleifentypen waren früher je nach Ausdruck implizit. Jetzt werden sie explizit auf die "loop"-Elemente festgelegt.

Die Fortschrittsleiste wird standardmäßig aktiviert und der Fortschrittswert für jede Seite wird berechnet, indem die Gewichtung gleichmäßig zugewiesen wird.

Nachbedingungen werden automatisch durch "validation"-Elemente ersetzt.

Im folgenden Beispiel wird dargestellt, wie der Scriptablauf migriert wird. Zuerst wird die veraltete IEG-Scriptdefinition vor dem Migrationsprozess angezeigt:

Abbildung 1. Veraltete IEG-Scriptdefinition vor der 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>

Das folgende XML-Beispiel zeigt die IEG-Scriptdefinition, die vom Migrationstool generiert wurde. Die oben dargestellte, veraltete Scriptdefinition wird bearbeitet:

Abbildung 2. IEG-Scriptdefinition nach der 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>