// Copyright (c) 2005 DMTF.  All rights reserved.
   [Version ( "2.8.0" ), 
    UMLPackagePath ( "CIM::Policy" ), 
    Description ( 
       "PolicyRoleCollection is used to represent a collection of "
       "ManagedElements that share a common policy role, and the "
       "PolicySets that CAN BE applied to those elements. (Note that "
       "the PolicySets that are CURRENTLY applied are indicated via "
       "instances of the association, PolicySetAppliesToElement.) The "
       "PolicyRoleCollection always exists in the context of a System, "
       "specified using the PolicyRoleCollectionInSystem aggregation. "
       "The value of the PolicyRole property in this class specifies "
       "the role. It is defined as a free-form string. ManagedElements "
       "that share the role defined in this collection are aggregated "
       "into the Collection via the ElementInPolicyRoleCollection "
       "association." )]
class CIM_PolicyRoleCollection : CIM_SystemSpecificCollection {

      [Required, Description ( 
          "The PolicyRole name for the PolicySets and other "
          "ManagedElements that are identified and aggregated by "
          "the Collection. Note that the aggregated PolicySets "
          "define the rules and groups of rules that may be applied "
          "to the associated ManagedElements. \n"
          "\n"
          "Although not officially designated as \'role "
          "combinations\', multiple roles may be specified using "
          "the form: \n"
          "<RoleName>[&&<RoleName>]* \n"
          "where the individual role names appear in alphabetical "
          "order (according to the collating sequence for UCS-2). "
          "Implementations may treat PolicyRole values that are "
          "specified as \'role combinations\' as simple strings." )]
   string PolicyRole;


      [Description ( 
          "Activates/applies the PolicySets aggregated into this "
          "Collection to the specified ManagedElement. The "
          "ManagedElement MUST be a member of the Collection, "
          "associated via ElementInPolicyRoleCollection. The result "
          "of this method, if it is successfully executed, is that "
          "the aggregated PolicySets are deployed and enforced for "
          "the Element. This is reflected by the instantiation of "
          "the PolicySetAppliesToElement association between the "
          "named Element and each PolicySet." ), 
       ValueMap { "0", "1", "2", "3", "4", "..", "0x8000.." }, 
       Values { "Success", "Not Supported", "Unknown", "Timeout", 
          "Failed", "DMTF Reserved", "Vendor Specific" }]
   uint32 ActivatePolicySet(
         [IN, Description ( 
             "The ManagedElement to which the aggregated "
             "PolicySets of this Collection are applied." )]
      CIM_ManagedElement REF Element);

      [Description ( 
          "Deactivates the aggregated PolicySets for the specified "
          "ManagedElement. The result of this method, if it is "
          "successfully executed, is that the aggregated PolicySets "
          "are NOT enforced for the Element. This is reflected by "
          "the removal of the PolicySetAppliesToElement association "
          "between the named Element and each PolicySet. If a "
          "PolicySet is not currently enforced for the "
          "ManagedElement, then this method has no effect for that "
          "Set." ), 
       ValueMap { "0", "1", "2", "3", "4", "..", "0x8000..0xFFFF" }, 
       Values { "Success", "Not Supported", "Unknown", "Timeout", 
          "Failed", "DMTF Reserved", "Vendor Specific" }]
   uint32 DeactivatePolicySet(
         [IN, Description ( 
             "The ManagedElement to which the aggregated "
             "PolicySets of this Collection MUST NOT apply." )]
      CIM_ManagedElement REF Element);

};
