{"action":"created","issue":{"url":"https://api.github.com/repos/galaxyproject/galaxy/issues/1306","labels_url":"https://api.github.com/repos/galaxyproject/galaxy/issues/1306/labels{/name}","comments_url":"https://api.github.com/repos/galaxyproject/galaxy/issues/1306/comments","events_url":"https://api.github.com/repos/galaxyproject/galaxy/issues/1306/events","html_url":"https://github.com/galaxyproject/galaxy/pull/1306","id":121802165,"number":1306,"title":"New Workflow Modules - Input Parameters and Subworkflows","user":{"login":"jmchilton","id":216771,"avatar_url":"https://avatars.githubusercontent.com/u/216771?v=3","gravatar_id":"","url":"https://api.github.com/users/jmchilton","html_url":"https://github.com/jmchilton","followers_url":"https://api.github.com/users/jmchilton/followers","following_url":"https://api.github.com/users/jmchilton/following{/other_user}","gists_url":"https://api.github.com/users/jmchilton/gists{/gist_id}","starred_url":"https://api.github.com/users/jmchilton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmchilton/subscriptions","organizations_url":"https://api.github.com/users/jmchilton/orgs","repos_url":"https://api.github.com/users/jmchilton/repos","events_url":"https://api.github.com/users/jmchilton/events{/privacy}","received_events_url":"https://api.github.com/users/jmchilton/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/galaxyproject/galaxy/labels/area/UI-UX","name":"area/UI-UX","color":"006b75"},{"url":"https://api.github.com/repos/galaxyproject/galaxy/labels/area/workflows","name":"area/workflows","color":"006b75"},{"url":"https://api.github.com/repos/galaxyproject/galaxy/labels/kind/enhancement","name":"kind/enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/galaxyproject/galaxy/labels/status/review","name":"status/review","color":"C9A203"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":11,"created_at":"2015-12-11T22:11:53Z","updated_at":"2015-12-15T14:28:52Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/galaxyproject/galaxy/pulls/1306","html_url":"https://github.com/galaxyproject/galaxy/pull/1306","diff_url":"https://github.com/galaxyproject/galaxy/pull/1306.diff","patch_url":"https://github.com/galaxyproject/galaxy/pull/1306.patch"},"body":"## Overview\r\n\r\nThis PR contains two new workflow modules to bring in concepts required to implement CWL workflows in Galaxy - nested workflows and input parameters. I developed these in the CWL fork of Galaxy but I am confident they will be very useful for vanilla Galaxy workflows.\r\n\r\n## Process\r\n\r\nIf people generally agree to this PR - I'd like to merge e4c9ddb and 22f06b7 which have two database migrations into one before it is merged. I'm keeping them separated for now in case people object to one of these workflow modules but not the other.\r\n\r\n## Nested Workflows\r\n\r\n - Add a new workflow module describing subworkflows.\r\n - Update workflow, workflow step, and workflow invocation models to track subworkflow connections and execution.\r\n - Extend workflow outputs with concepts of labels (and UUIDs while I'm there) to match workflow inputs. This allow us to have something to label outputs with in the workflow editor and to reference in the format 2 workflow description language.\r\n - Extend workflow editor UI to allow labelling workflow outputs (and enforce that these are unique across a workflow).\r\n - Extend workflow invocation and progress tracking to allow invoking a subworkflow as part of another workflow invocation.\r\n - Extend workflow import and export code to allow a nested representation of workflows.\r\n - Update format 2 workflow description to allow testing nested workflows.\r\n\r\n```\r\n./run_tests.sh -api test/api/test_workflows.py:WorkflowsApiTestCase.test_run_subworkflow_simple\r\n./run_tests.sh -api test/api/test_workflows_from_yaml.py:WorkflowsFromYamlApiTestCase.test_subworkflow_simple\r\n./run_tests.sh -api test/api/test_workflows_from_yaml.py:WorkflowsFromYamlApiTestCase.test_outputs\r\nnosetests test/unit/test_galaxy_mapping.py\r\nnosetests test/unit/workflows/test_workflow_progress.py\r\n```\r\n\r\nFollowing screenshot demonstrates two ways to utilize workflows within another workflow:\r\n - the link icon preserves the subworkflow structure and treats it as a single unit\r\n - the copy icon copies the other workflow into the current workflow node for node\r\n\r\n![subworkflow_types](https://cloud.githubusercontent.com/assets/216771/11765902/d2457882-a164-11e5-93d1-e08bb8fcb849.png)\r\n\r\n\r\n## Workflow Input Parameters (Experimental)\r\n\r\n - Implement a input parameter module that mirrors data and collection input modules but has a type that can currently be one of text, integer, float, color, and boolean.\r\n - Allow connections between these and tool step inputs.\r\n - Extend model to support this.\r\n - Add new input types for format 2 workflow definitions for various types that all map to this kind of step. Typed inputs such as this match well with CWL workflow inputs.\r\n\r\nLabeled as experimental since the UI isn't developed but someday I imagine these will be superior to just marking a tool input \"Specify at Runtime\" for all the same reasons input steps are superior to leaving inputs unattached.\r\n"},"comment":{"url":"https://api.github.com/repos/galaxyproject/galaxy/issues/comments/164780457","html_url":"https://github.com/galaxyproject/galaxy/pull/1306#issuecomment-164780457","issue_url":"https://api.github.com/repos/galaxyproject/galaxy/issues/1306","id":164780457,"user":{"login":"jmchilton","id":216771,"avatar_url":"https://avatars.githubusercontent.com/u/216771?v=3","gravatar_id":"","url":"https://api.github.com/users/jmchilton","html_url":"https://github.com/jmchilton","followers_url":"https://api.github.com/users/jmchilton/followers","following_url":"https://api.github.com/users/jmchilton/following{/other_user}","gists_url":"https://api.github.com/users/jmchilton/gists{/gist_id}","starred_url":"https://api.github.com/users/jmchilton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmchilton/subscriptions","organizations_url":"https://api.github.com/users/jmchilton/orgs","repos_url":"https://api.github.com/users/jmchilton/repos","events_url":"https://api.github.com/users/jmchilton/events{/privacy}","received_events_url":"https://api.github.com/users/jmchilton/received_events","type":"User","site_admin":false},"created_at":"2015-12-15T14:28:51Z","updated_at":"2015-12-15T14:28:51Z","body":"@nsoranzo Am I going to get a line-by-line :bird: :eyes: critique of this or is it too big? Is there some sort of API for requesting such reviews :smile:?"}}