Story #6058

Updated by Tom Clegg over 4 years ago

Imagine that I'm a bioinformatician looking at a public pipeline on an Arvados installation. I don't have an account (in fact I've never heard of Arvados until today), but I'd like to run this pipeline on data that I have. Workbench should smoothly (and in as few steps as possible) guide me through the process of:

* creating an account
* doing any necessary user setup like filling in a profile
* uploading data
* specifying the pipeline inputs
* running the pipeline
* seeing the results

Ideally, I should never see the Dashboard through this process, even if I close my browser and resume my session in between some of these steps, unless I expressly navigate to it. If that's too difficult, it would also be okay to put a prominent prompt at the top of Dashboard that guides me to the next step: "Hey, you've uploaded some data for this pipeline but haven't run it yet. You can upload more data, or if you're done with that, you can set the pipeline's inputs and run it."

h3. Specific behavior

When a user clicks the "Run" button next to a pipeline template description (e.g., on a "show pipeline template" page or a "list of public pipelines" page), Workbench enters "goal mode". This might be implemented by setting @current_user.prefs["workbench_goal"]=pipeline_instance_uuid@ -- i.e., goal mode should survive browser restarts, navigation, changing browsers, etc. We might want to expand "goal mode" to accommodate more kinds of goals in the future, but for now we only need to implement one kind of goal: "upload files, run a pipeline using those files as input, and download the pipeline output."

Goal mode affects Workbench behavior as follows:
* Before displaying any HTML page, figure out the appropriate next move in order to get closer to the goal.
** If the next move can be done without any further user input, do it now.
*** Example: If the pipeline instance is in the "Ready" state, don't prompt the user to push a Start button -- just start it.
** If the next move requires user input (and the current page is not the appropriate page for getting that input), redirect to the appropriate page.
*** Example: If the user uploads several files and then navigates to Workbench's root URL, don't show the dashboard -- instead, redirect to the "inputs" tab of the "show pipeline instance" page for the goal pipeline.
*** As mentioned above, if "redirect" is too troublesome, it's acceptable to show a banner saying something along the lines of "hey, you were in the middle of running this pipeline... click Next to {do whatever's next}."
* On each page, show an alert area (perhaps similar to the "'browser unsupported' ""browser unsupported" notice":https://arvados.org/attachments/download/474/Screenshot%20from%202015-02-07%2017_11_24.png, but with less danger-style) telling the user what to do. Show a "Next" button linking to the next step.
** Example: The alert area on the "new collection" page should say something like "Upload your input files here. When you're finished, click "Next" to run the pipeline."
** The alert area should always offer a Cancel/Close/Quit/Go Away button that turns off "goal mode", hides the alert area, and stays on the current page.

h3. Simplifying assumptions and restrictions

The "upload data" part will be superfluous for some use cases where a user wants to run a pipeline on public data that's already available in the system. However, to simplify the first "goal mode" implementation, we'll ignore this case and consider "upload some files" to be a mandatory step.

Some pipeline components ask for an input collection; some ask for an input file. When writing the "please do this next" text, we'll pretend the "file" case is the only one. This might mean the "goal" text doesn't match the other UI text/dialogs in some cases when a pipeline asks for an input collection. We can live with that.

We won't try to guess whether a file has been successfully downloaded. When the pipeline finishes, we'll send the user to the output collection page, and the "goal" text will encourage the user to download the results. We won't need a "Next" button here, just a "Dismiss" button. Until the user hits "Dismiss" Workbench will be stuck on the "show collection" page (this is a feature: if download doesn't work, and the user launches a different browser and points it to Workbench, we should head straight to "show collection" to try again).

h3. Complications

If an anonymous user clicks "Run" on a publicly viewable pipeline, the correct behavior is:
* Do the usual login procedure
* Deal with user agreement and profile, as required by config
* Create a new pipeline instance
* Land in "goal mode", remembering the selected pipeline template

This might mean using a session cookie to remember the selected template, although it would be cleaner/better to do it by asking apiserver to return to {workbench}?goal=template_uuid after login.

Unactivated users can't create new pipeline instances, but the goal could be a template_uuid until the user becomes active, at which point Workbench could create an instance and change the goal to instance_uuid.

Back