Question Paper: Creation, Sourcing, and Printing
1. Admin will create Question Paper structure through Workspace
1.1 Create a new Collection category - Question paper
Create Question Paper Design Flow - https://saketsinha847338.invisionapp.com/console/share/4Z21W3TCQU/497390837
Planned Delivery - 12th Jan 2021
Implementation Approach:
Define a new primary category [ Use the Collection creation API suggested in this GitHub discussion thread ]
Add Blueprint variables in schema - only for Collection - Question paper
-------------------------------------------------------------------------------------------------------------------
<To be reviewed>
Workspace should include a new Collection category for Question Paper.
Define new Collection category for Question Paper. Share definition for review.
Must include visibility, printable, and print status attributes. Add Printable and Print Status to Collection schema.
Workspace should show it for user with role CREATOR. Any changes required? Configuration change for Workspace page configuration?
Collection creation flow remains as-is. Admin will save it as draft (include in Program user manual)
Clarifications:
API details updated on Github thread: https://github.com/project-sunbird/sunbird-community/discussions/26
2. Admin to create a sourcing project which includes Content-type ‘Exam Questions’, Target collection ‘Question Paper’ and provision to add values for blueprint variables for this project
Planned Delivery - 15th Jan 2021
Implementation Approach:
Update Schema to include 'Exam Question' in Content-Type
Update schema to include in 'Question Paper' in Target collection list
Popup - To add blueprint variables for the project [ Design Link- https://saketsinha847338.invisionapp.com/console/share/SH21W554JV/497391177 ]
------------------------------------------------------------------------------------------------------------------------------------------
<To be reviewed>
Project creation: settings to be used by Admin:
Nomination disabled
Two-step review enabled (Not to Skip)
Project scope: Content Types (categories) to include Exam Questions
When contributor clicks “Create New” they will see “Exam Questions” in the selection popup. On selecting “Exam Questions” the will get question type selection. They will be able to create one or more questions of the selected type.Exam Questions as a new Content category. Share definition for review.
mimeType: ECML, Question format: QuML,
visibility: private, and ..
sourcingConfig": { "editor" : [ { "mimetype": "application/vnd.ekstep.ecml-archive", "type": "question" } ] }Target Collection should include collections of category Digital Textbook and Question Paper while creating a project. Configuration update for Creation portal?
Admin can search the ‘Question Paper’ created earlier, include it in the sourcing project so that contributors create ‘Exam Questions’ and reviewers can review them.
Clarifications:
How to update the configuration? (Which Files to edit / Which API to hit for making these changes?)
Details to be updated on GitHub Discussion thread: https://github.com/project-sunbird/sunbird-community/discussions/26Sharing of steps needed to add the blueprint form, for Question Paper Collection.
Do we have to write a new service to store the value of blueprint variables? [Assumption: No new service needs to be written]
- No new service needs to be written this will be handled in the generic implementation of the form data collection.
3. Admin assigns or invites Contributors and Reviewers for the project
No change.
3.1 Login through Contribution portal (../contribute
) to
assign / invite Contributors
assign / invite Reviewer-1
3.2 Login through Sourcing portal (../sourcing
) to
assign / invite Reviewer-2
4. Contributor creates questions of various types and submits for review
Planned Delivery - 19th Jan 2021
Implementation Approach:
4.1 Login to Contribution portal [No change required.]
4.2 Select Sourcing Project from My Projects [No change required.]
4.3 Create new → Select content type Exam Question → Choose type of question → Question editor opens [Change Required]
4.3.1 - Create question Desing UI/UX - https://saketsinha847338.invisionapp.com/console/share/JV21W55CTY/497391281
4.3.2 - PR https://github.com/Sunbird-Ed/creation-portal/pull/1195
To be Done:
4.4 Remove modal to select the mode of creation - [ https://saketsinha847338.invisionapp.com/console/share/JV21W55CTY/497391285 ]
4.5 Add tags for a question - https://saketsinha847338.invisionapp.com/console/share/JV21W55CTY/497391287
4.6 Set Default values for the question set properties - https://saketsinha847338.invisionapp.com/console/share/JV21W55CTY/497391288
No change required.
4.7 Preview of question
4.8 Submit a question
------------------------------------------------------------------------------------------------------------------------------
<To be reviewed>
“Create New” at any place in the ‘Question Paper’.
→ Creating new Content will inherit certain attributes from the Target collection into the Content metadata details.
This should include Visibility, Printable, and Print Status. Change required? Share implementation details.Contributor can create following question types..
Interactive
Multiple Choice Question
Non-interactive
VSA
SA
LA
Fill in The Blank
Match The Following
→ Create FTB, MTF as new “category” for reference “type” of questions (assessmentItem). Share implementation details for review.
Contributor selects Competency, Skill Type for each of the questions
→ Question creation page has two form fields. The form fields are configured using Form API for ‘Exam Question’ content category for a specific tenant. Share implementation details for review.
→ Competency is mapped to ‘Topic’ in taxonomy framework. Review if existing topics are sufficient. Update the list of ‘Topics(s)’.
Reach out to specific tenant (HR) team to share existing list of topics.
→ Skill Type maps to Learning Level (Bloom’s). Point to the list on GitHub. Review if existing values are sufficient.
Clarifications required:
How to hide the intermediate pop-up, and directly go from Exam Question Screen to Question type selection screen [Step 4.4]
Do we need to write a new service to store these values (question tags) or is it only frontend change?
How to set the default values for the question set, as shown in Step 4.6 above?
5. Reviewer-1 can Accept or Request for Changes for each ‘Exam Questions’ content (containing one or more questions)
No change.
Login to Contribution portal using Reviewer credentials
Accept: will Publish ‘Exam question’ (Content containing question(s)) in Sourcing repo. This will be available for reuse later by during Contribution - not available for consumption.
Reject / Request for Changes: Send it back to contributor for corrections
6. Reviewer-2 (Question Paper creator)
6.1 - Can Accept or Reject or Request for Changes for each ‘Exam Questions’ content (containing one or more questions)
Accept will … ?
Accept will be disabled for each ‘Exam question’ (Content containing question(s)). This will ensure that ‘Exam Questions’ are not published for consumption.
Ready for Print will show up instead since this Content is Printable
If Reviewer-2 select Ready for Print, Print Status will be updated to ..
Reject will remove the ‘Exam question’ (Content containing one question) from ‘Question Paper’ collection
Request for Change will send back the ‘Exam Question(s)' to contributor for correction
6.2 - Can view progress against the blueprint
Planned Delivery - 19th Jan 2021
Implementation approach:
Design link - https://saketsinha847338.invisionapp.com/console/share/JV21W55CTY/497399268?frame-cb=1610434742599
Create a frontend widget, to show the progress
Assumption: Project values for blueprint set at the time of the creation of the project are available here
Clarification required:
Confirmation on the design https://saketsinha847338.invisionapp.com/console/share/JV21W55CTY/497399268?frame-cb=1610434742599
Validate Assumption
6.3 - Print Preview - For Question Paper creator (Sourcing Reviewer)
Implementation Approach:
On the Project details page, where the list of questions is shown to the Question paper creator. They also see a On print preview button
On click of print preview - a new popup opens which shows the question paper in the pdf format.
Name of Collection → Heading of paper
Description of the collection → Instruction block
Section Name → Section name
Questions, marks, options(if applicable) are shown.
Based on Grade and Medium, the template is decided by the API and the preview is generated (Grade 1-5, provision to write in the paper, Grade 5+ Only question paper)
Engineering implementation:
Create a standalone API service that creates gets all the collection hierarchy data based on project ID
Formats all the information in the template defined method
API Generates the preview of the paper in pdf format.
Frontend - on click of the Print Preview button, calls the API and the preview is generated in realtime.
To be added in API in 3.8 cycle
Add Support for printing Images
Support for Symbols and formulas
Support for configurable template
Reviewer 2 will review each of the ‘Exam Question’ content against the ‘Question Paper’ collection through the “Sourcing” portal.
On ‘accepting’ the ‘Exam Question’ will be published in sourcing and consumption repository with visibility = private (set in category definition)
Now Reviewer 2, after completion of review, goes to Workspace. From Workspace, ‘Question Paper’ can be edited and submitted for Review.
User with ‘Question Paper’ review role (Reviewer 3) can publish the ‘Question Paper' (should not be same as the person who created the ‘Question Paper’)
On publishing, the 'Question Paper’ has visibility = private (set in category definition)
A job listens to this event and prints required PDF / DOC and sends it via email to Question Paper creator (Reviewer-2)
Configurations
Following configurations are required to be made by Dev Ops team enable Question Paper workflow
Capability | Description | Corresponding Request for Prashnavali <> QuML Integration | Highlights of the configuration | Link to configuration |
---|---|---|---|---|
Create Question Paper | Define collection category “Question Paper” for a specific tenant | Define Question Set category “Question Paper” for a specific tenant |
| curl --location --request POST 'https://dock.sunbirded.org/api/object/category/v1/create' \
--header 'Authorization: Bearer {{devToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"request": {
"objectCategory": {
"name": "Question paper",
"description": "Question papers for examinations to be conducted by the state"
}
}
}' |
Question Paper category definition | Enable Creation through Workspace of “Question Paper” for CONTENT_CREATOR role for a specific tenant | Configure definition of Question Paper Question Set category | Default appIcon | curl --location --request PATCH 'https://dev.sunbirded.org/api/object/category/definition/v1/update/obj-cat:question-paper_collection_01309282781705830427' \
--header 'Authorization: Bearer {{devToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"request": {
"objectCategoryDefinition": {
"objectMetadata": {
"config": {},
"schema": {
"properties": {
"mimeType": {
"type": "string",
"enum": [
"application/vnd.ekstep.content-collection"
]
},
"appIcon": {
"type": "string",
"default": "https://sunbirddev.blob.core.windows.net/sunbird-content-dev/content/do_11320764935163904015/artifact/2020101299.png"
},
"author": {
"type": "string",
"default": "SCERT Haryana"
},
"printable": {
"type": "boolean",
"default": true
}
}
}
},
"languageCode": [],
"forms": {
"blueprintCreate": {
"templateName": "",
"required": [],
"properties": [
{
"code": "topics",
"dataType": "list",
"description": "",
"editable": true,
"index": 0,
"inputType": "multiSelect",
"label": "Chapters",
"name": "Chapters",
"placeholder": "Please select chapters",
"renderingHints": {},
"required": true
},
{
"code": "learningOutcomes",
"dataType": "list",
"description": "",
"editable": true,
"index": 1,
"inputType": "multiSelect",
"label": "Competencies",
"name": "Competencies",
"placeholder": "Please select Competencies",
"depends": [
"chapters"
],
"renderingHints": {},
"required": false
},
{
"code": "learningLevels",
"editable": true,
"displayProperty": "Editable",
"dataType": "text",
"renderingHints": {
"semanticColumnWidth": "twelve"
},
"label": "Skills Tested",
"required": true,
"name": "Learning Levels",
"index": 2,
"inputType": "select",
"placeholder": "",
"default": 0,
"options": [
0,
1,
2,
3,
4,
5
],
"children": [
{
"type": "learningLevel",
"label": "Knowledge",
"code": "remember"
},
{
"type": "learningLevel",
"label": "Understanding",
"code": "understand"
},
{
"type": "learningLevel",
"label": "Application",
"code": "apply"
}
]
},
{
"code": "questionTypes",
"editable": true,
"displayProperty": "Editable",
"dataType": "text",
"renderingHints": {
"semanticColumnWidth": "twelve"
},
"description": "Question Types",
"index": 2,
"label": "Question Types",
"default": 0,
"required": true,
"name": "Question Types",
"inputType": "select",
"children": [
{
"type": "questionType",
"label": "Objective",
"code": "Objective"
},
{
"type": "questionType",
"label": "Very Short Answer",
"code": "VSA"
},
{
"type": "questionType",
"label": "Short Answer",
"code": "SA"
},
{
"type": "questionType",
"label": "Long Answer",
"code": "LA"
}
],
"options": [
0,
1,
2,
3,
4,
5
],
"placeholder": "Question Types"
},
{
"code": "totalMarks",
"editable": true,
"displayProperty": "Editable",
"dataType": "text",
"renderingHints": {
"semanticColumnWidth": "three"
},
"description": "Total Marks",
"index": 4,
"label": "Total Marks",
"required": true,
"default": 0,
"name": "Total Marks",
"inputType": "text",
"placeholder": ""
}
]
}
}
}
}
}'
|
Create Exam Questions | Define content category “Exam Questions | Define question object category “Exam Questions |
| curl --location --request POST 'https://dev.sunbirded.org/api/object/category/v1/create' \
--header 'Authorization: Bearer {{devToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"request": {
"objectCategory": {
"name": "Exam Question",
"description": "Questions for examinations to be conducted by institutions"
}
}
}'
|
Exam Question Metadata | Exam Question category definition | Configure definition of “Exam Question” Question category | maxQuestions = 1 | curl --location --request PATCH 'https://dev.sunbirded.org/api/object/category/definition/v1/update/obj-cat:exam-question_content_all' \
--header 'Authorization: Bearer {{devToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"request": {
"objectCategoryDefinition": {
"objectMetadata": {
"config": {
"sourcingConfig": {
"editor": [
{
"mimetype": "application/vnd.ekstep.ecml-archive",
"type": "question"
}
]
}
},
"schema": {
"properties": {
"mimeType": {
"type": "string",
"enum": [
"application/vnd.ekstep.ecml-archive"
]
},
"maxQuestions": {
"type": "number",
"default": 1
}
}
}
},
"languageCode": [],
"forms": {
"create": {},
"delete": {},
"publish": {},
"review": {},
"search": {},
"update": {
"templateName": "",
"required": [],
"properties": [
{
"code": "name",
"editable": true,
"displayProperty": "Editable",
"dataType": "text",
"renderingHints": {
"semanticColumnWidth": "twelve"
},
"description": "Name",
"index": 1,
"label": "Name",
"required": false,
"name": "Name",
"inputType": "text",
"placeholder": "Name"
},
{
"code": "topic",
"dataType": "list",
"description": "",
"editable": true,
"index": 2,
"inputType": "multiSelect",
"label": "Chapter",
"name": "Chapter",
"placeholder": "Select chapter",
"renderingHints": {},
"required": false,
"visible": true
},
{
"code": "learningOutcome",
"dataType": "list",
"description": "",
"editable": true,
"index": 3,
"inputType": "multiSelect",
"label": "Competency",
"name": "Competency",
"placeholder": "Select competency",
"renderingHints": {},
"required": false,
"visible": true
},
{
"code": "bloomsLevel",
"inputType" : "multiSelect",
"dataType": "list",
"description": "Cognitive processes involved to answer the question set.",
"index": 4,
"range": [
{
"bloomLevel": "remember",
"name": "Remember"
},
{
"bloomLevel": "understand",
"name": "Understand"
},
{
"bloomLevel": "apply",
"name": "Apply"
},
{ "bloomLevel": "analyse",
"name": "Analyse"
},
{ "bloomLevel": "evaluate",
"name": "Evaluate"
},
{ "bloomLevel": "create",
"name": "Create"
}
],
"renderingHints": {
"semanticColumnWidth": "twelve"
},
"required": false,
"visible": true,
"editable": true,
"name": "Learning Level",
"label": "Skills Tested"
},
{
"code": "marks",
"visible": true,
"editable": true,
"displayProperty": "Marks",
"dataType": "text",
"label": "Marks",
"name": "Marks",
"required": true,
"renderingHints": {
"semanticColumnWidth": "six"
},
"description": "Marks of the question in the examination",
"index": 5,
"inputType": "text",
"placeholder": "0"
},
{
"code": "author",
"dataType": "text",
"description": "Author",
"editable": true,
"index": 6,
"inputType": "text",
"label": "Author",
"name": "Author",
"placeholder": "Author",
"tooltip": "Provide name of creator of this content.",
"renderingHints": {},
"required": false
},
{
"code": "copyright",
"dataType": "text",
"description": "Copyright",
"editable": true,
"index": 7,
"inputType": "text",
"label": "Copyright and Year",
"name": "Copyright",
"defaultValue": "2021 MIT",
"placeholder": "Copyright",
"tooltip": "If you are an individual, creating original content, you are the copyright holder. If you are creating this course content on behalf of an organisation, the organisation may be the copyright holder. ",
"renderingHints": {},
"required": false
},
{
"code": "license",
"visible": true,
"index": 8,
"editable": true,
"displayProperty": "Editable",
"dataType": "text",
"renderingHints": {
"semanticColumnWidth": "six"
}
}
]
}
}
}
}
}' |
System capabilities (driven by configuration / data)
|
|
|
|
---|---|---|---|
Progress against blueprint | If blueprint is available, system will show automatically |
|
|
Print preview | If printable, system will show automatically |
|
|
Create Exam Questions > Add New Question | Disabled only for “Exam Questions” |
|
|
Expected user flow (Program process guide)
|
|
|
---|---|---|
Question Paper creation | Create > save draft Ensure relevant metadata is filled Ensure structure is signed-off before creating project |
|
Project creation | Skip two level review = .. Content type = Exam questions |
|
Exam Questions |
|
|