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

Reply via email to