/// <summary> /// Deserialize the markup file /// </summary> /// <param name="fileName"></param> /// <returns></returns> private Activity DeserializeFromMarkup(String fileName) { Activity workflow = null; //construct a serialization manager. DesignerSerializationManager dsm = new DesignerSerializationManager(); using (dsm.CreateSession()) { using (XmlReader xmlReader = XmlReader.Create(fileName)) { //deserialize the workflow from the XmlReader WorkflowMarkupSerializer markupSerializer = new WorkflowMarkupSerializer(); workflow = markupSerializer.Deserialize( dsm, xmlReader) as Activity; if (dsm.Errors.Count > 0) { WorkflowMarkupSerializationException error = dsm.Errors[0] as WorkflowMarkupSerializationException; throw error; } } //deserialize a .rules file is one exists String rulesFileName = GetRulesFileName(fileName); if (File.Exists(rulesFileName)) { //read the .rules file using (XmlReader xmlReader = XmlReader.Create(rulesFileName)) { WorkflowMarkupSerializer markupSerializer = new WorkflowMarkupSerializer(); //deserialize the rule definitions RuleDefinitions ruleDefinitions = markupSerializer.Deserialize(dsm, xmlReader) as RuleDefinitions; if (ruleDefinitions != null) { //add the rules definitions to the workflow workflow.SetValue( RuleDefinitions.RuleDefinitionsProperty, ruleDefinitions); } } } } return(workflow); }
public WorkflowCompilerError(string fileName, WorkflowMarkupSerializationException exception) { if (exception == null) { throw new ArgumentNullException("exception"); } this.FileName = fileName; this.Line = exception.LineNumber - 1; this.Column = exception.LinePosition - 1; this.ErrorText = exception.Message; this.ErrorNumber = ErrorNumbers.Error_SerializationError.ToString(CultureInfo.InvariantCulture); this.incrementLineAndColumn = true; }