示例#1
0
        protected override ExecuteMessage ExecuteImpl(Dev2JsonSerializer serializer, Guid resourceId, Dictionary <string, StringBuilder> values)
        {
            var versionNumber = IsValid(values, out var environmentString, out var startActivityId, out var currentUserPrincipal);
            var executingUser = BuildClaimsPrincipal(currentUserPrincipal, out var unqualifiedUserName);

            var decodedEnv   = HttpUtility.UrlDecode(environmentString.ToString());
            var executionEnv = new ExecutionEnvironment();

            executionEnv.FromJson(decodedEnv);
            Int32.TryParse(versionNumber.ToString(), out int parsedVersionNumber);

            var dataObject = new DsfDataObject("", Guid.NewGuid())
            {
                ResourceID    = resourceId,
                Environment   = executionEnv,
                VersionNumber = parsedVersionNumber,
                ExecutingUser = executingUser,
                IsDebug       = true
            };

            if (!CanExecute(dataObject))
            {
                Dev2Logger.Error($"Authentication Error resuming. User " + unqualifiedUserName + " is not authorized to execute the workflow.", GlobalConstants.WarewolfError);
                return(new ExecuteMessage {
                    HasError = true, Message = new StringBuilder($"Authentication Error resuming. User " + unqualifiedUserName + " is not authorized to execute the workflow.")
                });
            }

            var dynamicService = ResourceCatalogInstance.GetService(GlobalConstants.ServerWorkspaceID, resourceId, "");

            if (dynamicService is null)
            {
                return(new ExecuteMessage {
                    HasError = true, Message = new StringBuilder($"Error resuming. ServiceAction is null for Resource ID:{resourceId}")
                });
            }

            var sa = dynamicService.Actions.FirstOrDefault();

            if (sa is null)
            {
                return(new ExecuteMessage {
                    HasError = true, Message = new StringBuilder($"Error resuming. ServiceAction is null for Resource ID:{resourceId}")
                });
            }

            var container = CustomContainer.Get <IResumableExecutionContainerFactory>().New(startActivityId, sa, dataObject);

            container.Execute(out ErrorResultTO errors, 0);
            if (errors.HasErrors())
            {
                return(new ExecuteMessage {
                    HasError = true, Message = new StringBuilder(errors.MakeDisplayReady())
                });
            }

            return(new ExecuteMessage {
                HasError = false, Message = new StringBuilder("Execution Completed.")
            });
        }
示例#2
0
        protected override ExecuteMessage ExecuteImpl(Dev2JsonSerializer serializer, Guid resourceId, Dictionary <string, StringBuilder> values)
        {
            values.TryGetValue("versionNumber", out StringBuilder versionNumber);
            if (versionNumber == null)
            {
                throw new InvalidDataContractException("no version Number passed");
            }
            values.TryGetValue("environment", out StringBuilder environmentString);
            if (environmentString == null)
            {
                throw new InvalidDataContractException("no environment passed");
            }
            values.TryGetValue("startActivityId", out StringBuilder startActivityIdString);
            if (startActivityIdString == null)
            {
                startActivityIdString = new StringBuilder(resourceId.ToString());
            }
            if (!Guid.TryParse(startActivityIdString.ToString(), out Guid startActivityId))
            {
                throw new InvalidDataContractException("startActivityId is not a valid GUID.");
            }
            var decodedEnv   = HttpUtility.UrlDecode(environmentString.ToString());
            var executionEnv = new ExecutionEnvironment();

            executionEnv.FromJson(decodedEnv);

            Int32.TryParse(versionNumber.ToString(), out int parsedVersionNumber);
            var dataObject = new DsfDataObject("", Guid.NewGuid())
            {
                ResourceID    = resourceId,
                Environment   = executionEnv,
                VersionNumber = parsedVersionNumber,
                ExecutingUser = Thread.CurrentPrincipal,
                IsDebug       = true
            };
            var dynamicService = ResourceCatalog.Instance.GetService(GlobalConstants.ServerWorkspaceID, resourceId, "");
            var sa             = dynamicService.Actions.FirstOrDefault();

            if (sa is null)
            {
                return(new ExecuteMessage {
                    HasError = true, Message = new StringBuilder($"Error resuming. ServiceAction is null for Resource ID:{resourceId}")
                });
            }
            var container = CustomContainer.Get <IResumableExecutionContainerFactory>().New(startActivityId, sa, dataObject);

            container.Execute(out ErrorResultTO errors, 0);
            if (errors.HasErrors())
            {
                return(new ExecuteMessage {
                    HasError = true, Message = new StringBuilder(errors.MakeDisplayReady())
                });
            }
            return(new ExecuteMessage {
                HasError = false, Message = new StringBuilder("Execution Completed.")
            });
        }