Sub-flow › Author Short Answer Question
Question New Question Short Answer
Add one or more keywords. The learner's response is matched against all keywords β€” the highest matching fraction determines the score. Multiple keywords accept spelling variants or synonyms.
Keyword Fraction (0–1) Feedback when matched (optional)
Applies to all keywords β€” when off, the learner's answer must match a keyword's exact casing.
Shown to all learners after submission.
Total marks this question contributes.

Prototype β€” simulate state:

Spec notes

Identity

SUC-CCM-08 Β· Screen: SCR-CCM.07 (Question Editor β€” Short Answer)

ReturnUrl context

Current returnUrl: /manage-question-bank/
Fallback: / when returnUrl is empty.
Propagation: Save β†’ returnUrl. Cancel β†’ returnUrl + &sub_cancelled=1.

Sub-flow context

SUC-CCM-08 Β· Invoked by (Backoffice Portal): SUC-CCM-11 (Build Quiz) and UC-CCM.12 (Manage Question Bank).
Question type is locked to short_answer and cannot be changed after first save.
The learner's response is matched against all keywords β€” the highest matching fraction determines the score (partial credit supported).
New question: Question + QuestionVersion v1 + QuestionAnswer rows, status Active.
Edit mode: a new QuestionVersion is saved; the previous version is preserved for quiz sections already referencing it.
Cancel (AF 5A): no data saved, question bank unchanged.
Validation error (AF 6A): shows an error on each field that failed the requirement; resumes at step 5.

Screen spec: SCR-CCM.07 (short_answer type)

  • Regions: Question Header Β· Question Text Β· Type-Specific Content Β· Feedback & Explanation Β· Scoring Β· Form Actions
  • question_type (Field 2): read-only Β· locked to param.type = short_answer Β· data_ref: Question.type
  • question_text (Field 3): required Β· 1–5000 chars Β· data_ref: QuestionVersion.text
  • sa_keywords (Field 8): dynamic table β€” keyword (QuestionAnswer.content), fraction (QuestionAnswer.fraction, 0..1), feedback (QuestionAnswer.feedback, optional); at least 1 keyword required, each non-empty
  • sa_case_insensitive (Field 9): question-level toggle, default on (case-insensitive) Β· data_ref: QuestionVersion.config.case_insensitive
  • explanation (Field 5): optional Β· max 5000 Β· data_ref: QuestionVersion.config.explanation
  • points (Field 4): required Β· 0.01–1000 Β· default 1 Β· data_ref: QuestionVersion.points
  • AR#1: at least 1 keyword, each non-empty (SS-CCM.09). AR#2: atomic save β€” no partial data on failure (SS-CCM.07).