Esempio n. 1
0
        // 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;
        }
Esempio n. 2
0
 //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;
 }
Esempio n. 3
0
        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;
        }
Esempio n. 4
0
        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;
        }
Esempio n. 5
0
        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;
        }
Esempio n. 6
0
        // 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;
        }
Esempio n. 7
0
        // 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;
        }
Esempio n. 8
0
        // 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;
        }