示例#1
0
 public void Add(PluginStep step)
 {
     if (step != null)
     {
         _pluginSteps.Add(step);
     }
 }
        private void LoadEvents()
        {
            tvEvents.Nodes.Clear();

            WorkAsync(new WorkAsyncInfo
            {
                Message = "Loading Sdk message filters...",
                Work    = (bw, e) =>
                {
                    _events = new List <ISynchronousEvent>();

                    List <Entity> filters =
                        Service.RetrieveMultiple(new QueryExpression("sdkmessagefilter")
                    {
                        ColumnSet = new ColumnSet("sdkmessageid", "primaryobjecttypecode")
                    }).Entities.ToList();

                    bw.ReportProgress(0, "Loading SDK messages...");

                    List <Entity> messages = Service.RetrieveMultiple(new QueryExpression("sdkmessage")
                    {
                        ColumnSet = new ColumnSet("name")
                    }).Entities.ToList();

                    bw.ReportProgress(25, "Loading Plugin steps...");

                    _events.AddRange(PluginStep.RetrievePluginSteps(Service, filters, messages));

                    bw.ReportProgress(50, "Loading Synchronous workflows...");

                    _events.AddRange(SynchronousWorkflow.RetrieveWorkflowSteps(Service));
                },
                PostWorkCallBack = e =>
                {
                    if (e.Error != null)
                    {
                        MessageBox.Show(ParentForm, "An error occured: " + e.Error, "Error", MessageBoxButtons.OK,
                                        MessageBoxIcon.Error);
                    }
                    else
                    {
                        TreeViewHelper tvh = new TreeViewHelper(tvEvents);

                        foreach (ISynchronousEvent sEvent in _events)
                        {
                            tvh.AddSynchronousEvent(sEvent);
                        }
                    }
                },
                ProgressChanged = e =>
                {
                    // it will display "I have found the user id" in this example
                    SetWorkingMessage(e.UserState.ToString());
                }
            });
        }
示例#3
0
        private void LoadEvents()
        {
            tvEvents.Nodes.Clear();

            WorkAsync(new WorkAsyncInfo
            {
                Message = "Loading Sdk message filters...",
                Work    = (bw, e) =>
                {
                    events = new List <ISynchronousEvent>();

                    var filters =
                        Service.RetrieveMultiple(new QueryExpression("sdkmessagefilter")
                    {
                        ColumnSet = new ColumnSet("sdkmessageid", "primaryobjecttypecode")
                    }).Entities.ToList();

                    bw.ReportProgress(0, "Loading SDK messages...");

                    var messages = Service.RetrieveMultiple(new QueryExpression("sdkmessage")
                    {
                        ColumnSet = new ColumnSet("name")
                    }).Entities.ToList();

                    bw.ReportProgress(0, "Loading Plugin steps...");

                    events.AddRange(PluginStep.RetrievePluginSteps(Service, filters, messages));

                    bw.ReportProgress(0, "Loading Synchronous workflows...");

                    events.AddRange(SynchronousWorkflow.RetrieveTriggeredWorkflows(Service));

                    bw.ReportProgress(0, "Loading Business Rules...");

                    events.AddRange(BusinessRules.RetrieveBusinessRules(Service));
                },
                PostWorkCallBack = e =>
                {
                    if (e.Error != null)
                    {
                        MessageBox.Show(ParentForm, "An error occured: " + e.Error.ToString(), "Error", MessageBoxButtons.OK,
                                        MessageBoxIcon.Error);
                    }
                    else
                    {
                        var tvh = new TreeViewHelper(tvEvents);

                        foreach (var sEvent in events)
                        {
                            tvh.AddSynchronousEvent(sEvent);
                        }
                    }
                },
                ProgressChanged = e => { SetWorkingMessage(e.UserState.ToString()); }
            });
        }
示例#4
0
        public static bool Compare(PluginStep step1, XrmStepContainer step2, string filteringAttributes, string unsecureconfig, string secureconfig)
        {
            if (step2 == null)
            {
                return(false);
            }

            var name1 = step2.Entity;
            var name2 = step1.EntityName;

            if (string.IsNullOrWhiteSpace(name1))
            {
                name1 = string.Empty;
            }
            if (string.IsNullOrWhiteSpace(name2))
            {
                name2 = string.Empty;
            }

            if (name1 == "none")
            {
                name1 = string.Empty;
            }
            if (name2 == "none")
            {
                name2 = string.Empty;
            }

            if (name1 != name2)
            {
                return(false);
            }
            if (step2.Message != step1.MessageName)
            {
                return(false);
            }
            if (step2.Rank != step1.Rank)
            {
                return(false);
            }
            if (step2.Mode != (int)step1.StepMode)
            {
                return(false);
            }
            if (step2.Stage != (int)step1.Stage)
            {
                return(false);
            }

            var unsecureconfig2 = string.IsNullOrWhiteSpace(step2.UnsecureConfig) ? null : step2.UnsecureConfig;
            var unsecureconfig1 = string.IsNullOrWhiteSpace(unsecureconfig) ? null : unsecureconfig;

            if (unsecureconfig2 != unsecureconfig1)
            {
                return(false);
            }

            var secureconfig2 = string.IsNullOrWhiteSpace(step2.SecureConfig) ? null : step2.SecureConfig;
            var secureconfig1 = string.IsNullOrWhiteSpace(secureconfig) ? null : secureconfig;

            if (secureconfig2 != secureconfig1)
            {
                return(false);
            }

            if (filteringAttributes != null && step2.FilteringAttributes == null)
            {
                return(false);
            }
            if (filteringAttributes == null && step2.FilteringAttributes != null)
            {
                return(false);
            }

            if (filteringAttributes != null && step2.FilteringAttributes != null)
            {
                var fa1 = filteringAttributes.Split(',').OrderBy(x => x).ToArray();
                var fa2 = step2.FilteringAttributes.Split(',').OrderBy(x => x).ToArray();

                if (fa1.Length != fa2.Length)
                {
                    return(false);
                }

                for (int i = 0; i < fa1.Length; i++)
                {
                    if (fa1[i] != fa2[i])
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
示例#5
0
 public PluginStepBuilder(PluginStepManager manager)
 {
     _pluginStep  = new PluginStep();
     _stepManager = manager;
 }