Context
As part of release 6.0.0, inQuiry building block is releasing newer versions of it’s components; QuML Editor, QuML Player and Microservice.
Behaviour of the System post 6.0.0 release is explained below.
There are 2 major changes that is part of this release
Aligning inQuiry to latest QuML 1.1
Supporting Multi Lingual (in API services)
Component Versions vs QuML compatibility
Component | Component version (V1) | Component version (V2) |
---|---|---|
QuML Editor | QuML 1.0 | QuML 1.1 |
QuML Player | QuML 1.0 | QuML 1.1 |
inQuiry Microservice (API) | QuML 1.0 | QuML 1.1 QuML 1.0 for read only
Post 6.0.0, V1 Editor and Player can still talk to V1 API. However the support for V1 APIs will be deprecated in 6 months post the release of 6.0.0 |
Component Versions vs API Version compatibility
Component | API (V1) | API (V2) |
---|---|---|
Editor (V1) | Allowed | Not permitted |
Player (V1) | Allowed | Not permitted |
Editor (V2) | Not permitted | Allowed |
Player (V2) | Not permitted | Allowed |
Behaviour of V2 Consumption APIs when requesting for Old or New Question / QuestionSet identifier
Question / QuestionSet | QuestionSet Read | Question List |
---|---|---|
Old Question / QuestionSet identifier | Allowed temporarily transformed to QuML 1.1 | Allowed temporarily transformed to QuML 1.1 |
New Question / QuestionSet identifier | Allowed | Allowed |
Behaviour of V2 Create and Update APIs given the specific format of Question / QuestionSet
QuML version | QuestionSet Create | QuestionSet Update | Question Create | Question Update | Review | Publish |
---|---|---|---|---|---|---|
Questions / QuestionSets in QuML 1.0 format | Not permitted | Not permitted | Not permitted | Not permitted | Not permitted | Not permitted |
Questions / QuestionSets in QuML 1.1 format | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed |
To edit Questions / QuestionSets created in QuML 1.0 using the V2 system, the Question / QuestionSet should be migrated to QuML 1.1
V1 (Editor/Player/Microservice) will be deprecated in 6 months post the release of 6.0.0
Changes for Making V2 QuML compliant
While the below table is a summary of changes, the details can be referenced from the below confluence pages
Attribute Name | Change summary | QuML 1.0 format | QuML 1.1 format |
---|---|---|---|
responseDeclaration | Changes are as follow,
Changes are applicable to Multiple Choice Question and Multi-select MCQ Not applicable for subjective question, hence no changes | Multiple Choice Question"responseDeclaration": { "response1": { "maxScore": 1, "cardinality": "single", "type": "integer", "correctResponse": { "value": "0", "outcomes": { "SCORE": 1 } }, "mapping": [ { "response": 0, "outcomes": { "score": 1 } } ] } } Multi-select MCQ"responseDeclaration": { "response1": { "maxScore": 1, "cardinality": "multiple", "type": "integer", "correctResponse": { "value": [1,0], "outcomes": { "SCORE": 1 } }, "mapping": [ { "response": 1, "outcomes": { "score": 0.5 } }, { "response": 0, "outcomes": { "score": 0.5 } } ] } } | Multiple Choice Question"responseDeclaration": { "response1": { "cardinality": "single", "type": "integer", "correctResponse": { "value": 0 }, "mapping": [ { "value": 0, "score": 1 } ] } }, "outcomeDeclaration": { "maxScore": { "cardinality": "single", "type": "integer", "defaultValue": 1 } } Multi-select MCQ"responseDeclaration": { "response1": { "cardinality": "multiple", "type": "integer", "correctResponse": { "value": [1,0] }, "mapping": [ { "value": 1, "score": 0.5 }, { "value": 0, "score": 0.5 } ] } }, "outcomeDeclaration": { "maxScore": { "cardinality": "multiple", "type": "integer", "defaultValue": 1 } } |
timeLimits | Changes are as follow,
| timeLimits: { "maxTime": "240", "warningTime": "60" } | { “timeLimits”: { “questionSet”: { // time limits for the question set and for any member sets “min”: <seconds>, “max”: <seconds> }, “question”: { // time limits for the questions in the question set “min”: <seconds>, “max”: <seconds> } } } |
maxScore | Changes are as follow,
| Question{ maxScore: 1, "responseDeclaration": { "response1": { "maxScore": 1, "cardinality": "multiple", "type": "integer", "correctResponse": { "value": [1,0], "outcomes": { "SCORE": 1 } }, ..... } } } QuestionSet{ ... maxScore: 10, ... } | Question level{ "outcomeDeclaration": { "maxScore": { "cardinality": "single", "type": "integer", "defaultValue": 1 } } } QuestionSet{ "outcomeDeclaration": { "maxScore": { "cardinality": "single", "type": "integer", "defaultValue": 1 } } } |
answer | Changes are as follow,
| "answer": "<p>This is test data</p>" Only used for Subjective | SubjectiveSingle Language: anwser: '<div class="anwser-container"> <div class="anwser-body"> <p>Delhi</p> </div> </div>' Multi Language: answer: { en: "<div class="anwser-container"> <div class="anwser-body"> <p>Delhi</p> </div> </div>", hi: "<div class="anwser-container"> <div class="anwser-body"> <p>दिल्ली</p> </div> </div>" } MCQSingle Language: anwser: `<div class="anwser-container"> <div class="anwser-body"> <p>Delhi</p> </div> </div>' Multi Language: answer: { en: "<div class="anwser-container"> <div class="anwser-body"> <p>Delhi</p> </div> </div>", hi: "<div class="anwser-container"> <div class="anwser-body"> <p>दिल्ली</p> </div> </div>" } MMCQSingle Language: anwser: `<div class="anwser-container"> <div class="anwser-body"> <p>Delhi</p> </div> <div class="anwser-body"> <p>Bangalore</p> </div> </div>' Multi Language: answer: { en: "<div class="anwser-container"> <div class="anwser-body"> <p>Delhi</p> </div> <div class="anwser-body"> <p>bangalore</p> </div> </div>", hi: "<div class="anwser-container"> <div class="anwser-body"> <p>दिल्ली</p> </div> <div class="anwser-body"> <p>बैंगलोर</p> </div> </div>" } |
interactions | Changes are as follows,
| "interactions": { "response1": { "type": "choice", "options": [ { "label": "<p>New Delhi</p>", "value": 0 }, { "label": "<p>Mumbai</p>", "value": 1 } ] }, "validation": { "required": "Yes" } } | "interactions": { "response1": { "type": "choice", "options": [ { "label": "<p>New Delhi</p>", "value": 0 }, { "label": "<p>Mumbai</p>", "value": 1 } ], "validation": { "required": "Yes" } } } |
solutions | Changes are as follows,
| Image + Text"solutions": [ { "id": "7015c7e4-461a-4032-b29e-fbb7e8155e44", "type": "html", "value": "<figure class=\"image\"><img src=\"/assets/public/content/assets/do_2137916546057256961374/indiagate.jpeg\" alt=\"indiaGate\" data-asset-variable=\"do_2137916546057256961374\"></figure>" } ] Video"solutions": [ { "id": "70c82bf5-9459-4c43-8897-0e58b7e1da62", "type": "video", "value": "do_2137930190247526401388" } ] | Image + Text"solutions": { "7015c7e4-461a-4032-b29e-fbb7e8155e44": "<figure class=\"image\"><img src=\"/assets/public/content/assets/do_2137916546057256961374/indiagate.jpeg\" alt=\"indiaGate\" data-asset-variable=\"do_2137916546057256961374\"></figure>", } // Key = UUID / Solution ID Video"solutions": { "70c82bf5-9459-4c43-8897-0e58b7e1da62": "<video data-asset-variable="do_2137930187513200641386" width="400" controls="" poster="/assets/public/content/assets/do_2137930188655902721387/gateway-of-india.jpg"> <source type="video/mp4" src="/assets/public/content/assets/do_2137980528723230721410/sample-5s.mp4"> <source type="video/webm" src="/assets/public/content/assets/do_2137980528723230721410/sample-5s.mp4"> </video>", } // Key = UUID Multi Language{ "solutions": { "solution_1": { "en": "<div>...</div>", "hi": "<div>...</div>" }, "solution_2": { "en": "<div>...</div>", "hi": "<div>...</div>" } } } |
feedback | Changes are as follows,
| Currently not used in inQuiry | “feedback”: { “70c82bf5-9459-4c43-8897-0e58b7e1da62”: “<h1>Well done!!!</h1>”, “70c82bf5-9459-4c43-8897-0e58b7e1da63”: “<h1>Better luck next time!!!</h1>” “70c82bf5-9459-4c43-8897-0e58b7e1da64”: “<h1>You need to work harder!!!</h1>” } // key = UUID // Referenced from outcomeDeclaration "outcomeDeclaration": { "feedback": { "cardinality": "single", "type": "string", "defaultValue": "70c82bf5-9459-4c43-8897-0e58b7e1da62" } } Multi Language{ "feedback": { "feedback_1": { "en": "<div>...</div>", "hi": "<div>...</div>" }, "feedback_2": { "en": "<div>...</div>", "hi": "<div>...</div>" } } } |
hints | Changes are as follows,
| // Question Metadata { hints: { en : "string" } } | “hints”: { “70c82bf5-9459-4c43-8897-0e58b7e1da62”: “<HTML>...</HTML>”, “70c82bf5-9459-4c43-8897-0e58b7e1da63”: “<HTML>...</HTML>” “70c82bf5-9459-4c43-8897-0e58b7e1da64”: “<HTML>...</HTML>” } // key = UUID // Referenced from outcomeDeclaration "outcomeDeclaration": { "hint": { "cardinality": "single", "type": "string", "defaultValue": "70c82bf5-9459-4c43-8897-0e58b7e1da62" } } Multi Language{ "hints": { "hint_1": "<div>...</div>", "hint_2": { "en": "<div>...</div>", "hi": "<div>...</div>" } } } |
instructions | Changes are as follows,
| Question{ instructions: { en : "<html>...</html>" } } QuestionSet{ instructions: { default : "<html>...</html>" } } | Questioninstructions: : "<html>" QuestionSetinstructions: : "<html>" |
showSolutions | Changes are as follows,
| { showSolutions: "Yes" } | { showSolutions: true } |
showTimer | Changes are as follows,
| { showTimer: "Yes" } | { showTimer: true } |
showFeedback | Changes are as follows,
| { showFeedback: "Yes" } | { showFeedback: true } |
showHints | Changes are as follows,
| { showHints: "Yes" } | { showHints: true } |
bloomsLevel | Changes are as follows,
| bloomsLevel: "apply" | complexityLevel: ["apply"] |
media | Changes are as follows,
| No changes to the format | No changes to the format |
Add Comment