elixir-cloud-aai / web-components

GA4GH Web components are the reusable custom elements that can be utilized in your web apps & web pages independently irrespective of what framework/library you are using to build the frontend.
https://web-components-beta.vercel.app/
MIT License
6 stars 6 forks source link

Component: proWES client #35

Open uniqueg opened 2 years ago

uniqueg commented 2 years ago

Is your feature request related to a problem? Please describe.

The GA4GH Workflow Execution Service (WES) API specification allows executing computational analysis workflow in a uniform, workflow-agnostic manner.

proWES is a lightweight implementation of WES that is not bound to any particular workflow engine. Instead, it is a gateway for relaying WES requests to WES instances that actually wrap a workflow engine to execute the workflow. It can be used to distribute workflow run requests and inject middleware to harmonize WES behavior beyond what the current WES specification offers. Apart from the endpoints defined by WES, it also specifies an additional endpoint to set the Service Info for a given proWES deployment. In addition to acting as a gateway, proWES can be used to as a backend for storing workflow run metadata for a web portal operationalizing GA4GH Cloud APIs, such as Krini.

Describe the solution you'd like

Implement a Web Component client for proWES that serves the above-mentioned use cases. Note that this may require the use/packaging of multiple reusable child components or the reuse of already exisiting ones. Before starting the implementation, please draft a brief design proposal. Also think how this component might interact with the component in #32 to mint DRS URIs for any workflow outputs.

A lot of the work has already been implemented in Krini (as a basic WES client). This work should package the available code in a Web Component and add support for the proWES specific endpoint POST /service-info. However, the latter functionality should be optional as the client should also work with any WES implementation.