in taverna-gis-activity/src/main/java/org/apache/taverna/gis/GisActivity.java [95:170]
public void executeAsynch(final Map<String, T2Reference> inputs, final AsynchronousActivityCallback callback) {
// Execute service asynchronously
callback.requestRun(new Runnable() {
public void run() {
InvocationContext context = callback.getContext();
ReferenceService referenceService = context.getReferenceService();
// Declare outputs variable
Map<String, T2Reference> outputs = null;
try {
// prepare the execute object
WPSClientSession wpsClient = WPSClientSession.getInstance();
ProcessDescriptionType processDescription = wpsClient.getProcessDescription(configBean.getOgcServiceUri().toString(), configBean.getProcessIdentifier());
ExecuteRequestBuilder executeBuilder = new ExecuteRequestBuilder(processDescription);
for (ActivityInputPortDefinitionBean activityInputPort : configBean.getInputPortDefinitions()) {
String portValue = (String) referenceService.renderIdentifier(inputs.get(activityInputPort.getName()), String.class, context);
executeBuilder.addLiteralData(activityInputPort.getName(), portValue);
}
ExecuteDocument execute = executeBuilder.getExecute();
execute.getExecute().setService("WPS");
Object responseObject = null;
try {
// execute service
responseObject = wpsClient.execute(configBean.getOgcServiceUri().toString(), execute);
} catch (WPSClientException e) {
// if the an error return from service
callback.fail(e.getServerException().xmlText());
}
// Register outputs
outputs = new HashMap<String, T2Reference>();
T2Reference simpleRef = null;
if (responseObject instanceof ExecuteResponseDocument) {
ExecuteResponseDocument response = (ExecuteResponseDocument) responseObject;
// analyser is used to get complex data
ExecuteResponseAnalyser analyser = new ExecuteResponseAnalyser(
execute, response, processDescription);
for(OutputDataType output : response.getExecuteResponse().getProcessOutputs().getOutputArray())
{
DataType data = output.getData();
if (data.isSetLiteralData())
{
simpleRef = referenceService.register(data.getLiteralData().getStringValue(), 0, true, context);
outputs.put(output.getIdentifier().getStringValue(), simpleRef);
}
}
}
} catch (WPSClientException e) {
callback.fail(e.getMessage());
} catch (IOException e) {
callback.fail(e.getMessage());
}
callback.receiveResult(outputs, new int[0]);
}
});
}