// Copyright (c) 2005 DMTF.  All rights reserved.
   [Abstract, Version ( "2.8.0" ), 
    UMLPackagePath ( "CIM::Policy" ), 
    Description ( 
       "A class representing a rule-specific or reusable policy action "
       "to be performed if the PolicyConditions for a Policy Rule "
       "evaluate to TRUE. Since all operational details of a "
       "PolicyAction are provided in subclasses of this object, this "
       "class is abstract." )]
class CIM_PolicyAction : CIM_Policy {

      [Key, Description ( 
          "The name of the class or the subclass used in the "
          "creation of the System object in whose scope this "
          "PolicyAction is defined. \n"
          "\n"
          "This property helps to identify the System object in "
          "whose scope this instance of PolicyAction exists. For a "
          "rule-specific PolicyAction, this is the System in whose "
          "context the PolicyRule is defined. For a reusable "
          "PolicyAction, this is the instance of PolicyRepository "
          "(which is a subclass of System) that holds the Action. \n"
          "\n"
          "Note that this property, and the analogous property "
          "SystemName, do not represent propagated keys from an "
          "instance of the class System. Instead, they are "
          "properties defined in the context of this class, which "
          "repeat the values from the instance of System to which "
          "this PolicyAction is related, either directly via the "
          "PolicyActionInPolicyRepository association or indirectly "
          "via the PolicyActionInPolicyRule aggregation." ), 
       MaxLen ( 256 )]
   string SystemCreationClassName;

      [Key, Description ( 
          "The name of the System object in whose scope this "
          "PolicyAction is defined. \n"
          "\n"
          "This property completes the identification of the System "
          "object in whose scope this instance of PolicyAction "
          "exists. For a rule-specific PolicyAction, this is the "
          "System in whose context the PolicyRule is defined. For a "
          "reusable PolicyAction, this is the instance of "
          "PolicyRepository (which is a subclass of System) that "
          "holds the Action." ), 
       MaxLen ( 256 )]
   string SystemName;

      [Key, Description ( 
          "For a rule-specific PolicyAction, the CreationClassName "
          "of the PolicyRule object with which this Action is "
          "associated. For a reusable PolicyAction, a special "
          "value, \'NO RULE\', should be used to indicate that this "
          "Action is reusable and not associated with a single "
          "PolicyRule." ), 
       MaxLen ( 256 )]
   string PolicyRuleCreationClassName;

      [Key, Description ( 
          "For a rule-specific PolicyAction, the name of the "
          "PolicyRule object with which this Action is associated. "
          "For a reusable PolicyAction, a special value, \'NO "
          "RULE\', should be used to indicate that this Action is "
          "reusable and not associated with a single PolicyRule." ), 
       MaxLen ( 256 )]
   string PolicyRuleName;

      [Key, Description ( 
          "CreationClassName indicates the name of the class or the "
          "subclass used in the creation of an instance. When used "
          "with the other key properties of this class, this "
          "property allows all instances of this class and its "
          "subclasses to be uniquely identified." ), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Key, Description ( 
          "A user-friendly name of this PolicyAction." ), 
       MaxLen ( 256 )]
   string PolicyActionName;

      [Description ( 
          "DoActionLogging causes a log message to be generated "
          "when the action is performed." )]
   boolean DoActionLogging;


};
