// Copyright (c) 2005 DMTF.  All rights reserved.
   [Abstract, Version ( "2.6.0" ), 
    UMLPackagePath ( "CIM::Policy" ), 
    Description ( 
       "A class representing a rule-specific or reusable policy "
       "condition to be evaluated in conjunction with a Policy Rule. "
       "Since all operational details of a PolicyCondition are "
       "provided in subclasses of this object, this class is abstract." )]
class CIM_PolicyCondition : CIM_Policy {

      [Key, Description ( 
          "The name of the class or the subclass used in the "
          "creation of the System object in whose scope this "
          "PolicyCondition is defined. \n"
          "\n"
          "This property helps to identify the System object in "
          "whose scope this instance of PolicyCondition exists. For "
          "a rule-specific PolicyCondition, this is the System in "
          "whose context the PolicyRule is defined. For a reusable "
          "PolicyCondition, this is the instance of "
          "PolicyRepository (which is a subclass of System) that "
          "holds the Condition. \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 PolicyCondition is related, either directly via the "
          "PolicyConditionInPolicyRepository association or "
          "indirectly via the PolicyConditionInPolicyRule "
          "aggregation." ), 
       MaxLen ( 256 )]
   string SystemCreationClassName;

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

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

      [Key, Description ( 
          "For a rule-specific PolicyCondition, the name of the "
          "PolicyRule object with which this Condition is "
          "associated. For a reusable PolicyCondition, a special "
          "value, \'NO RULE\', should be used to indicate that this "
          "Condition 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 PolicyCondition." ), 
       MaxLen ( 256 )]
   string PolicyConditionName;


};
