// Copyright (c) 2008 DMTF.  All rights reserved.
   [Version ( "2.31.1" ), 
    UMLPackagePath ( "CIM::Event" ), 
    Description ( 
       "CIM_IndicationFilter defines the criteria for generating an "
       "instance of CIM_Indication and what data should be returned in "
       "that instance. It is derived from CIM_ManagedElement to allow "
       "modeling the dependency of the filter on a specific service.\n"
       "If used with the \"DMTF:CQLT\" language, the processing and "
       "CQLT tokens that must be supported are described in the "
       "description of the QueryLanguage property" )]
class CIM_IndicationFilter : CIM_ManagedElement {

      [Key, Description ( 
          "A System\'s CreationClassName. The Filter is defined in "
          "the context of a CIM_System, where it is hosted or to "
          "which it applies. In a future release, a weak "
          "relationship will be explicitly added to the model. This "
          "is not done now to allow further refinement of the "
          "Filter definition and its inheritance tree. Keys are "
          "defined now to allow the class to be instantiated." ), 
       MaxLen ( 256 )]
   string SystemCreationClassName;

      [Key, Description ( 
          "A System\'s Name. The Filter is defined in the context "
          "of a CIM_System, where it is hosted or to which it "
          "applies. In a future release, a weak relationship will "
          "be explicitly added to the model. This is not done now "
          "to allow further refinement of the Filter definition and "
          "its inheritance tree. Keys are defined now to allow the "
          "class to be instantiated." ), 
       MaxLen ( 256 )]
   string SystemName;

      [Key, Description ( 
          "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, it allows all instances of "
          "this class and its subclasses to be uniquely identified." ), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Key, Description ( "The name of the filter." )]
   string Name;

      [Deprecated { "CIM_IndicationFilter.SourceNamespaces" }, 
       Description ( 
          "The path to a local namespace where the Indications "
          "originate. If NULL, the namespace of the Filter "
          "registration is assumed." )]
   string SourceNamespace;

      [Description ( 
          "The names of the local namespaces where the Indications "
          "originate. If NULL, the namespace of the Filter "
          "registration is assumed. SourceNamespaces replaces the "
          "SourceNamespace property on IndicationFilter to provide "
          "a means of defining the multiple namespaces where "
          "indications may originate." ), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_Namespace.Name" }]
   string SourceNamespaces[];

      [Description ( 
          "If IndividualSubscriptionSupported is true, the "
          "implementation shall support direct subscription to this "
          "IndicationFilter. If IndividualSubscriptionSupported is "
          "false, the implementation shall not support direct "
          "subscription to this IndicationFilter." )]
   boolean IndividualSubscriptionSupported = true;

      [Required, Description ( 
          "A query expression that defines the condition(s) under "
          "which instances of CIM_Indication will be generated. For "
          "CIM_InstIndication subclasses of CIM_Indication classes, "
          "the query expression may also define the instance "
          "properties to be copied to the CIM_InstIndication\'s "
          "SourceInstance and PreviousInstance properties. Query "
          "language semantics include projection (e.g., Select), "
          "range (e.g., From) and predicate (e.g., Where). \n"
          "When used with QueryLanguage set to \"DMTF:CQL\" or "
          "\"DMTF:CQLT\", the FROM clause shall contain at least "
          "one subclass of CIM_Indication and may contain any "
          "number of other classes or subqueries. If only one "
          "subclass of CIM_Indication is named, it defines the "
          "CIM_Indication that this Instance of "
          "CIM_IndicationFilter will produce. If more than one "
          "subclass of CIM_Indication is named, then one of them "
          "must be named explicitly in the select-list. \n"
          "The select-list must refer explicitly or implicitly to "
          "exactly one CIM_Indication subclass. In addition, it "
          "shall conform to one of several options: \n"
          "1) only a \"*\": This may only be used if the Indication "
          "subclass is the only entry on the FROM list. \n"
          "2) only a \"<Indicationclass or alias>.*\": This form "
          "may be used if the FROM clause contains more than one "
          "Indication subclass. \n"
          "3) a list of the form \"<propertyname>*[\",\"[<literal> "
          "AS ]<propertyname>]\": This form may only be used if the "
          "CIM_Indication subclass is the only entry on the FROM "
          "list. In this form, the literal is assigned to the named "
          "property of the selected CIM_Indication subclass \n"
          "4) a list of the form \"<Indicationname>.<propertyname> "
          "*[\",\" [<Indicationname>.<propertyname> |\"\": "
          "<literal> AS <propertyname> | <fromname>.<propertyname> "
          "AS <propertyname> ] ]\" : The first term selects the "
          "appropriate CIM_Indication subclass to produce. "
          "Subsequent terms allow other properties of that "
          "indication, or allow a literal or property of another "
          "class to be assigned to the output as one of the "
          "properties of the selected CIM_Indication subclass. \n"
          "Note that in all cases, only the property names of the "
          "selected CIM_Indication subclass may be referred to in "
          "the select-list.\n"
          "When used with \"DMTF:CQLT\", the additional string "
          "array property TemplateVariable should be used to "
          "provide additional filtering information to the query." ), 
       ModelCorrespondence { "CIM_IndicationFilter.QueryLanguage", 
          "CIM_IndicationFilter.TemplateVariable" }]
   string Query;

      [Required, Description ( 
          "The language in which the query is expressed. . \n"
          "\"DMTF:CQL\" indicates a CIM Query Language string. \n"
          "\"DMTF:CQLT\" indicates a CIM Query Language Template "
          "string. When used, the identifiers recognized in the "
          "$identifier$ tokens are \"SELF\" and the property names "
          "of this class, or one of its subclasses. As seen by a "
          "CIM client, the value of the Query property is not "
          "changed as a result of template processing. Template "
          "processing conceptually produces a new query string, "
          "which defines the actual conditions that will trigger "
          "production of a CIM_Indication instance. When used in "
          "the Query string, $SELF$ will be replaced by a string "
          "corresponding to a WBEM URI referencing the instance of "
          "this class that contains the Query template string. "
          "Tokens of the form $<propertyname>$ will be replaced by "
          "a string representing the corresponding property value "
          "of the instance of this class that contains the Query "
          "string. The Query string must be evaluated when the "
          "CIM_IndicationFilter is created and at any time when one "
          "any modification of any property referenced by tokens in "
          "the Query string are modified." ), 
       ModelCorrespondence { "CIM_IndicationFilter.Query", 
          "CIM_IndicationFilter.TemplateVariable" }]
   string QueryLanguage;

      [Description ( 
          "This property may be used to hold application specific "
          "filtering information for use within a \"DMTF:CQLT\" "
          "formatted query.\n"
          "\n"
          "For example, each TemplateVariable entry might be filled "
          "with the WBEM URI formatted object path of a "
          "CIM_ManagedElement, as in the following example, which "
          "selects only indications against "
          "namedCIM_StorageSynchonized instances. It then uses SELF "
          "to select the executing IndicationFilter, and then uses "
          "the entries of the TemplateVariable array to select "
          "particular instances of CIM_StorageSynchronized.\n"
          "\n"
          "SELECT I.* \n"
          "FROM CIM_InstIndication I, CIM_IndicationFilter F \n"
          "WHERE I.SourceInstance ISA CIM_StorageSynchronized \n"
          "\tAND ObjectPath(F) = ObjectPath($SELF$)\n"
          "\tAND ANY x IN F.TemplateVariable[*]\n"
          "\t\tSATISFIES (ObjectPath(I.SourceInstanceModelPath) = "
          "ObjectPath(x))." ), 
       ModelCorrespondence { "CIM_IndicationFilter.QueryLanguage", 
          "CIM_IndicationFilter.Query" }]
   string TemplateVariable[];


};
