Hi, No. Should the application we wrap write the output to a file? What I was thinking was Airavata would write the file to the specified location when the application writes to the std out.
Thank You ! On Tue, Jun 18, 2013 at 10:19 PM, Saminda Wijeratne <[email protected]>wrote: > Does executing "java -jar > E:\FYP\WPSclient3\out\artifacts\WPSclient3_jar\WPSclient3.jar %1" results > files inside the location which you specified? > > > On Tue, Jun 18, 2013 at 12:24 PM, AMILA RANATUNGA <[email protected] > >wrote: > > > Hi, > > > > Thanks a lot for the replies. > > > > When I tried .. > > > > OutputParameterType outputParameter = > > OutputParameterType.Factory.newInstance(); > > outputParameter.setParameterName("wps_output"); > > outputParameter.setParameterDescription("wps output"); > > ParameterType outputParaType = > > outputParameter.addNewParameterType(); > > outputParaType.setType(DataType.FILE); > > outputParaType.setName("FILE"); > > outputParameters.add(outputParameter); > > > > and in the script adding > > > > @echo off > > > > echo wps_output=E:\FYP\Other\outGMLFromAirvata\ > > java -jar E:\FYP\WPSclient3\out\artifacts\WPSclient3_jar\WPSclient3.jar > %1 > > > > gave me no errors but the output file was not created. Console just shows > > > > 22:21:29.878 06/18/13 workflowInvoked wps_input=sd 22:21:29.963 > 06/18/13 > > WPS_invoke invokingService wps_input=sd 22:21:30.2 06/18/13 WPS_invoke > > workflowInvoked [Workflow is invoked] 22:21:32.550 06/18/13 WPS_invoke > > receivedResult wps_output=E:\FYP\Other\outGMLFromAirvata\ 22:21:35.505 > > 06/18/13 sendingResult 22:21:36.353 06/18/13 workflowTerminated > Workflow > > finished successfully. 22:21:36.377 06/18/13 sendingResult > > > > > > Where have I gone wrong? > > > > > > Thank You ! > > > > > > > > > > > > > > On Tue, Jun 18, 2013 at 7:58 PM, Saminda Wijeratne <[email protected] > > >wrote: > > > > > Hi Amila, > > > > > > I think benefit of all we'll explain how the output parameters get > values > > > once the application gets executed. > > > > > > Since there is no generic communication framework to communicate with > any > > > running program the most intuitive way to determine the output of the > > > program is to analyze its output text (i.e. standard output). > > > > > > However in most cases such output text will be of a data > structure/format > > > specific for that program. i.e. Airavata will not know how to process > the > > > output data in order to figure-out what data should be returned back to > > the > > > user. > > > > > > Therefore we have enabled 2 ways to help Airavata figure that out, > > > > > > 1. Get the whole output text as the output returned from the > program. > > > This is done by specifying the type of the output parameter as > > > "STD_OUT". > > > It is the responsibility of whatever the next program (or the user) > > that > > > this output is passed on to as input to determine how to process the > > > information in it. > > > 2. Assume the standard output contains set of > > > "<output_para_name>=<output_value>" values separated by newlines > (just > > > like > > > what we have in a conventional properties file). Here the > > > "output_para_name" is the name user gives for the output parameter > (in > > > your > > > case "wps output"). The "output_value" is essentially just a piece > of > > > text > > > which should represent whatever the program intended it to be. It is > > > users > > > responsibility to know what it represents (FILE/URL/INTEGER etc.) > and > > > specify it correctly when defining the output parameters for the > > > application. > > > > > > The 2nd option above (as you may have imagined) is very impractical > since > > > in almost all programs the standard output would not be of the form of > > set > > > of "<output_para_name>=<output_value>" values. In which case what we > > > suggest is to write a wrapper script for your program and let the > script > > > output the data correctly. The idea behind here is that given the > correct > > > input is passed on to it, the script knows how to run your program and > > > understand the output in order to echo the correct > > > "<output_para_name>=<output_value>" values as standard output. Thus > when > > > you add an application to Airavata you will be specifying the path to > > this > > > script rather than the actual program so that Airavata will execute > that > > > script instead with the given input. > > > > > > So when you specify "FILE" as the type of the output parameter what it > > > means to Airavata is that there will be a line in the standard output > of > > > executing the program which has "wps output=<some_file_path>" which I > > > imagine in your case you didn't have. > > > > > > Please feel free to ask questions if I wasn't clear enough. > > > > > > Regards, > > > > > > Saminda > > > > > > > > > > > > > > > > > > On Tue, Jun 18, 2013 at 7:57 AM, AMILA RANATUNGA <[email protected] > > > >wrote: > > > > > > > Hi, > > > > > > > > How we can write Airavata out put to a file instead in std out. I > tried > > > > something like using API. > > > > > > > > outputParameter.setParameterDescription("wps output"); > > > > ParameterType outputParaType = > > > > outputParameter.addNewParameterType(); > > > > > > > > //if I change the STD_OUT to File > > > > > > > > outputParaType.setType(DataType.FILE); > > > > > > > > > > > > I got the following exception. But I get the output correctly with > the > > > > STD_OUT. After that how to save it to custom location? > > > > > > > > > > > > > > > > > > > > <ns:invokingServiceFailed infoModelVersion="2.6" > > > > xmlns:ns="http://airavata.apache.org/schemas/wft/2011/08"> > > > > <ns:notificationSource > > > > ns:serviceID="Workflow1_e5a72bea_ee03_45ac_b8ce_33ab559115e7" > > > > ns:experimentID="Workflow1_e5a72bea-ee03-45ac-b8ce-33ab559115e7" /> > > > > <ns:timestamp>2013-06-18T17:18:18.230+05:30</ns:timestamp> > > > > <ns:description>Error while invoking provider > > > > org.apache.airavata.gfac.provider.impl.LocalProvider dispose method.: > > > > org.apache.airavata.gfac.GFacException: Error while invoking provider > > > > org.apache.airavata.gfac.provider.impl.LocalProvider dispose > > > > method.</ns:description> > > > > <ns:annotation> > > > > <stackTrace>org.apache.airavata.gfac.GFacException: Error while > > > > invoking provider > org.apache.airavata.gfac.provider.impl.LocalProvider > > > > dispose method. > > > > at org.apache.airavata.gfac.GFacAPI.disposeProvider(GFacAPI.java:102) > > > > at org.apache.airavata.gfac.GFacAPI.schedule(GFacAPI.java:72) > > > > at org.apache.airavata.gfac.GFacAPI.submitJob(GFacAPI.java:53) > > > > at > > > > > > > > > > > > > > org.apache.airavata.xbaya.invoker.EmbeddedGFacInvoker.invoke(EmbeddedGFacInvoker.java:330) > > > > at > > > > > > > > > > > > > > org.apache.airavata.xbaya.interpretor.WorkflowInterpreter.handleWSComponent(WorkflowInterpreter.java:682) > > > > at > > > > > > > > > > > > > > org.apache.airavata.xbaya.interpretor.WorkflowInterpreter.executeDynamically(WorkflowInterpreter.java:501) > > > > at > > > > > > > > > > > > > > org.apache.airavata.xbaya.interpretor.WorkflowInterpreter.scheduleDynamically(WorkflowInterpreter.java:186) > > > > at > > > > > > > > > > > > > > org.apache.airavata.xbaya.interpretor.WorkflowInterpretorSkeleton.executeWorkflow(WorkflowInterpretorSkeleton.java:385) > > > > at > > > > > > > > > > > > > > org.apache.airavata.xbaya.interpretor.WorkflowInterpretorSkeleton.access$400(WorkflowInterpretorSkeleton.java:78) > > > > at > > > > > > > > > > > > > > org.apache.airavata.xbaya.interpretor.WorkflowInterpretorSkeleton$2.run(WorkflowInterpretorSkeleton.java:378) > > > > at java.lang.Thread.run(Thread.java:722) > > > > Caused by: org.apache.airavata.gfac.provider.GFacProviderException: > > Error > > > > in retrieving results > > > > at > > > > > > > > > > > > > > org.apache.airavata.gfac.provider.impl.LocalProvider.dispose(LocalProvider.java:138) > > > > at org.apache.airavata.gfac.GFacAPI.disposeProvider(GFacAPI.java:100) > > > > ... 10 more > > > > Caused by: java.lang.Exception: Data for the output parameter > > > 'wps_output' > > > > was not found > > > > at > > > > > > > > > > org.apache.airavata.gfac.utils.OutputUtils.parseStdout(OutputUtils.java:82) > > > > at > > > > > > > > > > > > > > org.apache.airavata.gfac.utils.OutputUtils.fillOutputFromStdout(OutputUtils.java:59) > > > > at > > > > > > > > > > > > > > org.apache.airavata.gfac.provider.impl.LocalProvider.dispose(LocalProvider.java:132) > > > > ... 11 more > > > > </stackTrace> > > > > </ns:annotation> > > > > <ns:receiver ns:serviceID="WPS_invoke" > > > > ns:workflowID="Workflow1_e5a72bea_ee03_45ac_b8ce_33ab559115e7" > > > > ns:workflowTimestep="0" ns:workflowNodeID="WPS_invoke" /> > > > > <ns:failure> > > > > <ns:trace xsi:type="xs:string" xmlns:xs=" > > > > http://www.w3.org/2001/XMLSchema" > > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > > > xmlns:ns="http://airavata.apache.org/schemas/wft/2011/08 > > > > ">org.apache.airavata.gfac.GFacException: > > > > Error while invoking provider > > > > org.apache.airavata.gfac.provider.impl.LocalProvider dispose method. > > > > at org.apache.airavata.gfac.GFacAPI.disposeProvider(GFacAPI.java:102) > > > > at org.apache.airavata.gfac.GFacAPI.schedule(GFacAPI.java:72) > > > > at org.apache.airavata.gfac.GFacAPI.submitJob(GFacAPI.java:53) > > > > at > > > > > > > > > > > > > > org.apache.airavata.xbaya.invoker.EmbeddedGFacInvoker.invoke(EmbeddedGFacInvoker.java:330) > > > > at > > > > > > > > > > > > > > org.apache.airavata.xbaya.interpretor.WorkflowInterpreter.handleWSComponent(WorkflowInterpreter.java:682) > > > > at > > > > > > > > > > > > > > org.apache.airavata.xbaya.interpretor.WorkflowInterpreter.executeDynamically(WorkflowInterpreter.java:501) > > > > at > > > > > > > > > > > > > > org.apache.airavata.xbaya.interpretor.WorkflowInterpreter.scheduleDynamically(WorkflowInterpreter.java:186) > > > > at > > > > > > > > > > > > > > org.apache.airavata.xbaya.interpretor.WorkflowInterpretorSkeleton.executeWorkflow(WorkflowInterpretorSkeleton.java:385) > > > > at > > > > > > > > > > > > > > org.apache.airavata.xbaya.interpretor.WorkflowInterpretorSkeleton.access$400(WorkflowInterpretorSkeleton.java:78) > > > > at > > > > > > > > > > > > > > org.apache.airavata.xbaya.interpretor.WorkflowInterpretorSkeleton$2.run(WorkflowInterpretorSkeleton.java:378) > > > > at java.lang.Thread.run(Thread.java:722) > > > > Caused by: org.apache.airavata.gfac.provider.GFacProviderException: > > Error > > > > in retrieving results > > > > at > > > > > > > > > > > > > > org.apache.airavata.gfac.provider.impl.LocalProvider.dispose(LocalProvider.java:138) > > > > at org.apache.airavata.gfac.GFacAPI.disposeProvider(GFacAPI.java:100) > > > > ... 10 more > > > > Caused by: java.lang.Exception: Data for the output parameter > > > 'wps_output' > > > > was not found > > > > at > > > > > > > > > > org.apache.airavata.gfac.utils.OutputUtils.parseStdout(OutputUtils.java:82) > > > > at > > > > > > > > > > > > > > org.apache.airavata.gfac.utils.OutputUtils.fillOutputFromStdout(OutputUtils.java:59) > > > > at > > > > > > > > > > > > > > org.apache.airavata.gfac.provider.impl.LocalProvider.dispose(LocalProvider.java:132) > > > > ... 11 more > > > > </ns:trace> > > > > </ns:failure> > > > > </ns:invokingServiceFailed> > > > > > > > > > > > > > > > > Thank You ! > > > > > > > > > >
