Form Submission
Use Case
The basic use case involves two users:
- Submitter - The end user that wishes to submit data via a form.
- Processor - The service users responsible for processing submission.
A submitter wishes to contribute data to a collaboration. The submitter is presented a UI "wizard" that guides them through the process of gathering their data. The data gathering process is complex and time consuming it might take multiple session to complete. Once the submitter completes the process they can submit their data to be processed.
The processor service is continuously running and waiting for end user submissions. When the service receives a submission it will evaluate the submitted data and either accept or reject the submission. Since the submission process is not instantaneous, the submitter wishes to be notified of all changes the status of their submission.
Basic flow of the submission process.
REST API
The submission portion of the use case will be handled by the existing Evaluation Services API. A new set of APIs will be developed to gather the form data.
Object Models
FormData
type | name | Description |
---|---|---|
String | dataFileHandle | Id of the fileHandle containing the actual form data |
String | createdBy | The userId of the user that created this object. The service will automatically provider this value. |
Date | createdOn | Date this object was created. |
Date | modifiedOn | Date this object was last modified. |
StatusEnum | status | Enumeration of the possible status of this object. |
String | formId | The Synapse issued identifier for this object. |
String | destinationEvaluationId | The Id of the destination evaluation where this object will be submitted. |
StatusEnum |
---|
In Progress |
Submitted |
FormListRequest
type | name | description |
---|---|---|
StatusEnum | statusFilter | When included only FormData objects matching this state will be returned. |
String | nextPageToken | The results are automatically paginated. To get the next page, forward the nextPageToken returned from the last request. |
FormListResults
type | name | description |
---|---|---|
List<FormData> | page | A single page of results from a FormListRequest |
String | nextPageToken | When a nextPageToken is provided there are more results that can be retrieved by forwarding the token in the next request. |
Response | Endpoint | Request | Description |
---|---|---|---|
FormData | POST /form | FormData | Create or update a FormData. Only the creator may update the object. Submitted object cannot be modified. |
FormData | GET /form/{formId} | Get a FormData for a given Id. Callable by the creator or administrator of the linked destination evaulation. | |
DELETE /form/{formId | Delete the FormData for the given Id. Only callable by the object creator before submission. Cannot delete submitted objects. | ||
FormListResponse | POST /form/list | FormListRequest | Get a single page of FormData objects that match the requested query parameters. Only object created by the caller will be returned in this query. |