Section 9.3.5, "SatisfierProperty," defines the concrete
data types that a SatisfierProperty's value can assume,
depending on the SatisfierPropertyKind.
For the "Attribute" kind, it allows the value to be of a
(user-defined) enumeration type. It then says, "if the value
of the SatisfierProperty is of enumeration type, the value
of the Property is of type string, containing the enumeration
value that must compare equal to the SatisfierProperty value.
This is straightforward enough. E.g., it allows a
DomainAdministrator to enumerate the kinds of processors
in a domain,
enum Processors
{ ix86, ppc, sparc }
;
and then to tag each node with a resource containing a
property of this type, its value specifying the actual
processor type of the node.
It seemed like a good idea. Yet this feature does not buy
much. The DomainAdministrator could just as well use an
attribute of type string to the same effect. The only
advantage is that the enumerated property allows the
DomainAdministrator to constrain the values that a
SatisfierProperty may have. But it's the DomainAdmininstrator
constraining himself, so it's not much of a constraint.
However, this feature does add a dependency on DynamicAny
for both the TargetManager and the Planner, which do not
know about any user-defined enumeration types. All the other
SatisfierPropertyKind options use basic IDL data types (long,
unsigned long, double or string).
So, because of the added complexity, and the low mileage, I
propose to remove enumerated properties from the spec.
Proposed resolution:
In section 9.3.5, "SatisfierProperty," change the fourth
and fifth bullet from:
For the Attribute kind, the value of the SatisfierProperty
is of type long, double, string, or an enumeration type.
In the case of long, double or string, the value of the
Property must be of the same type. If the value of the
SatisfierProperty is of enumeration type, the value of
the Property is of type string, containing the enumeration
value that must compare equal to the SatisfierProperty
value.
For the Selection kind, the value of the SatisfierProperty
is a sequence of type long, double, string, or an
enumeration type. The same rules as for the Attribute kind
apply.
To:
For the Attribute kind, the value of the SatisfierProperty
is of type long, double or string. The value of the
Property must be of the same type and compare equal to
the SatisfierProperty value.
For the Selection kind, the value of the SatisfierProperty
is a sequence of type long, double or string. The same
rules as for the Attribute kind apply.