Files
edx-platform/lms/djangoapps/certificates/docs/diagrams/certificate_revocation.dsl
Justin Hynes 49537d5011 docs: add diagrams for course cert awarding and revocation
[APER-2551]

This PR adds some diagrams to help visualize the current certificate awarding and revocation process of the monolith.
2024-01-03 18:58:35 +00:00

59 lines
2.5 KiB
Plaintext

/*
* This is a high level diagram visualizing how the system revokes course and program certificates. It is written using
* Structurizr DSL (https://structurizr.org/).
*/
workspace {
model {
properties {
"structurizr.groupSeparator" "/"
}
event_bus = softwareSystem "Event Bus"
group "LMS" {
grades_app = softwareSystem "Grades Django app"
group "Certificates app" {
signal_handlers = softwareSystem "Certificates Signal Handlers"
}
credentials_app = softwareSystem "Credentials Django app"
programs_app = softwareSystem "Programs Django App"
celery = softwareSystem "Celery"
database = softwareSystem "Database"
}
group "Credentials IDA" {
credentials_ida_consumer = softwareSystem "Credentials Event Bus Consumer"
credentials_api_app = softwareSystem "Credentials API Django App"
credentials_credentials_app = softwareSystem "Credentials Django App"
}
grades_app -> signal_handlers "Emits COURSE_GRADE_NOW_FAILED signal"
signal_handlers -> database "Update certificate's status to NOT_PASSING"
database -> event_bus "Emits a CERTIFICATE_REVOKED event"
credentials_ida_consumer -> event_bus "Listening for Certificate events"
credentials_ida_consumer -> credentials_credentials_app "Revoke Certificate record"
database -> programs_app "On save(), emits a COURSE_CERT_CHANGED signal"
database -> programs_app "On save(), emits a COURSE_CERT_REVOKED signal"
// The following line is correct, an `award_course_certificate` task is queued whether we award or revoke a
// course certificate. It handles both operations.
programs_app -> celery "Enqueue award_course_certificate task"
programs_app -> celery "Enqueue revoke_program_certificate task"
celery -> credentials_app "Process award_course_certificate task"
celery -> credentials_app "Process revoke_program_certificate task"
credentials_app -> credentials_api_app "POST request to revoke course credential"
credentials_app -> credentials_api_app "POST request to revoke program credential"
}
views {
systemLandscape "SystemLandscape" {
include *
autolayout lr
}
styles {
element "Database" {
shape Cylinder
}
}
}
}