// PBI : 5376 - Broke this signature to avoid use ;) public dynamic Workflow(ServiceAction workflowAction, dynamic xmlRequest, int i) { dynamic returnVal = new UnlimitedObject(); IDictionary<string, object> inputs = new Dictionary<string, object>(); inputs.Add("AmbientDataList", new List<string> { xmlRequest.XmlString }); // ReSharper disable RedundantAssignment IDictionary<string, object> output = new Dictionary<string, object>(); // ReSharper restore RedundantAssignment var workflowInvoker = new WorkflowInvoker(workflowAction.WorkflowActivity); workflowInvoker.Extensions.Add(_dsfChannel); try { output = workflowInvoker.Invoke(inputs); foreach(var data in output) { if(data.Value != null) { if(data.Value is List<string>) { foreach(string result in (data.Value as List<string>)) { returnVal.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject(string.Format("<{0}>{1}</{0}>", Resources .DynamicService_ServiceResponseTag, result))); } } } else { returnVal = xmlRequest; } } } catch(WorkflowApplicationAbortedException workflowAbortedEx) { returnVal.Error = "Workflow Execution Was Aborted"; returnVal.ErrorDetail = new UnlimitedObject(workflowAbortedEx).XmlString; } catch(Exception workflowEx) { returnVal.Error = "Error occurred executing workflow"; returnVal.ErrorDetail = new UnlimitedObject(workflowEx).XmlString; } //ExceptionHandling.WriteEventLogEntry( // "Application", // string.Format("{0}.{1}", this.GetType().Name, "WorkflowCommand"), // string.Format("Exception:{0}\r\n", returnVal.XmlString), // EventLogEntryType.Error //); //if (returnVal.DSFResult is string) { // return UnlimitedObject.GetStringXmlDataAsUnlimitedObject(returnVal.DSFResult); //} //else { // if (returnVal.DSFResult is UnlimitedObject) { // if (!string.IsNullOrEmpty(returnVal.DSFResult.XmlString)) { // return returnVal.DSFResult; // } // } //} return returnVal; }
//This returns a list of supported database servers in the system public string FindSupportedDatabaseServers() { dynamic returnData = new UnlimitedObject(); dynamic serviceData = new UnlimitedObject("Dev2Resources"); dynamic serviceInfo = new UnlimitedObject("Dev2Resource"); serviceInfo.Dev2DatabaseServer = enSourceType.MySqlDatabase; serviceData.AddResponse(serviceInfo); serviceInfo = new UnlimitedObject("Dev2Resource"); serviceInfo.Dev2DatabaseServer = enSourceType.SqlDatabase; serviceData.AddResponse(serviceInfo); string returnVal = GetResourceNameAsXml(returnData.XmlString, serviceData); return returnVal; }
public string CompileResource(string resourceDefinition) { dynamic returnData = new UnlimitedObject(); List<DynamicServiceObjectBase> compiledResources = Host.GenerateObjectGraphFromString(resourceDefinition); if(compiledResources.Count == 0) { return string.Format("<{0}>{1}</{0}>", "Result", Resources.CompilerMessage_BuildFailed); } compiledResources.ForEach(c => { if(c.ObjectType == enDynamicServiceObjectType.DynamicService) { var dynamicService = c as DynamicService; if (dynamicService != null) dynamicService.Actions.ForEach(action => Host.MapServiceActionDependencies(action)); } if(c.ObjectType == enDynamicServiceObjectType.WorkflowActivity) { Host.MapActivityToService((c as WorkflowActivityDef)); } c.Compile(); returnData.AddResponse(c.GetCompilerErrors()); }); return returnData.XmlString; }
public string FindResources(string resourceName, string type, string roles) { dynamic returnData = new UnlimitedObject(); if(resourceName == "*") resourceName = string.Empty; switch(type) { case "WorkflowService": { IEnumerable<DynamicService> services; Host.LockServices(); try { services = Host.Services.Where(c => c.Name.Contains(resourceName)); } finally { Host.UnlockServices(); } IEnumerable<DynamicService> workflowServices = services.Where(c => c.Actions.Where(d => d.ActionType == enActionType.Workflow).Count() > 0); //.Where( //c => //c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins") || //roles == "*"); workflowServices.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject( c.ResourceDefinition ?? "<NoDef/>"))); break; } case "Service": { IEnumerable<DynamicService> svc; Host.LockServices(); try { svc = Host.Services.Where(c => c.Name.Contains(resourceName)); } finally { Host.UnlockServices(); } IEnumerable<DynamicService> svcs = svc.Where(c => c.Actions.Where(d => d.ActionType != enActionType.Workflow).Count() > 0); //.Where( //c => //c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins") || //roles == "*"); svcs.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); break; } case "Source": { IEnumerable<Source> sources; Host.LockSources(); try { sources = Host.Sources.Where(c => c.Name.Contains(resourceName)); //.Where( //c => //c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins") || //roles == "*"); } finally { Host.UnlockSources(); } sources.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); break; } case "Activity": { IEnumerable<WorkflowActivityDef> activitydefs; Host.LockActivities(); try { activitydefs = Host.WorkflowActivityDefs.Where(c => c.Name.Contains(resourceName)); //.Where( //c => //c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins") || //roles == "*"); } finally { Host.UnlockActivities(); } activitydefs.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); break; } case "*": { IEnumerable<Source> resources; Host.LockSources(); try { resources = Host.Sources.Where(c => c.Name.Contains(resourceName)); //.Where( //c => //c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins") || //roles == "*"); } finally { Host.UnlockSources(); } resources.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); IEnumerable<DynamicService> wfservices; Host.LockServices(); try { wfservices = Host.Services.Where(c => c.Name.Contains(resourceName)); } finally { Host.UnlockServices(); } IEnumerable<DynamicService> workflows = wfservices.Where( c => c.Actions.Where(d => d.ActionType == enActionType.Workflow).Count() > 0); //.Where( //c => //c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins") || //roles == "*"); workflows.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); IEnumerable<DynamicService> svc2; Host.LockServices(); try { svc2 = Host.Services.Where(c => c.Name.Contains(resourceName)); } finally { Host.UnlockServices(); } IEnumerable<DynamicService> svcs2 = svc2.Where(c => c.Actions.Where(d => d.ActionType != enActionType.Workflow).Count() > 0); //.Where( //c => //c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins") || //roles == "*"); svcs2.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); /* * Travis : 02-07-2012 * why the flip have a specific condition above only to blindly add all services bar the role and other meta data??????!!!!!!! * */ //var intsvc = Host.Services.Where(c => c.Name.Contains(resourceName)); //intsvc.ToList().ForEach(c => returnData.AddResponse(UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); IEnumerable<WorkflowActivityDef> activityinfo; Host.LockActivities(); try { activityinfo = Host.WorkflowActivityDefs.Where(c => c.Name.Contains(resourceName)); //.Where( //c => //c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins") || //roles == "*"); } finally { Host.UnlockActivities(); } activityinfo.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); break; } } dynamic serviceData = new UnlimitedObject("Dev2Resources"); string returnVal; //[email protected] //18/06/2010 //we need to be able to return the worker service name and the category it belongs to if(type.Equals("Service")) { returnVal = GetWorkerServiceResourceAsXml(returnData.XmlString, serviceData); } else if(type.Equals("Source")) { returnVal = GetSourceResourceAsXml(returnData.XmlString, serviceData); } else { returnVal = GetAllDefsAsXML(returnData.XmlString, serviceData); //returnVal = GetSourceResourceAsXml(returnData.XmlString, serviceData); } return returnVal; }
public string FindResource(string resourceName, string type, string roles) { dynamic returnData = new UnlimitedObject(); if(resourceName == "*") resourceName = string.Empty; switch(type) { case "WorkflowService": { IEnumerable<DynamicService> services; Host.LockServices(); try { services = Host.Services.Where(c => c.Name.Contains(resourceName)); } finally { Host.UnlockServices(); } IEnumerable<DynamicService> workflowServices = services.Where(c => c.Actions.Where(d => d.ActionType == enActionType.Workflow).Count() > 0); //.Where(c => c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins")); workflowServices.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject( c.ResourceDefinition ?? "<NoDef/>"))); break; } case "Service": { IEnumerable<DynamicService> svc; Host.LockServices(); try { svc = Host.Services.Where(c => c.Name.Contains(resourceName)); } finally { Host.UnlockServices(); } IEnumerable<DynamicService> svcs = svc.Where(c => c.Actions.Where(d => d.ActionType != enActionType.Workflow).Count() > 0); //.Where(c => c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins")); svcs.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); break; } case "Source": { IEnumerable<Source> sources; Host.LockSources(); try { sources = Host.Sources.Where(c => c.Name.Contains(resourceName)); //.Where(c => c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins")); } finally { Host.UnlockSources(); } sources.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); break; } case "Activity": { IEnumerable<WorkflowActivityDef> activitydefs; Host.LockActivities(); try { activitydefs = Host.WorkflowActivityDefs.Where(c => c.Name.Contains(resourceName)); //.Where(c => c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins")); } finally { Host.UnlockActivities(); } activitydefs.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); break; } case "ReservedService": { IEnumerable<DynamicService> reserved; Host.LockReservedServices(); try { reserved = Host.ReservedServices.Where(c => c.Name.Contains(resourceName)); } finally { Host.UnlockReservedServices(); } reserved.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject("<ReservedName>" + c.Name + "</ReservedName>"))); break; } } return returnData.XmlString; }
// Travis.Frisinger : 09.08.2012 - List service data in a manor we can bind from it ;) public string FindResourceForBinding(string resourceName, string type, string roles) { dynamic returnData = new UnlimitedObject(); if(resourceName == "*") { resourceName = string.Empty; } switch(type) { case "WorkflowService": { IEnumerable<DynamicService> services; Host.LockServices(); try { services = Host.Services.Where(c => c.Name.Contains(resourceName)); } finally { Host.UnlockServices(); } IEnumerable<DynamicService> workflowServices = services.Where(c => c.Actions.Where(d => d.ActionType == enActionType.Workflow).Count() > 0); //.Where(c => c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins")); workflowServices.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject( c.ResourceDefinition ?? "<NoDef/>"))); break; } case "Service": { IEnumerable<DynamicService> svc; Host.LockServices(); try { svc = Host.Services.Where(c => c.Name.Contains(resourceName)); } finally { Host.UnlockServices(); } IEnumerable<DynamicService> svcs = // ReSharper disable UseMethodAny.0 // ReSharper disable ReplaceWithSingleCallToCount svc.Where(c => c.Actions.Where(d => d.ActionType != enActionType.Workflow).Count() > 0); // ReSharper restore ReplaceWithSingleCallToCount // ReSharper restore UseMethodAny.0 //.Where(c => c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins")); svcs.ToList() .ForEach( c => returnData.AddResponse( UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); break; } //case "Source": // var sources = Host.Sources.Where(c => c.Name.Contains(resourceName)).Where(c => c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins")); // sources.ToList().ForEach(c => returnData.AddResponse(UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); //break; //case "Activity": // var activitydefs = Host.WorkflowActivityDefs.Where(c => c.Name.Contains(resourceName)).Where(c => c.IsUserInRole(roles, c.AuthorRoles) || roles.Contains("Domain Admins")); // activitydefs.ToList().ForEach(c => returnData.AddResponse(UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); //break; } // now extract the attributed junk for the server to properly use var attributes = new[] { "Name" }; var childTags = new[] { "Category" }; string returnValue = DataListUtil.ExtractAttributeFromTagAndMakeRecordset(returnData.XmlString, "Service", attributes, childTags); returnValue = returnValue.Replace("<Service>", "<Dev2Service>").Replace("</Service>", "</Dev2Service>"); return returnValue; }
// PBI 6597: TWR - only implemented for sources public string FindResourcesByID(string guidCsv, string type) { if(guidCsv == null) { throw new ArgumentNullException("guidCsv"); } if(type == null) { throw new ArgumentNullException("type"); } var guids = new List<Guid>(); foreach(var guidStr in guidCsv.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { Guid guid; if(Guid.TryParse(guidStr, out guid)) { guids.Add(guid); } } var resources = new List<DynamicServiceObjectBase>(); if(guids.Count > 0) { switch(type) { default: // Sources Host.LockSources(); try { resources.AddRange(Host.Sources.Where(c => guids.Contains(c.ID))); } finally { Host.UnlockSources(); } break; } } dynamic returnData = new UnlimitedObject(); resources.ForEach(c => returnData.AddResponse(UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); return returnData.XmlString; }
// PBI 6597: TWR public string FindSourcesByType(string type) { if(string.IsNullOrEmpty(type)) { throw new ArgumentNullException("type"); } enSourceType sourceType; if(!Enum.TryParse(type, true, out sourceType)) { sourceType = enSourceType.Unknown; } Host.LockSources(); var resources = new List<DynamicServiceObjectBase>(); try { resources.AddRange(Host.Sources.Where(c => c.Type == sourceType)); } finally { Host.UnlockSources(); } dynamic returnData = new UnlimitedObject(); resources.ForEach(c => returnData.AddResponse(UnlimitedObject.GetStringXmlDataAsUnlimitedObject(c.ResourceDefinition ?? "<NoDef/>"))); return returnData.XmlString; }