public ProSuiteQAResponse StartQASync(ProSuiteQARequest parameters) { var args = PrepareGPToolParameters(parameters, ProSuiteQAToolType.Xml); if (args == null) { return(new ProSuiteQAResponse() { Error = ProSuiteQAError.ServiceFailed }); } Geoprocessing.OpenToolDialog(_toolpath, args, null, false, (event_name, o) => { if (event_name == "OnEndExecute") { var result = o as IGPResult; OnStatusChanged?.Invoke(this, new ProSuiteQAServiceEventArgs(ProSuiteQAServiceState.Finished, result?.Values?.First())); } else // TODO other events than "OnStartExecute" ? { } }); return(null); }
public async Task <ProSuiteQAResponse> StartQATestingAsync(ProSuiteQARequest request) { var service = GetQAService(request.ServiceType); if (service == null) // throw? { return new ProSuiteQAResponse() { Error = ProSuiteQAError.ServiceUnavailable } } ; // service is responsible for correct format (passtrough) return(await service.StartQAAsync(request)); }
// every service provider is responsible for converting of input/output data (common data format converters?) #region Data converters private IReadOnlyList <string> PrepareGPToolParameters(ProSuiteQARequest parameters, ProSuiteQAToolType toolType) { try { var toolParams = parameters.RequestData?.ToString(); if (toolParams == null) { return(null); } var localParams = toolParams.Split(','); return(Geoprocessing.MakeValueArray(localParams)); } catch (Exception ex) { _msg.Error(ex.Message); } return(null); }
public async Task <ProSuiteQAResponse> StartQAAsync(ProSuiteQARequest parameters) { var cts = new CancellationTokenSource(); var args = PrepareGPToolParameters(parameters, ProSuiteQAToolType.Xml); if (args == null) { return(new ProSuiteQAResponse() { Error = ProSuiteQAError.ServiceFailed }); } // background thread GPExecuteToolFlags flags = GPExecuteToolFlags.GPThread; // silent call of GP Server Toolbox var result = await Geoprocessing.ExecuteToolAsync(_toolpath, args, null, cts.Token, GPEventHandler, flags); return(FormatProSuiteResponse(result)); }
public ProSuiteQAResponse StartQATesting(ProSuiteQARequest request) { var service = GetQAService(request.ServiceType); return(service?.StartQASync(request)); }