Example #1
0
        public void EditCommon(object sender, EventArgs e)
        {
            RuleSet ruleSet = null;

            XmlTextReader            rulesReader = new XmlTextReader("Common.rules");
            WorkflowMarkupSerializer serializer  = new WorkflowMarkupSerializer();

            ruleSet = (RuleSet)serializer.Deserialize(rulesReader);

            rulesReader.Close();

            RuleSetDialog ruleSetDialog = new RuleSetDialog(typeof(keyHandlerState), null, ruleSet);
            DialogResult  result        = ruleSetDialog.ShowDialog();

            ruleSet = ruleSetDialog.RuleSet;

            if (result == DialogResult.OK)
            {
                // Serialize to a .rules file
                serializer = new WorkflowMarkupSerializer();

                XmlWriter rulesWriter = XmlWriter.Create("Common.rules");
                serializer.Serialize(rulesWriter, ruleSet);
                rulesWriter.Close();
            }
        }
Example #2
0
            public void Get()
            {
                AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => Assembly.Load(args.Name);
                var ruleSet      = RuleSetGateway.GetRuleSet(FileName);
                var activityType = GetActivityType(TypeInfo);

                Dialog       = new RuleSetDialog(activityType, null, ruleSet);
                Dialog.Save += DialogOnSave;
            }
        protected override void DoDefaultAction()
        {
            base.DoDefaultAction();
            WorkflowDesignerLoader service = this.GetService(typeof(WorkflowDesignerLoader)) as WorkflowDesignerLoader;

            if ((service != null) && service.InDebugMode)
            {
                throw new InvalidOperationException(Messages.DebugModeEditsDisallowed);
            }
            PolicyActivity activity = (PolicyActivity)base.Activity;

            if (!System.Workflow.Activities.Common.Helpers.IsActivityLocked(activity))
            {
                RuleDefinitions definitions = ConditionHelper.Load_Rules_DT(this, System.Workflow.Activities.Common.Helpers.GetRootActivity(activity));
                if (definitions != null)
                {
                    RuleSetCollection ruleSets         = definitions.RuleSets;
                    RuleSetReference  ruleSetReference = activity.RuleSetReference;
                    RuleSet           ruleSet          = null;
                    string            key = null;
                    if ((ruleSetReference != null) && !string.IsNullOrEmpty(ruleSetReference.RuleSetName))
                    {
                        key = ruleSetReference.RuleSetName;
                        if (ruleSets.Contains(key))
                        {
                            ruleSet = ruleSets[key];
                        }
                    }
                    else
                    {
                        key = ruleSets.GenerateRuleSetName();
                    }
                    using (RuleSetDialog dialog = new RuleSetDialog(activity, ruleSet))
                    {
                        if (DialogResult.OK == dialog.ShowDialog())
                        {
                            if (ruleSet != null)
                            {
                                ruleSets.Remove(key);
                            }
                            else
                            {
                                dialog.RuleSet.Name       = key;
                                activity.RuleSetReference = new RuleSetReference(key);
                            }
                            ruleSets.Add(dialog.RuleSet);
                            ConditionHelper.Flush_Rules_DT(this, System.Workflow.Activities.Common.Helpers.GetRootActivity(activity));
                        }
                    }
                }
                TypeDescriptor.GetProperties(activity)["RuleSetReference"].SetValue(activity, activity.RuleSetReference);
            }
        }
Example #4
0
        private void DisplayRules()
        {
            RuleSetDialog ruleSetDialog = new RuleSetDialog(this.activityClassType, ruleSet, Settings.Default.assemblyLoadPaths.Split(new char[] { ';' }))
            {
                StartPosition = FormStartPosition.CenterParent
            };

            ruleSetDialog.ShowDialog();
            if (ruleSetDialog.DialogResult == DialogResult.OK)
            {
                try
                {
                    this.Refresh();
                    this.ruleSet = ruleSetDialog.RuleSet;
                    ValidateRules();
                    ListRules();
                    if (CanSave)
                    {
                        SaveRules();
                    }

                    ValidateSave();
                    ValidateNew();
                }
                catch (ArgumentException ex)
                {
                    throw new ToolkitException(ex.Message, ex);
                }
                catch (UnauthorizedAccessException ex)
                {
                    throw new ToolkitException(ex.Message, ex);
                }
                catch (IOException ex)
                {
                    throw new ToolkitException(ex.Message, ex);
                }
                catch (System.Security.SecurityException ex)
                {
                    throw new ToolkitException(ex.Message, ex);
                }
                catch (ObjectDisposedException ex)
                {
                    throw new ToolkitException(ex.Message, ex);
                }
                catch (NotSupportedException ex)
                {
                    throw new ToolkitException(ex.Message, ex);
                }
            }
        }
Example #5
0
        /// <summary>
        /// Opens RuleSet Editor
        /// </summary>
        /// <param name="type">Assembly Type to Edit</param>
        /// <param name="ruleSet">Existing RuleSet</param>
        /// <returns>Xml Format of Changed RuleSet object</returns>
        public static string EditExpression(Type type, RuleSet ruleSet)
        {
            RuleSetDialog ruleSetDialog = new RuleSetDialog(type, null, ruleSet);
            DialogResult  result        = ruleSetDialog.ShowDialog();

            if (result == DialogResult.OK)
            {
                DefaultRuleSet.ActivityRuleSet = ruleSetDialog.RuleSet;
                DefaultRuleSet.Name            = string.Format("RuleSet{0}", ruleSets.IndexOf(_defaultRuleSet));
                return(SerializeRuleSet(ruleSetDialog.RuleSet));
            }
            else
            {
                return(DefaultRuleSet.RuleSetDefinition);
            }
        }
Example #6
0
        static void SetupPatientRules()
        {
            patientRuleSet = GetRules(patientRuleFilePath);

            // Create a RuleSet that works with Orders (just another .net Object)
            RuleSetDialog ruleSetDialog = new RuleSetDialog(typeof(Patient), null, patientRuleSet);

            // Show the RuleSet Editor
            ruleSetDialog.ShowDialog();

            // Get the RuleSet after editing
            patientRuleSet = ruleSetDialog.RuleSet;

            Console.WriteLine("Rule created :{0}", patientRuleSet.Rules.LastOrDefault().Condition);

            SaveRules(patientRuleSet, patientRuleFilePath);
        }
Example #7
0
        private void LstRulesSelectedIndexChanged(object sender, EventArgs e)
        {
            if (lstRules.SelectedIndex != -1)
            {
                var item = (BindItem)lstRules.SelectedItem;

                if (item == null)
                {
                    return;
                }

                var model = (RulesDomModel)item.Value;
                var set   = (RuleSet)model.ParentRuleSet;

                using (var dialog = new RuleSetDialog(typeof(Activity), null, set))
                {
                    dialog.ShowDialog();
                }
            }
        }
Example #8
0
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            // verifiy that TargetObject property has been configured
            object input = ModelItem.Properties["Input"].ComputedValue;

            if (input == null)
            {
                System.Windows.MessageBox.Show("Input argument needs to be configured before adding the rules");
                return;
            }

            // verify that target object is correctly configured
            InArgument arg = input as InArgument;

            if (arg == null)
            {
                System.Windows.MessageBox.Show("Invalid value for Input argument");
                return;
            }

            // open the ruleset editor
            Type    inputType = arg.ArgumentType;
            RuleSet ruleSet   = ModelItem.Properties["RuleSet"].ComputedValue as RuleSet;

            if (ruleSet == null)
            {
                ruleSet = new RuleSet();
            }

            // popup the dialog for editing the rules
            RuleSetDialog ruleSetDialog = new RuleSetDialog(inputType, null, ruleSet);
            DialogResult  result        = ruleSetDialog.ShowDialog();

            // update the model item
            if (result == DialogResult.OK) //check if they cancelled
            {
                ModelItem.Properties["RuleSet"].SetValue(ruleSetDialog.RuleSet);
            }
        }
Example #9
0
        public void ManageProfile(object sender, EventArgs e)
        {
            var role = _game.GetProfileName(_process, _items.CurrentId());

            RuleSet ruleSet = null;

            if (File.Exists(role + ".rules"))
            {
                XmlTextReader            rulesReader = new XmlTextReader(role + ".rules");
                WorkflowMarkupSerializer serializer  = new WorkflowMarkupSerializer();
                ruleSet = (RuleSet)serializer.Deserialize(rulesReader);
                rulesReader.Close();
            }
            else
            {
                XmlTextReader            rulesReader = new XmlTextReader("Common.rules");
                WorkflowMarkupSerializer serializer  = new WorkflowMarkupSerializer();
                ruleSet = (RuleSet)serializer.Deserialize(rulesReader);

                rulesReader.Close();
            }

            RuleSetDialog ruleSetDialog = new RuleSetDialog(typeof(keyHandlerState), null, ruleSet);
            DialogResult  result        = ruleSetDialog.ShowDialog();

            ruleSet = ruleSetDialog.RuleSet;

            if (result == DialogResult.OK)
            {
                // Serialize to a .rules file
                WorkflowMarkupSerializer serializer = new WorkflowMarkupSerializer();

                XmlWriter rulesWriter = XmlWriter.Create(role + ".rules");
                serializer.Serialize(rulesWriter, ruleSet);
                rulesWriter.Close();
            }
        }
Example #10
0
        public void ViewProfile(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter           = "rules (*.rules)|*.rules";
            ofd.FilterIndex      = 2;
            ofd.RestoreDirectory = true;

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                RuleSet ruleSet = null;
                if (File.Exists(ofd.FileName))
                {
                    XmlTextReader            rulesReader = new XmlTextReader(ofd.FileName);
                    WorkflowMarkupSerializer serializer  = new WorkflowMarkupSerializer();
                    ruleSet = (RuleSet)serializer.Deserialize(rulesReader);
                    rulesReader.Close();

                    RuleSetDialog ruleSetDialog = new RuleSetDialog(typeof(keyHandlerState), null, ruleSet);
                    ruleSetDialog.Height = 560;
                    ruleSetDialog.Show();
                }
            }
        }
        private void editRuleBtn_Click(object sender, EventArgs e)
        {
            Module temp = new Module();

            temp.Application = FrontendApplication;
            temp.Name        = "temp";

            UXAction action = uxActionService.GetUXActionByIdWithMap(UXAction.Id);

            Type context = RuleContextFactory.CreateActionContext(action, temp);

            using (RuleSetDialog ruleSetDialog = new RuleSetDialog(context, null, UXAction.RuleSet))
            {
                ruleSetDialog.Text += string.Format(" [{0}]", UXAction.Name);

                if (ruleSetDialog.ShowDialog() == DialogResult.OK)
                {
                    if (this.IsEditable)
                    {
                        if (ruleSetDialog.RuleSet.Rules.Count == 0)
                        {
                            UXAction.RuleSet = null;
                        }
                        else
                        {
                            UXAction.RuleSet = ruleSetDialog.RuleSet;
                        }
                    }
                    else
                    {
                        System.Windows.Forms.MessageBox.Show("Your changes will not be saved since the action is not locked for editing. Check out the action and try again");
                        return;
                    }
                }
            }
        }
Example #12
0
        private void viewRuleSetButton_Click(object sender, RoutedEventArgs e)
        {
            // get the rulesFilePath property
            object rulesFilePath = ModelItem.Properties["RulesFilePath"].Value;

            rulesFilePath = ((ModelItem)rulesFilePath).GetCurrentValue();

            // correct the rules file path (in case is a relative path)
            string correctedRulesFilePath = GetRulesFilePath((string)rulesFilePath);

            // verify that RulesFilePath property has been configured
            if (rulesFilePath == null || !(rulesFilePath is string))
            {
                System.Windows.MessageBox.Show("Rules File Path needs to be configured before viewing or editing the rules");
                return;
            }
            else if (!File.Exists(correctedRulesFilePath))
            {
                System.Windows.MessageBox.Show(string.Format("Rules File Path provided not found ({0})", correctedRulesFilePath));
                return;
            }

            // verify that RuleSetName property has been configured
            object ruleSetName = ModelItem.Properties["RuleSetName"].Value;

            ruleSetName = ((ModelItem)ruleSetName).GetCurrentValue();
            if (ruleSetName == null)
            {
                System.Windows.MessageBox.Show("RuleSet Name needs to be configured before viewing or editing the rules");
                return;
            }

            // verify that TargetObject property has been configured
            object targetObject = ModelItem.Properties["TargetObject"].Value;

            targetObject = ((ModelItem)targetObject).GetCurrentValue();
            if (targetObject == null)
            {
                System.Windows.MessageBox.Show("TargetObject needs to be configured before viewing or editing the rules");
                return;
            }

            // verify that target object is correctly configured
            InArgument targetObjArg = targetObject as InArgument;

            if (targetObjArg == null)
            {
                System.Windows.MessageBox.Show("Invalid target object");
                return;
            }

            // open the ruleset editor
            Type targetObjectType             = targetObjArg.ArgumentType;
            WorkflowMarkupSerializer ser      = new WorkflowMarkupSerializer();
            RuleDefinitions          ruleDefs = ser.Deserialize(new System.Xml.XmlTextReader((string)correctedRulesFilePath)) as RuleDefinitions;
            RuleSet ruleSet = ruleDefs.RuleSets[(string)ruleSetName];

            // popup the dialog for viewing the rules
            RuleSetDialog ruleSetDialog = new RuleSetDialog(targetObjectType, null, ruleSet);
            DialogResult  result        = ruleSetDialog.ShowDialog();

            // update if they changed the Rules
            if (result == DialogResult.OK) //If OK was pressed
            {
                for (int index = 0; index < ruleDefs.RuleSets.Count; index++)
                {
                    if (ruleDefs.RuleSets[index].Name == (string)ruleSetName)
                    {
                        ruleDefs.RuleSets[index] = ruleSetDialog.RuleSet;
                        break;
                    }
                }
                try
                {
                    ser.Serialize(new System.Xml.XmlTextWriter(correctedRulesFilePath, null), ruleDefs);
                }
                catch (UnauthorizedAccessException)
                {
                    // File does not have write access. Make a local copy so user changes are not lost
                    FileInfo fileInfo = new FileInfo(correctedRulesFilePath);
                    // create local file by adding a random suffix to original filename
                    string localFileCopy = fileInfo.Name.Substring(0, fileInfo.Name.IndexOf('.')) + new Random().Next() + fileInfo.Extension;
                    ser.Serialize(new System.Xml.XmlTextWriter((string)localFileCopy, null), ruleDefs);
                    System.Windows.MessageBox.Show("Rules file is not writeable. Created copy of your changes in " + localFileCopy);
                }
            }
        }
Example #13
0
        protected override void DoDefaultAction()
        {
            base.DoDefaultAction();

            // Do not allow editing if in debug mode.
            WorkflowDesignerLoader workflowDesignerLoader = this.GetService(typeof(WorkflowDesignerLoader)) as WorkflowDesignerLoader;

            if (workflowDesignerLoader != null && workflowDesignerLoader.InDebugMode)
            {
                throw new InvalidOperationException(Messages.DebugModeEditsDisallowed);
            }

            // Do not allow editing if locked
            PolicyActivity activity = (PolicyActivity)this.Activity;

            if (Helpers.IsActivityLocked(activity))
            {
                return;
            }

            RuleDefinitions rules = ConditionHelper.Load_Rules_DT(this, Helpers.GetRootActivity(activity));

            if (rules != null)
            {
                RuleSetCollection ruleSetCollection = rules.RuleSets;
                RuleSetReference  ruleSetReference  = activity.RuleSetReference;
                RuleSet           ruleSet           = null;
                string            ruleSetName       = null;
                if (ruleSetReference != null &&
                    !string.IsNullOrEmpty(ruleSetReference.RuleSetName))
                {
                    ruleSetName = ruleSetReference.RuleSetName;
                    if (ruleSetCollection.Contains(ruleSetName))
                    {
                        ruleSet = ruleSetCollection[ruleSetName];
                    }
                }
                else
                {
                    ruleSetName = ruleSetCollection.GenerateRuleSetName();
                }
                using (RuleSetDialog dlg = new RuleSetDialog(activity, ruleSet))
                {
                    if (DialogResult.OK == dlg.ShowDialog())
                    {
                        if (ruleSet != null) // modifying
                        {
                            ruleSetCollection.Remove(ruleSetName);
                        }
                        else // creating
                        {
                            dlg.RuleSet.Name          = ruleSetName;
                            activity.RuleSetReference = new RuleSetReference(ruleSetName);
                        }
                        ruleSetCollection.Add(dlg.RuleSet);
                        ConditionHelper.Flush_Rules_DT(this, Helpers.GetRootActivity(activity));
                    }
                }
            }

            // force revalidation by setting a property
            TypeDescriptor.GetProperties(activity)["RuleSetReference"].SetValue(activity, activity.RuleSetReference);
        }
Example #14
0
        private void btnRuleSet_Click(object sender, EventArgs e)
        {
            RuleSet rs = null;

            if (cmboExistingRulesets.SelectedItem.ToString() == "<New>")
            {
                if (
                    (txtRuleSetName.Text == null) ||
                    (txtRuleSetName.Text == string.Empty)
                    )
                {
                    MessageBox.Show("Please specify a name for the RuleSet");
                }
                else
                {
                    rs = new RuleSet(txtRuleSetName.Text);
                }
            }
            else
            {
                string sFullURL = sSiteURL + "Rules/" + cmboExistingRulesets.SelectedItem + ".ruleset";
                WorkflowMarkupSerializer     serializer = new WorkflowMarkupSerializer();
                XmlUrlResolver               resolver   = new XmlUrlResolver();
                System.Net.NetworkCredential myCredentials;
                myCredentials        = new System.Net.NetworkCredential("Administrator", "password", "MossRTM");
                resolver.Credentials = myCredentials;
                XmlReaderSettings settings = new XmlReaderSettings();
                settings.XmlResolver = resolver;
                XmlReader reader = XmlReader.Create(sFullURL, settings);
                rs = (RuleSet)serializer.Deserialize(reader);
                reader.Close();
            }
            if (rs != null)
            {
                RuleSetDialog            ruleSetDialog = new RuleSetDialog(WFDataCollection[lbWorkflows.SelectedIndex].AssemblyType, null, rs);
                DialogResult             result        = ruleSetDialog.ShowDialog();
                WorkflowMarkupSerializer serializer    = new WorkflowMarkupSerializer();
                if (result == DialogResult.OK)
                {
                    rs = ruleSetDialog.RuleSet;
                    if (rs.Rules.Count > 0)
                    {
                        MemoryStream ms        = new MemoryStream();
                        string       sFilename = rs.Name + ".ruleset";
                        XmlWriter    writer2   = XmlWriter.Create(ms);
                        serializer.Serialize(writer2, rs);
                        writer2.Flush();
                        SPSite            site    = new SPSite(sSiteURL);
                        SPWeb             web     = site.OpenWeb();
                        SPDocumentLibrary dl      = (SPDocumentLibrary)web.Lists["Rules"];
                        SPFile            newfile = dl.RootFolder.Files.Add(sFilename, ms.ToArray(), true);
                        newfile.Item["WorkflowName"] = sWorkflowName;
                        newfile.Item.Update();
                        writer2.Close();
                        MessageBox.Show("RuleSet Saved");
                        cmboExistingRulesets.Items.Add(rs.Name);
                        cmboExistingRulesets.SelectedItem = rs.Name;
                        txtRuleSetName.Text = string.Empty;
                    }
                }
            }
        }