1 krisbash 1.1 // Copyright (c) 2005 DMTF. All rights reserved.
2 [Version ( "2.7.0" ),
3 UMLPackagePath ( "CIM::Policy" ),
4 Description (
5 "The central class used for representing the \'If Condition "
6 "then Action\' semantics of a policy rule. A PolicyRule "
7 "condition, in the most general sense, is represented as either "
8 "an ORed set of ANDed conditions (Disjunctive Normal Form, or "
9 "DNF) or an ANDed set of ORed conditions (Conjunctive Normal "
10 "Form, or CNF). Individual conditions may either be negated "
11 "(NOT C) or unnegated (C). The actions specified by a "
12 "PolicyRule are to be performed if and only if the PolicyRule "
13 "condition (whether it is represented in DNF or CNF) evaluates "
14 "to TRUE. \n"
15 "\n"
16 "The conditions and actions associated with a PolicyRule are "
17 "modeled, respectively, with subclasses of PolicyCondition and "
18 "PolicyAction. These condition and action objects are tied to "
19 "instances of PolicyRule by the PolicyConditionInPolicyRule and "
20 "PolicyActionInPolicyRule aggregations. \n"
21 "\n"
22 krisbash 1.1 "A PolicyRule may also be associated with one or more policy "
23 "time periods, indicating the schedule according to which the "
24 "policy rule is active and inactive. In this case it is the "
25 "PolicySetValidityPeriod aggregation that provides this "
26 "linkage. \n"
27 "\n"
28 "The PolicyRule class uses the property ConditionListType, to "
29 "indicate whether the conditions for the rule are in DNF "
30 "(disjunctive normal form), CNF (conjunctive normal form) or, "
31 "in the case of a rule with no conditions, as an "
32 "UnconditionalRule. The PolicyConditionInPolicyRule aggregation "
33 "contains two additional properties to complete the "
34 "representation of the Rule\'s conditional expression. The "
35 "first of these properties is an integer to partition the "
36 "referenced PolicyConditions into one or more groups, and the "
37 "second is a Boolean to indicate whether a referenced Condition "
38 "is negated. An example shows how ConditionListType and these "
39 "two additional properties provide a unique representation of a "
40 "set of PolicyConditions in either DNF or CNF. \n"
41 "\n"
42 "Suppose we have a PolicyRule that aggregates five "
43 krisbash 1.1 "PolicyConditions C1 through C5, with the following values in "
44 "the properties of the five PolicyConditionInPolicyRule "
45 "associations: \n"
46 "C1: GroupNumber = 1, ConditionNegated = FALSE \n"
47 "C2: GroupNumber = 1, ConditionNegated = TRUE \n"
48 "C3: GroupNumber = 1, ConditionNegated = FALSE \n"
49 "C4: GroupNumber = 2, ConditionNegated = FALSE \n"
50 "C5: GroupNumber = 2, ConditionNegated = FALSE \n"
51 "\n"
52 "If ConditionListType = DNF, then the overall condition for the "
53 "PolicyRule is: \n"
54 "(C1 AND (NOT C2) AND C3) OR (C4 AND C5) \n"
55 "\n"
56 "On the other hand, if ConditionListType = CNF, then the "
57 "overall condition for the PolicyRule is: \n"
58 "(C1 OR (NOT C2) OR C3) AND (C4 OR C5) \n"
59 "\n"
60 "In both cases, there is an unambiguous specification of the "
61 "overall condition that is tested to determine whether to "
62 "perform the PolicyActions associated with the PolicyRule. \n"
63 "\n"
64 krisbash 1.1 "PolicyRule instances may also be used to aggregate other "
65 "PolicyRules and/or PolicyGroups. When used in this way to "
66 "implement nested rules, the conditions of the aggregating rule "
67 "apply to the subordinate rules as well. However, any side "
68 "effects of condition evaluation or the execution of actions "
69 "MUST NOT affect the result of the evaluation of other "
70 "conditions evaluated by the rule engine in the same evaluation "
71 "pass. That is, an implementation of a rule engine MAY evaluate "
72 "all conditions in any order before applying the priority and "
73 "determining which actions are to be executed." )]
74 class CIM_PolicyRule : CIM_PolicySet {
75
76 [Key, Description ( "The scoping System\'s CreationClassName." ),
77 MaxLen ( 256 ),
78 Propagated ( "CIM_System.CreationClassName" )]
79 string SystemCreationClassName;
80
81 [Key, Description ( "The scoping System\'s Name." ),
82 MaxLen ( 256 ),
83 Propagated ( "CIM_System.Name" )]
84 string SystemName;
85 krisbash 1.1
86 [Key, Description (
87 "CreationClassName indicates the name of the class or the "
88 "subclass used in the creation of an instance. When used "
89 "with the other key properties of this class, this "
90 "property allows all instances of this class and its "
91 "subclasses to be uniquely identified." ),
92 MaxLen ( 256 )]
93 string CreationClassName;
94
95 [Key, Description ( "A user-friendly name of this PolicyRule." ),
96 MaxLen ( 256 )]
97 string PolicyRuleName;
98
99 [Description (
100 "Indicates whether the list of PolicyConditions "
101 "associated with this PolicyRule is in disjunctive normal "
102 "form (DNF), conjunctive normal form (CNF), or has no "
103 "conditions (i.e., is an UnconditionalRule) and is "
104 "automatically evaluated to \"True.\" The default value "
105 "is 1 (\"DNF\")." ),
106 krisbash 1.1 ValueMap { "0", "1", "2" },
107 Values { "Unconditional Rule", "DNF", "CNF" }]
108 uint16 ConditionListType = 1;
109
110 [Description (
111 "A free-form string that can be used to provide "
112 "guidelines on how this PolicyRule should be used." )]
113 string RuleUsage;
114
115 [Deprecated { "CIM_PolicySetComponent.Priority" },
116 Description (
117 "PolicyRule.Priority is deprecated and replaced by "
118 "providing the priority for a rule (and a group) in the "
119 "context of the aggregating PolicySet instead of the "
120 "priority being used for all aggregating PolicySet "
121 "instances. Thus, the assignment of priority values is "
122 "much simpler. \n"
123 "\n"
124 "A non-negative integer for prioritizing this Policy Rule "
125 "relative to other Rules. A larger value indicates a "
126 "higher priority. The default value is 0." )]
127 krisbash 1.1 uint16 Priority = 0;
128
129 [Deprecated { "No value" },
130 Description (
131 "A flag indicating that the evaluation of the Policy "
132 "Conditions and execution of PolicyActions (if the "
133 "Conditions evaluate to TRUE) is required. The evaluation "
134 "of a PolicyRule MUST be attempted if the Mandatory "
135 "property value is TRUE. If the Mandatory property is "
136 "FALSE, then the evaluation of the Rule is \'best effort\' "
137 "and MAY be ignored." )]
138 boolean Mandatory;
139
140 [Description (
141 "This property gives a policy administrator a way of "
142 "specifying how the ordering of the PolicyActions "
143 "associated with this PolicyRule is to be interpreted. "
144 "Three values are supported: \n"
145 "o mandatory(1): Do the actions in the indicated order, "
146 "or don\'t do them at all. \n"
147 "o recommended(2): Do the actions in the indicated order "
148 krisbash 1.1 "if you can, but if you can\'t do them in this order, do "
149 "them in another order if you can. \n"
150 "o dontCare(3): Do them -- I don\'t care about the order. \n"
151 "The default value is 3 (\"DontCare\")." ),
152 ValueMap { "1", "2", "3" },
153 Values { "Mandatory", "Recommended", "Dont Care" }]
154 uint16 SequencedActions = 3;
155
156 [Description (
157 "ExecutionStrategy defines the strategy to be used in "
158 "executing the sequenced actions aggregated by this "
159 "PolicyRule. There are three execution strategies: \n"
160 "\n"
161 "Do Until Success - execute actions according to "
162 "predefined order, until successful execution of a single "
163 "action. \n"
164 "Do All - execute ALL actions which are part of the "
165 "modeled set, according to their predefined order. "
166 "Continue doing this, even if one or more of the actions "
167 "fails. \n"
168 "Do Until Failure - execute actions according to "
169 krisbash 1.1 "predefined order, until the first failure in execution "
170 "of an action instance." ),
171 ValueMap { "1", "2", "3" },
172 Values { "Do Until Success", "Do All", "Do Until Failure" }]
173 uint16 ExecutionStrategy;
174
175
176 };
|