Dear Stian, sorry to bother you again,
is it possible to do the same thing as Alan proposed for the Beanshell (extract the uuid from env) in a externaltool? Best regards, Simone. ----- Messaggio originale ----- Da: "Simone Bnà" <[email protected]> A: "Stian Soiland-Reyes" <[email protected]> Cc: [email protected] Inviato: Lunedì, 18 aprile 2016 10:39:56 Oggetto: Re: add a plugin to a taverna server Dear Stian, > while I guess you want to > match the UUIDs used in the REST interface of the Taverna Server. Yes. Best regards, Simone. ----- Messaggio originale ----- Da: "Stian Soiland-Reyes" <[email protected]> A: "Simone Bnà" <[email protected]> Cc: [email protected] Inviato: Sabato, 16 aprile 2016 14:21:01 Oggetto: Re: add a plugin to a taverna server Ah.. but then I'm not sure if my UUIDs will help you, as those identify the command line engine's run ID - while I guess you want to match the UUIDs used in the REST interface of the Taverna Server. I am not sure if the Taverna Server can be told to inject the external run UUID into the workflow.. Donal? On 15 April 2016 at 13:29, Simone Bnà <[email protected]> wrote: > Dear Stian, > > thanks a lot for your reply. > >> Q: Why? Are you recording provenance? > > The idea is to send notifications to a server of what happens during the > execution of a bash script called inside an External Tool (or Beanshell). > > So what I need is in some way to get the uuid of the workflow run created by > taverna server at runtime. > > I tried to get it from the PWD command but for each activity I got the > /tmp/usecase**** folder and not /tmp/<uuid> > and I did not find any relations between the two. > > I am not constrained to find it from Beanshell, if there was another smarter > and simpler way it should be better :) > > Best regards, > > Simone. > > > ----- Messaggio originale ----- > Da: "Stian Soiland-Reyes" <[email protected]> > A: [email protected], "Simone Bnà" <[email protected]> > Inviato: Venerdì, 8 aprile 2016 18:32:59 > Oggetto: Re: add a plugin to a taverna server > > Hi, I assume you have signed up to dev@taverna where I have CC-ed your > reply and any following discussion. > > http://taverna.incubator.apache.org/contact#devtaverna > > >> 1) How can I get the uuid of a workflow run in a Beanshell script? > > I assume you mean in Taverna 2.5. > > It is not currently directly exposed. Perhaps think it should be - > through some injected "_metadata" oibject perhaps? > > Q: Why? Are you recording provenance? > > > > You would have to cheat quite a bit.. > > Someone tried something similar before: > https://sourceforge.net/p/taverna/mailman/message/25689147/ > > But complicating this is that you want to find it from Beanshell, not > your own Activity. The Beanshell script is evaluated here: > > https://github.com/apache/incubator-taverna-common-activities/blob/master/taverna-beanshell-activity/src/main/java/org/apache/taverna/activities/beanshell/BeanshellActivity.java#L174 > (in 2.5: > https://github.com/apache/incubator-taverna-common-activities/blob/old/beanshell-activity-1.5.1/src/main/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivity.java#L181 > ) > > where it does not expose the workflowRunID that was calculated just before. > > > However luckily the Thread contains the workflow run number as part of > it's string - so we can be a bit evil.. > > Basically we can lookup that in here: > > http://www.taverna.org.uk/api-2.2/net/sf/taverna/t2/facade/WorkflowInstanceFacade.html#workflowRunFacades > > > Try this: > > import net.sf.taverna.t2.facade.WorkflowInstanceFacade; > > threadName = Thread.currentThread().getName(); > processId = threadName.split(" ")[1]; > String topFacadeId = processId.substring(0, processId.indexOf(":")); > topFacade = WorkflowInstanceFacade.workflowRunFacades.get(topFacadeId).get(); > > > runId = topFacade.getWorkflowRunId(); > runUri = "http://ns.taverna.org.uk/2011/run/" + runId + "/"; > > topDataflow = topFacade.getDataflow(); > dataflowId = topDataflow.getIdentifier(); > > wfBundleUri = "http://ns.taverna.org.uk/2010/workflowBundle/" + > dataflowId + "/"; > dataflowName = topDataflow.getLocalName(); > // TODO Escaping name > wfUri = wfBundleUri + "workflow/" + dataflowName + "/"; > > That should return you all the identifiers you need -- e.g. > > http://ns.taverna.org.uk/2011/run/0d3e1533-f032-46a7-a9b8-d6e4e2f24ec6/ > http://ns.taverna.org.uk/2010/workflowBundle/9b1b7683-bd7c-4af3-947b-fa4790d693b7/ > http://ns.taverna.org.uk/2010/workflowBundle/9b1b7683-bd7c-4af3-947b-fa4790d693b7/workflow/Workflow2/ > > Those should match with provenance. > > (it might be more complicated if you do nested workflows.) > > >> 2) How can I add new libraries to be used from a Beanshell script in taverna >> server? >> Am I supposed to copy the *.jar libraries in >> .../apache-tomcat-x.x.x/webapps/taverna-server/WEB-INF/lib? > > No, those would not be used, as the workflow is executed in a new > executeworkflow.sh process outside Tomcat. > > Rather you would need to upload the JARs per workflow run to the lib/ > sub folder of the workingDirectory through the Taverna Server API, or > add them to the equivalent of > /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/util/taverna-commandline-enterprise-2.5.0/lib > > which is the unpacked commandline distribution within the Taverna Server > > > -- > Stian Soiland-Reyes > Apache Taverna (incubating), Apache Commons RDF (incubating) > http://orcid.org/0000-0001-9842-9718 > > -- > Simone Bnà, PhD > C++ Software Developer, CINECA > Via Magnanelli 6/3, 40033 Casalecchio di Reno, Italy > office: +39-0516171938 > email: [email protected]/[email protected] -- Stian Soiland-Reyes Apache Taverna (incubating), Apache Commons RDF (incubating) http://orcid.org/0000-0001-9842-9718 -- Simone Bnà, PhD C++ Software Developer, CINECA Via Magnanelli 6/3, 40033 Casalecchio di Reno, Italy office: +39-0516171938 email: [email protected]/[email protected] -- Simone Bnà, PhD C++ Software Developer, CINECA Via Magnanelli 6/3, 40033 Casalecchio di Reno, Italy office: +39-0516171938 email: [email protected]/[email protected]
