Design
Components
SmartSite Gradebook2 Institutional Adviser (GB2IA)
Final Grading Tool (FGT)
AFS
Process
GB2IA makes a POST request to the FGT
The request's content contains the grading information encoded in CSV and the siteId, which is used as the file name to stored the data
FGT writes the CSV grading data to SmartSite's AFS final grade location
Files are versioned (i.e. resubmissions will move existing files to increasing numbered versions and will replace the existing grade file)
FGT finishes the request by responding with a http status code
GB2IA inspects the response from FGSES and finished the initial client request
The client inspects the the response and if there are no errors, the client opens up the FGT in an pop-up window
FGSES Architecture
POST URL : https://cmdev.ucdavis.edu/CourseManagement/final_submit/fgs_ss_deliver.cfm
Request parameter key: fn
Request parameter value: <Sakai Site EID>
Request paramter key: gd
Request parameter value:
Kerberos Id,Name,EnrollmentSet EID,Grade homer,"Homer Simpson",http://ucdavis.edu/course/enrollmentset/12345/200910,C- marge,"Marge Simpson",http://ucdavis.edu/course/enrollmentset/12345/200910,A+
Return codes:
201 Created
403 Forbidden - IP address rejected
400 Bad Request - Missing data (missing form fields)
500 Internal Server Error (eg. file, afs, etc.)
Implementation And Runtime Environment Details for FGT
Middleware CM pool
New sakai.properties
final_grade_submission_url=https://cmdev.ucdavis.edu/CourseManagement/final_submit/fgs_direct_upload.cfm?sakai_id=
final_grade_submission_enterprise_service_url=https://cmdev.ucdavis.edu/CourseManagement/final_submit/fgs_ss_deliver.cfm
Until the https/cmdev issue is fixed we have to use the following url
final_grade_submission_enterprise_service_url=http://cmdev.ucdavis.edu/login/CourseManagement/final_submit/fgs_ss_deliver.cfm
final_grade_submission_request_key_grade_data=gd
final_grade_submission_request_key_file_name=fn
final_grade_submission_csv_header=Kerberos Id,Name,EnrollmentSet EID,Grade
Security
The service fulfills the request only for IPs that are registers with the service. Service replies with an HTTP 403 if the IP address is not known.
Usage / Load
A graph of the gradebook.downloadCourseGrade events for the last year or so