private void ReadRuleSet() { this.RuleSetDictionary = new Dictionary <string, RuleSet>(); string resourcesPath = ResourcesPath; if (Directory.Exists(resourcesPath)) { var files = Directory.GetFiles(resourcesPath); foreach (var file in files) { if (File.Exists(file)) { try { Models.RuleSet ruleSet = Serialization.RuleSerializer.Serialize(file); this.RuleSetDictionary.Add(ruleSet.Name, ruleSet); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(string.Format("RuleSet serialization failed from resource [{0}]\n\t{1}", file, ex.Message)); } } } } }
private RuleSet SetUpTemplate() { Models.RuleSet rulesetWrapper = new Models.RuleSet(); rulesetWrapper.RuleSet1 = "<RuleSet Description=\"{p1:Null}\" Name=\"Template\" ChainingBehavior=\"Full\" xmlns:p1=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/workflow\"> <RuleSet.Rules> <Rule Priority=\"0\" ReevaluationBehavior=\"Always\" Description=\"{p1:Null}\" Active=\"True\" Name=\"Test1\"><Rule.Condition><RuleExpressionCondition Name=\"{p1:Null}\"><RuleExpressionCondition.Expression><ns0:CodeBinaryOperatorExpression Operator=\"ValueEquality\" xmlns:ns0=\"clr-namespace:System.CodeDom;Assembly=System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"><ns0:CodeBinaryOperatorExpression.Right><ns0:CodePrimitiveExpression><ns0:CodePrimitiveExpression.Value><ns1:String xmlns:ns1=\"clr-namespace:System;Assembly=mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">1</ns1:String></ns0:CodePrimitiveExpression.Value></ns0:CodePrimitiveExpression></ns0:CodeBinaryOperatorExpression.Right><ns0:CodeBinaryOperatorExpression.Left><ns0:CodePropertyReferenceExpression PropertyName=\"TestId\"><ns0:CodePropertyReferenceExpression.TargetObject><ns0:CodeThisReferenceExpression /></ns0:CodePropertyReferenceExpression.TargetObject></ns0:CodePropertyReferenceExpression></ns0:CodeBinaryOperatorExpression.Left></ns0:CodeBinaryOperatorExpression></RuleExpressionCondition.Expression></RuleExpressionCondition></Rule.Condition><Rule.ThenActions><RuleStatementAction><RuleStatementAction.CodeDomStatement><ns0:CodeAssignStatement LinePragma=\"{p1:Null}\" xmlns:ns0=\"clr-namespace:System.CodeDom;Assembly=System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"><ns0:CodeAssignStatement.Left><ns0:CodePropertyReferenceExpression PropertyName=\"Field\"><ns0:CodePropertyReferenceExpression.TargetObject><ns0:CodeThisReferenceExpression /></ns0:CodePropertyReferenceExpression.TargetObject></ns0:CodePropertyReferenceExpression></ns0:CodeAssignStatement.Left><ns0:CodeAssignStatement.Right><ns0:CodePrimitiveExpression><ns0:CodePrimitiveExpression.Value><ns1:String xmlns:ns1=\"clr-namespace:System;Assembly=mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">1</ns1:String></ns0:CodePrimitiveExpression.Value></ns0:CodePrimitiveExpression></ns0:CodeAssignStatement.Right></ns0:CodeAssignStatement></RuleStatementAction.CodeDomStatement></RuleStatementAction><RuleStatementAction><RuleStatementAction.CodeDomStatement><ns0:CodeAssignStatement LinePragma=\"{p1:Null}\" xmlns:ns0=\"clr-namespace:System.CodeDom;Assembly=System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"><ns0:CodeAssignStatement.Left><ns0:CodePropertyReferenceExpression PropertyName=\"Discount\"><ns0:CodePropertyReferenceExpression.TargetObject><ns0:CodeThisReferenceExpression /></ns0:CodePropertyReferenceExpression.TargetObject></ns0:CodePropertyReferenceExpression></ns0:CodeAssignStatement.Left><ns0:CodeAssignStatement.Right><ns0:CodePrimitiveExpression><ns0:CodePrimitiveExpression.Value><ns1:String xmlns:ns1=\"clr-namespace:System;Assembly=mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">50</ns1:String></ns0:CodePrimitiveExpression.Value></ns0:CodePrimitiveExpression></ns0:CodeAssignStatement.Right></ns0:CodeAssignStatement></RuleStatementAction.CodeDomStatement></RuleStatementAction></Rule.ThenActions></Rule></RuleSet.Rules></RuleSet>"; System.Workflow.Activities.Rules.RuleSet ruleset = DeserializeRules(rulesetWrapper.RuleSet1); return ruleset; }
public List<Models.RuleSet> Upload(string filename) { Models.RuleSet ruleset; List<Models.RuleSet> allRulesets = new List<Models.RuleSet>(); if (File.Exists(filename)) { using (FileStream file = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (var reader = new StreamReader(file)) { while (!reader.EndOfStream) { string line = reader.ReadLine(); if (!String.IsNullOrEmpty(line)) { ruleset = new Models.RuleSet(); string[] lineArray = Regex.Split(line, "; "); try { string rules = lineArray[3]; DeserializeRules(rules); ruleset.Name = lineArray[0]; ruleset.ActivityName = lineArray[1]; ruleset.AssemblyPath = lineArray[2]; ruleset.RuleSet1 = rules; ruleset.MajorVersion = 1; ruleset.MinorVersion = 0; ruleset.ModifiedDate = DateTime.Now; allRulesets.Add(ruleset); } catch (Exception ex) { if (ex is FormatException || ex is WorkflowMarkupSerializationException) { Debug.WriteLine(ex); break; } throw; } } } } } return SaveImport(allRulesets); } return null; }