public WorkflowData()
 {
     workflowId      = -1;
     strWorkflowName = string.Empty;
     isForced        = false;
     wfSteps         = null;
     activeStepId    = -1;
     wfSteps         = new WorkflowStepArray();
 }
        /// <summary>
        /// Sets the workflow steps' content from the XML to the data structure.
        /// </summary>
        /// <param name="strWorkflowStepsXML">steps' content in the form of XML</param>
        /// <returns>true if successful and false if failed.</returns>
        public bool SetWorkflowStepsData(string strWorkflowStepsXML)
        {
            if (strWorkflowStepsXML == string.Empty)
            {
                return(false);
            }

            try
            {
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(strWorkflowStepsXML);

                XmlNode root         = doc.DocumentElement;
                XmlNode WorkflowNode = root.SelectSingleNode(XML_WORKFLOW);

                //verify if the workflow ids are correct.
                //there should not be a mismatch, but still.
                int nWorkflowIDFromXML = Convert.ToInt32(WorkflowNode.Attributes[XML_WORKFLOW_ID].InnerText, 10);
                if (nWorkflowIDFromXML != workflowId)
                {
                    return(false);
                }

                XmlNodeList Steps = WorkflowNode.SelectNodes(XML_STEP);
                if (Steps.Count == 0)                 //no steps for this workflow.
                {
                    Logging.Warn(this.ToString(), localizeWF.WORKFLOW_DATA_STRUCTURES_WORKFLOW_DATA_ERR_SET_WORKFLOW_STEPS_DATA);
                    return(false);
                }

                wfSteps = new WorkflowStepArray();
                foreach (XmlNode StepNode in Steps)
                {
                    //form the workflowstep structure
                    WorkflowStep Step = new WorkflowStep();
                    Step.SetStepData(StepNode.OuterXml);

                    //add the structure to the list.
                    wfSteps.Add(Step);
                }
            }
            catch (Exception exp)
            {
                Logging.Error(this.ToString(), localizeWF.WORKFLOW_DATA_STRUCTURES_WORKFLOW_DATA_ERR_SET_WORKFLOW_STEPS_DATA, exp);
                throw exp;
            }

            return(true);
        }