A Referencia rápida del XML

Este apéndice resume, para cada tipo de consulta, qué elementos y atributos son obligatorios, cuáles son opcionales y cuáles no se admiten. En los esquemas, los corchetes indican partes opcionales y la barra vertical, alternativas.

A.1 Nivel <Queries> (todos los motores)#

<Queries [engine="Database|Webservice|MQTT"] [query="2.5.0"] [databbix="2.5.0"]>
  <environment name="VAR" default="valor"/>                   <!-- todos -->
  <script language="Javascript|Python"> ... </script>         <!-- todos -->
  <context name="Database" module="MOD" default="valor"/>     <!-- Database -->
  <authentication type="RESTToken|HTTPAuth" name="N"> ...     <!-- Webservice -->
  <query ...> ... </query>
</Queries>

En todas las consultas, name y module son obligatorios, y maxCache, maxExecTime y <script> son opcionales. Los <field> solo se admiten en las consultas de descubrimiento.

A.2 Consulta constante (todos los motores)#

<query name="..." module="..." type="Constant">
  <item name="clave" value="valor"/>
</query>
Obligatorio: type="Constant"; uno o más <item> con name y value.
Opcional: transform en los <item>.
No admite: <sql>, <url>, <parameter>, <field>.

A.3 Motor Database#

A.3.1 Consulta básica#

<query name="..." module="...">
  <sql> texto </sql>
  [<default context="C" value="v"/>]
  [<parameter context="C" order="N"/>]
  <item name="clave" column="COL" [transform="L:f"]/>
  [<item name="clave" built_in="exec_time|exec_success"/>]
</query>
Obligatorio: un <sql>; uno o más <item> con column (o built_in).
Opcional: <default>; <parameter> de contexto; transform en los ítems.
No admite: select; <parameter> con column o bind; <field>; <sql context>.

La sentencia debe devolver exactamente una fila.

A.3.2 Consulta de filtro#

<query name="..." module="..." select="FILTER">
  <sql> texto </sql>
  [<default context="C" value="v"/>]
  [<parameter context="C" order="1"/>]
  <parameter column="COL" order="N" [type="STRING|INT"]/>
  <item name="clave" column="COL" [default="v"] [transform="L:f"]/>
</query>
Obligatorio: select="FILTER"; un <sql>; al menos un <parameter> con column; uno o más <item> con column (o built_in).
Opcional: <default>; <parameter> de contexto; default y transform en los ítems.
No admite: <parameter> con bind; <field>; <sql context>.

A.3.3 Consulta con variables de enlace#

<query name="..." module="..." select="BIND">
  <sql> texto con :var </sql>
  [<default context="C" value="v"/>]
  [<parameter context="C" order="1"/>]
  <parameter bind=":var" order="N" [type="STRING|INT"]/>
  <item name="clave" column="COL" [transform="L:f"]/>
</query>
Obligatorio: select="BIND"; un <sql>; al menos un <parameter> con bind; uno o más <item> con column (o built_in).
Opcional: <default>; <parameter> de contexto; transform en los ítems.
No admite: <parameter> con column; <field>; <sql context>.

La sentencia debe devolver exactamente una fila para cada clave.

A.3.4 Consulta de descubrimiento#

<query name="..." module="..." discovery="yes">
  [<sql context="C"> texto </sql>]
  <sql> texto </sql>
  [<default context="C" value="v"/>]
  [<parameter context="C" order="N"/>]
  <item name="clave" [transform="L:f"]/>
  <field name="MACRO" column="COL" | context="C"/>
</query>
Obligatorio: discovery="yes"; un <sql> principal; al menos un <field> con column o context; uno o más <item> solo con name.
Opcional: <sql context> (uno por contexto que se recorre); <default>; <parameter> de contexto; transform en los ítems.
No admite: select; <parameter> con column o bind; column, built_in y default en los ítems.

A.4 Motor Webservice#

A.4.1 Consulta REST#

<query name="..." module="..." type="REST" transport="GET|POST" encode="Json">
  <url>ruta/relativa</url>
  [<transform language="L" function="f"/>]
  [<parameter urlparameter="nombre" order="N" [type="STRING|INT"]/>]
  <item name="clave" path="a:b:[0]:c" type="INT|STRING" [default="v"]/>
</query>
Obligatorio: type="REST"; transport; encode="Json"; un <url>; uno o más <item> con path y type (o built_in).
Opcional: <transform>; <parameter> con urlparameter; default y transform en los ítems.
No admite: <sql>; <field>; <parameter> con column, bind o context.

A.4.2 Consulta REST de filtro#

<query name="..." module="..." type="REST" transport="GET|POST" encode="Json">
  <url>ruta/relativa</url>
  <base path="lista:[]"/>
  [<transform language="L" function="f"/>]
  <parameter path="campo" order="N" [type="STRING|INT"]/>
  [<parameter urlparameter="nombre" order="M"/>]
  <item name="clave" path="campo" type="INT|STRING" [default="v"]/>
</query>
Obligatorio: lo mismo que una consulta REST, más <base> y al menos un <parameter> con path.
Opcional: <transform>; <parameter> con urlparameter; default y transform en los ítems.
No admite: <field>. Las rutas de los ítems son relativas al elemento elegido.

A.4.3 Consulta REST de descubrimiento#

<query name="..." module="..." type="REST" transport="GET|POST" encode="Json"
       discovery="yes">
  <url>ruta/relativa</url>
  [<transform language="L" function="f"/>]
  [<parameter urlparameter="nombre" order="N"/>]
  <item name="clave" path="lista:[]" [transform="L:f"]/>
  <field name="MACRO" path="campo"/>
</query>
Obligatorio: discovery="yes"; type="REST"; transport; encode="Json"; un <url>; uno o más <item> con path (con [] o *); <field> con path.
Opcional: <transform>; <parameter> con urlparameter; transform en los ítems.
No admite: type, built_in y default en los ítems.

A.4.4 Consulta SOAP#

<query name="..." module="..." type="SOAP" transport="POST">
  <url>ruta/del/servicio</url>
  <method uri="espacio:de:nombres" name="metodo" [action="accion"]>
    [<argument name="arg" type="string|int" value="valor"/>]
  </method>
  [<transform language="L" function="f"/>]
  <item name="clave" path="a:b" type="INT|STRING" [default="v"]/>
</query>
Obligatorio: type="SOAP"; transport="POST"; un <url>; un <method> con name; uno o más <item> con path y type (o built_in).
Opcional: <argument>; <transform>; default y transform en los ítems.
No admite: discovery; <field>. Los <parameter> se aceptan pero no tienen efecto en esta versión.

A.5 Motor MQTT#

A.5.1 Lectura de valor#

<query name="..." module="...">
  <parameter order="1" [type="STRING"]/>
  <item name="ts.mqtt.getvalue"/>
</query>
Obligatorio: un <parameter> (el topic); el <item> ts.mqtt.getvalue.
Opcional: —
No admite: atributos en el <item> distintos de name; <field>.

A.5.2 Descubrimiento de topics#

<query name="..." module="..." discovery="yes">
  <parameter order="1" [type="STRING"]/>
  <item name="ts.mqtt.discovery"/>
  <field name="MACRO"/>
</query>
Obligatorio: discovery="yes"; exactamente un <parameter> (el patrón); el <item> ts.mqtt.discovery; exactamente un <field>, solo con name.
Opcional: —
No admite: atributos en el <item> o el <field> distintos de name.