galaxyproject / galaxyproject/galaxy

Polish Workflow Refactoring API

Open
#11,005 6 comments 0 reactions 0 assignees View on GitHub
area/API area/workflows
Dominant language
Python
Stars
1.9k
Forks
1.2k
Avg merge
2d 16h
Merged PRs (30d)
169

Description

Post merge of #10988 which introduced this API.

- [ ] Add new refactoring steps:
- [x] ``{action: 'upgrade_subworkflow', step }`` https://github.com/galaxyproject/galaxy/pull/11032
- [x] ``{action: 'upgrade_tool', step }`` https://github.com/galaxyproject/galaxy/pull/11032
- [x] ``{action: 'fill_step_defaults', step: }`` https://github.com/galaxyproject/galaxy/pull/11032
- [x] ``{action: 'fill_defaults'}`` https://github.com/galaxyproject/galaxy/pull/11032
- [x] ``{action: 'update_output_label'}`` https://github.com/galaxyproject/galaxy/pull/11032 (not important, but helped with testing)
- [ ] ``{action: 'restore_workflow_version'}``
- [x] Rework response to include a structured message for each input action. So things like disconnected inputs/outputs during subworkflow upgrades of tool state upgrades can be presented to the user and tracked. https://github.com/galaxyproject/galaxy/pull/11032
- [x] In ``dry_run=true``, capture the messages and do some extra checking that could predict database problems (specifically, I'm sure we could catch label problems at this step and we probably don't.)) https://github.com/galaxyproject/galaxy/pull/11032
- [x] ``dry_run=true`` should return the effective new state, so the UI can do stuff like ``upgrade_subworkflow`` or ``restore_workflow_version``, render the results and display the messages but still require a "Save" before the new version is committed. https://github.com/galaxyproject/galaxy/pull/11032
- [ ] Store typed and structured actions and messages in the database along with the new workflow version created.
- [ ] Rework ``hasChanges`` tracking in ``Index.vue`` to track structured list of changes, use the refactoring API when possible.
- [ ] Eventually use refactoring API for all UI interactions that touch the ``Workflow`` object (something like editing the tags might be fine with the old API). (This would essentially implement #9166).

Contributor guide

Open the contributing guide

Research direction

Review the remaining checklist and the API introduced by #10988, including the changes in #11032. Start with the restore_workflow_version action, structured action/message persistence, and hasChanges tracking in Index.vue; done means these remaining API, database, and UI integrations are implemented and verified.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, python
Domain
backend-api-design, database, frontend
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.