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.") }); }
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.") }); }