private static async Task <PluginOutput <TResponse> > ExecutePlugin(
            IPluginServices pluginServices,
            PluginData <JsonExternalWorkflowInput <TRequest> > input)
        {
            var serializeTask      = pluginServices.GetOrCreatePlugin <SerializeJsonTask <TRequest> >();
            var serializeTaskInput = pluginServices.CreatePluginData <TRequest>(input.Data.RequestObject);
            var serializeOutput    = await serializeTask.Execute <StringData>(new PluginInputs { { "input", serializeTaskInput } });

            var externalService = pluginServices.GetService("ExternalService") as ExternalService;

            if (externalService == null)
            {
                throw new System.Exception("Failed to resolve service");
            }

            var result = externalService.GetResult(serializeOutput.Data.String);

            if (result == null)
            {
                return(await pluginServices.PluginIncomplete <TResponse>());
            }

            var externalOutput = pluginServices.CreatePluginData(result);

            var deserializeTask   = pluginServices.GetOrCreatePlugin <DeserializeJsonTask <TResponse> >();
            var deserializeInput  = pluginServices.CreatePluginData(externalOutput.Data.OutputData);
            var deserializeOutput = await deserializeTask.Execute <TResponse>(new PluginInputs { { "input", deserializeInput } });

            return(await pluginServices.PluginCompleted(deserializeOutput));
        }
        private static async Task <PluginOutput <COutput> > ExecutePlugin(IPluginServices pluginServices, PluginData <AInput> input)
        {
            var aTask   = pluginServices.GetOrCreatePlugin <ATask>();
            var aOutput = await aTask.Execute <AOutput>(new PluginInputs { { "input", input } });

            var cTask   = pluginServices.GetOrCreatePlugin <CTask>();
            var cOutput = await cTask.Execute <COutput>(new PluginInputs { { "input", null } });

            var bTask   = pluginServices.GetOrCreatePlugin <BTask>();
            var bOutput = await bTask.Execute <BOutput>(new PluginInputs { { "input", aOutput } });

            return(cOutput != null ?
                   await pluginServices.PluginCompleted(cOutput) :
                   await pluginServices.PluginIncomplete <COutput>());
        }
Пример #3
0
        private Task <PluginOutput <StatefulWorkflowState> > ExecutePlugin(IPluginServices pluginServices, PluginData <AInput> input)
        {
            if (_currentValue == null)
            {
                _currentValue = pluginServices.CreatePluginData <StatefulWorkflowState>();
            }

            return(++_currentValue.Data.CurrentValue == 3 ? pluginServices.PluginCompleted(_currentValue) : pluginServices.PluginIncomplete <StatefulWorkflowState>());
        }