Yes, SCUFL2 is both a format and an API that represents a workflow definition:
http://taverna.incubator.apache.org/documentation/scufl2/api http://taverna.incubator.apache.org/javadoc/taverna-language/org/apache/taverna/scufl2/api/package-summary.html A SCUFL2 workflow is a dataflow-driven way to execute multiple processes in parallel. In short a SCUFL2 model is defined by: WorkflowBundle contains one or more Workflows, and 0 or more Profiles. A Workflow defines how to wire together Processes with Datalinks between their Input and Output Parameters. A Profile defines what is executed in each Processor, by connecting it to an Activity that has been Configured. A WorkflowBundle can be saved as a .wfbundle - which is a ZIP file that contains the workflows, profiles and configurations as XML and JSON files. An example Activity is a Tool execution, where the Configuration says which command to run, and which files to read/write. Another is the REST activity, which configuration says which URL to fetch. Activities have inputs and output parameters as well - typically they match 1:1 to the parameters of a processor. A special kind of Activity is the Nested Workflow activity, which Configuration allows you to refer to another Workflow within the bundle. There can be multiple profiles, which allow for alternative executions of the same workflow, e.g. for running different command lines or different web services. However the profile has to "bind" each of the processors of the workflow in order for it to run. When executing a workflow, the SCUFL2 is translated by the Taverna Engine to a series of interconnected objects with Processor, Activity and DataLink from org.apache.taverna.core. The structure looks similar to the SCUFL2 API model, but it adds various state only needed during execution. While running, data is pushed from Processor to Processor via the parameters and datalinks. As a workflow also have inputs and outputs, the workflow can be parameterized by its inputs, and final results will come in the workflow outputs. If you run a workflow on the command line, the workflow outputs say which files are going to be created. We have multiple modules to read and write workflow files to SCUFL2, in order to support older Taverna formats (.t2flow from Taverna 2, .scufl from Taverna 1), and export into more descriptive workflow formats like wfdesc.ttl. If/when we add CWL support to SCUFL2 it would mean to add another such parser (and potentially writer) to https://github.com/apache/incubator-taverna-language Now this is what you would need if you were doing TAVERNA-877 or TAVERNA-881 (CWL parser/writer) - but you wanted to focus on TAVERNA-880 - so you don't need to go too much into depth here. You wanted to do the CWL UI support in the Workbench - which is a graphical way to build workflows. In Taverna Workbench 3 dragging and dropping workflow elements around will construct a SCUFL2 model - an the Service Discovery bit needs to supply the bits needed to construct an Activity http://taverna.incubator.apache.org/javadoc/taverna-language/org/apache/taverna/scufl2/api/activity/Activity.html with input and output ports mapped according to the CWL inputs and outputs. http://common-workflow-language.github.io/draft-3/CommandLineTool.html#Input_binding We have a tutorial for Taverna 2 for making a ServiceProvider - see http://dev.mygrid.org.uk/wiki/display/developer/Tutorial+-+Service+discovery+plugin If you follow this tutorial, you will see that you will see that the UI in Taverna 2 is making the executable "core" workflow items straight out of the box rather than modifying the scufl2 model, as SCUFL2 was introduced for Taverna 3. (To confuse matters, the executable objects are called 'workflowmodel'!) So one task might be to try out the T2 tutorial for making a skeleton CWL activity (which can't run, but only hold its configuration) - in that way you would stay close to the Taverna 3 spirit. And then you can try to change this plugin to fit the Taverna 3 workbench APIs, as we will be making CWL activities for Taverna 3. Perhaps your changes to the UI code when moving from Taverna 2 to Taverna 3 can be documented somehow (e.g. "Change return of getActivity() to an URI - you can find that URI _here_ and _there_."). ..and possibly updating the tutorial? I would leave that as an optional if you finish early. :) Here's how the Taverna 3 code for populating WSDL Services based on a WSDL document works: https://github.com/apache/incubator-taverna-workbench-common-activities/blob/master/taverna-wsdl-activity-ui/src/main/java/org/apache/taverna/activities/wsdl/servicedescriptions/WSDLServiceProvider.java so you see a AbstractConfigurableServiceProvider might have a configuration of its own - in your case it could be the folder (or eventually URL) to look for CWL tool descriptions in. Perhaps you'll just look at *.cwl.yml there. Then findServiceDescriptionsAsync is called, and you have to return one or more ServiceDescriptions using callBack.partialResults() (possibly multiple times if you are indexing many files), finishing with callBack.finished(). A ServiceDescription has a getActivityConfiguration() method, this is where you return the JSON that configures the CWL. Now you won't have full control here, as this depends on what the theoretical CWLActivity needs to execute (TAVERNA-878) - which you probably won't get into - but you can have a rough idea in that it basically needs most of the YAML file content. YAML files can be represented as JSON objects - in fact Jackson (which we use for JSON) can read YAML. So I would suggest you just pass this on as-is. It could be that you have to make a skeleton CWL activity for Taverna 3, so that you can do the getInputPorts() and getOutputPorts() calls: https://github.com/apache/incubator-taverna-common-activities/blob/master/taverna-wsdl-activity/src/main/java/org/apache/taverna/activities/wsdl/WSDLActivityFactory.java#L85 Those shouldn't be too hard as the CWL defines all inputs and outputs explicitly. I know this can be confusing - it's confusing to many of us! (Improvements wanted!) But feel free to ask more and to share with us drafts of your project proposal! On 3 March 2016 at 09:29, Thilina Manamgoda <[email protected]> wrote: > Hi , > > Now i am familiar with working apache taverna.But what modules do i need to > study in the git modules to understand how it is implemented.From what i > understand currently Taverna workflows are implemented using Scufl2 Taverna > Language.So CWL is used to bring different work flow implementation into > one platform .Am i correct ?.So what part do i need to study in order to > get better idea about project "Browse and use CWL tool descriptions from > the workbench " ?. > > > regards > Thilina. > > On Mon, Feb 29, 2016 at 5:51 PM, Stian Soiland-Reyes <[email protected]> > wrote: > >> Here's a getting started guide for Taverna >> >> http://taverna.incubator.apache.org/documentation/quick-start-guide/ >> >> Also a video: >> >> https://www.youtube.com/watch?v=Zh0tn8amjAY >> >> And more tutorials for 2.5: >> >> http://dev.mygrid.org.uk/wiki/display/tav250/Tutorials >> >> (You don't need to go through all of those, just like the first one) >> >> On 28 February 2016 at 02:00, Stian Soiland-Reyes <[email protected]> >> wrote: >> > Hi, thanks for showing early interest! >> > >> > Perhaps you would like to tell us a bit about yourself and your >> background? >> > Are you studying Computer Science? >> > >> > First of all you probably want to have a quick look at the Getting >> Started >> > documentation for Taverna, and try the Taverna Workbench Core 2.5 >> download. >> > There should be a tutorial for building a hello world workflow somewhere, >> > I'll see if I can find it. >> > >> > Basically what this task you mention is about is to add support for >> finding >> > CWL tools under the top-left Available Services panel, so they can be >> > dragged into the workflow. >> > >> > The remaining tasks deal with how to execute such CWL tools, and how to >> > represent a Taverna workflow in CWL (or vice versa) >> > >> > The Jira issue gives an introduction and various links to related >> material. >> > >> > As for the Workbench integration we have already this plugin developer >> > tutorial: >> > >> > >> http://dev.mygrid.org.uk/wiki/display/developer/Tutorial+-+Service+discovery+plugin >> > >> > Unfortunately this tutorial relates to Taverna 2, while now we develop >> > Taverna 3. Naturally we would hope for your potential contribution to >> apply >> > to Taverna 3, which has a slightly different mechanism for Taverna >> Activity >> > configuration (JSON object instead of a Java Bean). >> > >> > We have not yet released the Taverna 3 Workbench, so testing your work >> might >> > require other modifications to the T3 Workbench code to get it running. >> We >> > would appreciate any general fixes there (e.g. if we have the wrong >> import >> > statements after moving to org apache.taverna) - but it could be >> sufficient >> > for you to track such issues and discuss them on our mailing list >> > >> > However for your discovery side I think it should be fine for you to >> start >> > work in Taverna 2 and with a dummy Activity that just keeps a Jackson >> JSON >> > object, and then adapting your code to Taverna 3 would be a nice second >> > phase. >> > >> > As for discovery side this is still early days in the CWL community, so >> you >> > want to engage them to ask what are the plans for a tool registry. I know >> > they are working with the http://bio.tools/ guys, but I am not sure how >> easy >> > it is to add CWL Tool YAML/JSON directly there (or by reference). >> > >> > As far as I've seen CWL used, each tool is typically stored in a separate >> > YAML file. Perhaps a good start is to just "discover" within a fixed or >> > configured directory which we can populate manually with from CWLs Github >> > examples. >> > >> > The Service Discovery mechanism in Taverna can do searches over fields, >> so >> > an add-on task could be to expose some of the metadata that could be in >> the >> > tool description, e.g. function:sequencing. However I think again >> metadata >> > work in CWL is early days and you might need to work with the CWL >> community >> > to get good examples. >> > >> > On 27 Feb 2016 12:23, "Thilina Manamgoda" <[email protected]> wrote: >> >> >> >> Hi, >> >> >> >> I am interested in "Browse and use CWL tool descriptions from the >> >> workbench" task and to get better idea about this project can you >> provide >> >> me a guide line please. >> >> >> >> Regards >> >> ,Thilina >> >> >> >> On Sat, Feb 27, 2016 at 4:40 PM, Alan Williams < >> [email protected]> >> >> wrote: >> >> >> >> > On 27-Feb-16 09:05, Thilina Manamgoda wrote: >> >> > >> >> >> HI, >> >> >> >> >> > >> >> > Hello >> >> > >> >> > Source: https://issues.apache.org/jira/browse/TAVERNA-900 >> >> >> >> >> >> I am Thilina Manamgoda undergraduate from University of Perandeniya. >> I >> >> >> would like to contribute this project for GSOC 2016. >> >> >> >> >> > >> >> > That is great. >> >> > >> >> > In order to add CWL support to Taverna following steps should be >> taken. >> >> >> >> >> >> 1.Save Taverna workflows as CWL >> >> >> 2.Read CWL workflows >> >> >> 3.Execute CWL tool descriptions >> >> >> 4.Browse and use CWL tool descriptions from the workbench >> >> >> 5.Create a Docker tool for executing Taverna activities >> >> >> >> >> >> So for Gsoc 2016 i need to get better idea about the project ,am i >> >> >> supposed >> >> >> to do one of above task or all of them ?. >> >> >> >> >> > >> >> > As the issue says, "the GSOC student can ... choose to pursue one or >> two >> >> > of these tasks in detail" >> >> > >> >> > So, if you are interested in (for example) Docker, you might want to >> >> > concentrate on #5. >> >> > >> >> > As part of a submission to become a GSOC student, you do a proposal of >> >> > what you plan to do. That proposal will depend on which task(s) you >> are >> >> > interested in working on. The content of a proposal from someone >> >> > interested >> >> > in #1 would be very different to that for someone working on #4. >> >> > >> >> > Which task(s) are you interested in? >> >> > >> >> > Feel free to ask as many questions as you want. >> >> > >> >> > Regards, >> >> >> Thilina. >> >> >> >> >> > >> >> > Alan >> >> > >> >> > >> >> >> >> -- >> Stian Soiland-Reyes >> Apache Taverna (incubating), Apache Commons RDF (incubating) >> http://orcid.org/0000-0001-9842-9718 >> -- Stian Soiland-Reyes Apache Taverna (incubating), Apache Commons RDF (incubating) http://orcid.org/0000-0001-9842-9718
