Interactive CWL workflows (e.g. pop-up to ask user as a step)


Have anyone implemented some kind of user interaction as part of their CWL workflow? I am looking for examples of “human in the loop”, say the workflow pauses for the user to select from choices of values, evaluates if a result is “good enough”, or simply visualization of

This is of course possible using Docker containers, a browser and something like nodejs, but CWL does not let you expose port bindings. So perhaps the interaction server would need to run in advance and then a step in CWL communicates with it. Or if running inside Seven Bridges platform or Arvados, the workflow could somehow talk back to the portal to pop up the question?

Here is an example of how we did interaction with Taverna ages ago - here the advantage was that the workflow was running from a server within a portal and therefore could (through some environment variables) find out how to “call back” to the user. When ran in the desktop we just popped up a local browser window with the question.

I guess there are also some cloud-based services you could push a question to and await for response, perhaps email the user that workflow needs a response.

Another alternative is to have two CWL workflows, “before.cwl” and “after.cwl” and have custom code that does the interaction inbetween.

So I don’t have a particular workflow in mind now, for a paper I am writing I wonder if anyone have done some kind of user interaction like that with CWL, however specialized?

1 Like

I think this is going to be your best bet.

In general, user interaction should be avoided. Use some kind of command line argument or input argument instead.

1 Like