anchor.diff:  
   Tags on triggers are automatically passed on to the Alerts or Events generated by that trigger.  This allows the same search criteria used to fetch triggers to also be used to fetch the alerts or events generated by those triggers.
   
  -A tag's name and value must both be non-empty.  But tag search allows for matching just the name by specifying value='*' in the search criteria.
  -
  -
  -== REST API
  -
  -Hawkular Alerting supports a robust REST API for managing Triggers, Alerts and Events.  For more on how to generate API documentation, see the README.adoc at http://github.com/hawkular/hawkular-alerts[Hawkular-Alerts @ *GitHub*].
  -
  +A tag's name and value must both be non-null.
  +
  +=== Tags Query Language
  +
  +[source]
  +----
  +<tag_query> ::= ( <expression> | "(" <object> ")"
  +| <object> <logical_operator> <object> )
  +<expression> ::= ( <tag_name> | <not> <tag_name>
  +| <tag_name> <boolean_operator> <tag_value>
  +| <tag_name> <array_operator> <array> )
  +<not> ::= [ "NOT" | "not" ]
  +<logical_operator> ::= [ "AND" | "OR" | "and" | "or" ]
  +<boolean_operator> ::= [ "==" | "!=" ]
  +<array_operator> ::= [ "IN" | "NOT IN" | "in" | "not in" ]
  +<array> ::= ( "[" "]" | "[" ( "," <tag_value> )* )
  +<tag_name> ::= <identifier>
  +<tag_value> ::= ( "'" <regexp> "'" | <simple_value> )
  +;
  +; <identifier> and <simple_value> follow pattern [a-zA-Z_0-9][\\-a-zA-Z_0-9]*
  +; <regexp> follows any valid Java Regular Expression format
  +----
   
   == External Alert Integration
   
  
positive.code: 
  There are several different kinds of conditions but they all have one thing in common, each requires some piece of data against which the condition is evaluated.  Here are the different kinds of conditions:
  
  * Threshold
  ** X < 10, X >= 20
  * ThresholdRange
  ** X inside [10,20), X outside [100,200]
  * Compare
  ** X < 80% Y
  * String
  ** X starts with "ABC", X matches "A.*B"
  * Rate
  ** X > 10 per-minute
  * Availability
  ** X is DOWN
  * Event
  ** event.id starts 'IDXYZ', event.tag.category == 'Server',
     event.tag.from ends '.com'
  * Missing
  ** No event/data received for X in the last 5 minutes
  
  Most conditions deal with numeric data.  But String and Availability data is also supported.  A trigger can combine conditions dealing with data of different types and from different sources.
  
  
negative.code: 
  Note that the string data sent in has any value the external alerter system wants it to be.  In our example it may  be a sensorId and temperature, like "Sensor 5368, temperature 212F".
  
  == Action Plugins
  
  Plugins are responsible to execute actions when an alert, or possibly an event, happens.
  
  