/// <summary>
        /// Set the resource action properties from the action properties
        /// </summary>
        /// <param name="actionProperties"></param>
        public void SetActionProperties(IActionPropertySet actionProperties)
        {
            if( actionProperties == null)
                return;

            foreach (KeyValuePair<string, IActionProperty> kvp in actionProperties)
            {
                IResourceActionProperty resourceActionProperty = new ResourceActionProperty();
                (resourceActionProperty as ResourceActionProperty).SetActionProperty(kvp.Key, kvp.Value);
                Add(resourceActionProperty);
            }
        }
        public static void AddDataElementsToResource(XPathNavigator actionClassNode, IResourceAction resourceAction)
        {
            IResourceActionProperties resourceActionProperties = new ResourceActionProperties();
            XPathNodeIterator dataElementNodes = actionClassNode.Select(@"DataElements/DataElement");
            if (dataElementNodes != null && dataElementNodes.Count > 0)
            {
                while (dataElementNodes.MoveNext())
                {
                    IResourceActionProperty resourceActionProperty = new ResourceActionProperty();
                    XPathNavigator dataElementNode = dataElementNodes.Current;
                    AddDataElementToResource(dataElementNode, resourceActionProperty);
                    //ignore old EXECUTE property
                    if (!resourceActionProperty.Name.Equals("EXECUTE", StringComparison.InvariantCultureIgnoreCase))
                        resourceActionProperties.Add(resourceActionProperty);
                    else
                    {
                        bool value = Convert.ToBoolean(resourceActionProperty.Value, CultureInfo.InvariantCulture);
                        bool overridable = Convert.ToBoolean(resourceActionProperty.Override, CultureInfo.InvariantCulture);

                        if (overridable)
                        {
                            resourceAction.ExecutionOption = value ? ExecutionOption.OverridableDefaultTrue : ExecutionOption.OverridableDefaultFalse;
                        }
                        else
                        {
                            resourceAction.ExecutionOption = ExecutionOption.AlwaysExecute;
                        }
                    }
                }
            }

            (resourceAction as ResourceAction).Properties = resourceActionProperties;
        }