Skip to end of banner
Go to start of banner

Submission with Teams

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

The basic requirements are:  (1) let challenge participants declare whom they're working with, this group being visible, and (2) impose submission quotas that apply to a participant even when someone else on their team is the one creating the submission in Synapse.  This presentation elaborates on the basic requirements:

Team Use Case and Design.pptx

 

Design Approach

1) A Challenge is a Project with some extra metadata.  Implement this as a new object which a Project can 'own', and on which CRUD operations can be done independently from the Project.

2) Introduce new Team-Challenge association to let participants associate their Team with a Challenge.  

3) Explicitly limit the number of Submissions per 'round' ('phase'?) of a Challenge on a per-user basis.  A Submission has a list of associated _users_ which is 'initialized' in the UI (prior to being submitted) to be the membership of a Team MINUS unregistered Team members MINUS Team members who exceeded their submission limit.  The client submits a _finalized_ participant list as part of the Submission.

4) Users are notified of submissions with which they are associated and may opt out.  (This prevents another user from consuming one's submission quota). Opting out must occur prior to scoring.

 

User Experience

Challenge administration:

- make a new Project

- create Participant Team

- create Challenge, specifying the participant Team

- make Evaluation queues, setting start/end of rounds, max submissions per participant per round, optOutDisallowed states.

Currently these operations are done from the command line.  They could be scripted for convenience.

 

User registration:

User submission:

 

unchecked-disabled Team member:  "This member has exceeded their submission quota.  You may ask them to 'opt out' of pending submission(s) by other Team(s) they are on, then retry this submission."

 

Opt out:

- user receives submission notification email.

- user following link in email to Portal.

- Portal list submissions for which user may opt out.

 

Response to User Protests:

* I should have been included in that submission because I'm on the Team that submitted.

* I wasn't able to submit, but I had yet submitted so I wasn't over quota.

 

Objects

Entity Relationship Diagram

Note:  For simplicity we leave out existing fields of legacy objects, Project, Team and Evaluation, and Submission.

submitWithTeams.uxf

Services

Data Transfer Objects

Class NameFields
Challengeid, projectId, participantTeamId, createdBy/On, modifiedBy/On
ChallengeTeamid, challengeId, teamId, message, createdBy/On, modifiedBy/On
Submission..., contributerIds (array)
SubmissionBundleSubmission, SubmissionStatus, TeamState
EntityBundle..., Challenge

 

 

URIMethodRequest ParametersRequest BodyResponse BodyAuthorizationNotes
/challengePOST--ChallengeChallengeCREATE permission required in referenced project 
/challenge/{id}GET----ChallengeREAD permission required in referenced project 
/entity/{projectId}/challengeGET----ChallengeREAD permission required in project 
/challenge/{id}PUT--Challenge--UPDATE permission required in referenced project 
/challenge/{id}DELETE------DELETE permission required in referenced project 
/challenge/{id}/challengeTeamPOST--ChallengeTeamChallengeTeamMust be a member of the Participant Team and be an admin on the referenced Challenge Team. 
/challenge/{id}/challengeTeam/{challTeamId}GET----ChallengeTeamMust have READ permission in the Challenge Project. 
/challenge/{id}/challengeTeamGETlimit, offset, userId--PaginatedList<ChallengeTeam>Must have READ permission in the Challenge Project.userId is an optional filter, limiting the results to just those Teams containing the user.  400 status if not in the Participant Team.
/challenge/{id}/challengeTeam/{challTeamId}PUT--ChallengeTeamChallengeTeamMust be a member of the Participant Team and be an admin on the referenced Challenge Team. 
/challenge/{id}/challengeTeam/{challTeamId}DELETE------Must be an admin on the referenced Challenge Team. 
/evaluation/submissionPOSTetag, teamIdSubmissionSubmissionMust have SUBMIT permission in the Evaluation referenced in the Submission.If teamId is included then a TeamState object is created for the Submission.  If 'contributer' list is non empty then teamId is required and Submission is rejected if submitter or any specified contributers is not on the given team.  Notifications sent to all contributers except for submitter, with instructions for opting out.
/evaluation/submission/{id}/optOutPUTuserId----userId must be the one making the request.Sets 'optOut' field for given userId in the Submission.  userId must be a contributer in the Submission (not the submitter himself) and Submission must not be in one of the Evaluation's 'optOutDisallowed' states.
  • No labels