Data migration problem and approach
Problem Statement
With the introduction of breaking changes like multi lingual capability and QuML compliance, there was a need to support backward compatibility.
The approach that was taken was to do the following
Reading to do on the fly (on-demand) transformation of question and questionSet in QuML 1.0 format to QuML 1.1 format
Updating to do transformation of QuML 1.0 question and questionSet to QuML 1.1 and store the changes permanently.
With the pursued approach, there is a limitation encountered with the QuestionSets that contains questions which are of global visibility (i.e that can be added to any questionSets)
This is the case with crowd sourced questions which is created through CoKreat and brought into InQuiry (ED) using question import features.
Possibilities of QuestionSet is as below,
Possibility 1
QuestionSet
- Q1 (Parent Visibility)
- Q2 (Parent Visibility)
Visibility Parent means that the question can be used only within that QuestionSet and cannot be used outside
Possibility 2
QuestionSet
- Q1 (Parent Visibility)
- Q2 (Default Visibility)
Visibility Default means that the question can be used in any QuestionSet
On-demand migration and problem
When the creator edits a questionSet, we can do an auto migration to QuML 1.1.
This is straightforward when all the Questions in the QuestionSet is of visibility Parent (as explained in the Possibility 1)
When the QuestionSet contains Questions in mixed visibility (as explained in Possibility 2), we cannot auto migrate all the questions. As the visibility Default question could be in use in some other QuestionSet which is yet to be migrated.
Solutions to overcome this
The below table looks at some of the possible solutions to over come this,
<<Draft>>
Migrated Question will not be playable in the Old Player
Newly created Questions will not be playable in the Old Player
Solution Description | Pros | Cons |
---|---|---|
On demand migration - WITH end user intervention |
|
|
On demand migration - WITHOUT end user intervention |
|
Question
|
Static Migration |
|
Question
|
Static Migration - With data versioning |
|
|
No Migration |
|
|
Solutions picked & conclusion
<<TODO>>