Runtime View#
LTI Login+Launch#
As one of our most important Feature is the login via LMS this sequence diagram illustrates the process.
sequenceDiagram
participant B as Browser
participant M as Moodle
participant T as Tool
M->>M: Provide OICD third party login
B-)T: Open link
T->>T: is platform issuer valid?
T-)M: access token request
M--)T: resource launch token
T-)M: GET JWT
M--)T: JWT
T->>T: verify LMS
T--)B: render
Sources:
https://andyfmiller.com/2018/12/28/launching-an-lti-1-3-resource-link-using-openid-connect-third-party-login/
https://documentation.brightspace.com/EN/integrations/ipsis/LTI%20Advantage/LTI_launch_auth.htm
pg_stud API#
This section describes the usage of the REST API with perspective of the frontend and backend.
Execute Query#
sequenceDiagram
participant F as Frontend
participant B as Backend
participant D as Database
F->>B: Execute Query
B->>B: Retrieve Topic
B->>B: Retrieve Exercise
B->>D: Execute Query
D-->>B: Query Result
B-)D: Update User Exercise
B-->>F: Return QueryOut object
Check Answer#
sequenceDiagram
participant F as Frontend
participant B as Backend with Logic
participant D as Database
F->>B: Check Answer Correct
B->>B: Retrieve Topic
B->>B: Retrieve Exercise
B-)D: Reset DB
B->>D: Execute User Query
D-->>B: User Result
alt exercise.is_select
B->>D: Evaluate Solution Query
D-->>B: Solution Result
B->>B: Check Results
else
B->>D: Execute Check
D-->>B: Correct
end
B-)D: Update User Exercise
B-->>F: Check Answer Out
Show Solution#
sequenceDiagram
participant F as Frontend
participant B as Backend
participant D as Database
F->>B: Execute Query
B->>B: Retrieve Topic
B->>B: Retrieve Exercise
B->>D: Execute Query
D-->>B: Query Result
B-)D: Update User Exercise
B-->>F: Return QueryOut object
F->>B: Handle List Solution
alt topic_short
alt enumber
B-->>F: Solution List from Exercise
end
B-->>F: Solution List from Topic
else
B-->>F: All Solutions
end
F->>B: Handle Solution Result
B->>B: Get Topic
B->>B: Get Exercise
B->>B: Get Solution
B-)D: Reset Database
B->>D: Execute Solution
D-->>B: Solution Result
B-->>F: Query Output
Reset Database#
sequenceDiagram
participant F as Frontend
participant B as Backend with Logic
participant D as Database
F->>B: Handle Reset Database
B->>B: Retrieve Topic
B->>B: Retrieve Exercise
B-)D: Reset DB
B-->>F: Message