Service Layer
Add a new field to submission status called 'executionStatus', an enum with values INITIALIZED, RUNNING, CANCEL_REQUESTED, CANCELED, DONE.
...
If the executionStatus is CANCELED or DONE then a 400 Bad Request is returned.
To view and cancel submissions in the Synapse Portal:
Add a leaderboard widget, including an executionStatus column. The query should use 'where userId==@CURRENT_USER' to show just the submitter's jobs.
Choose the 'stop button' renderer for this column.
...