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]);
			}
		});
	}