Der DataID-Provider ermöglicht es eine DataID auszuführen und das Ergebnis in YUNA-Dashboards zu integrieren.


Beispielgrafik: Ausführung einer DataID gesteuert über ein Formularwidget und anschließende Darstellung in einem Tabellenwidget:

  1. Bei Betätigung des Absenden-Buttons im Formularwidget wird die DataID an den Output-Channel des Formularwidgets übergeben.
  2. Die durch den IO-Channel bereitgestellten Daten werden durch den DataID-Provider konsumiert, da dieser IO-Channel als Input konfiguriert ist.
  3. Der DataID-Provider führt die DataID auf der Datenbank aus.
  4. Die Datenbank liefert das Ergebnis der DataID an den DataID-Provider.
  5. Das Ergebnis wird in den Output-Channel des DataID-Providers übergeben.
  6. Das Tabellenwidget erhält die neuen Daten aus dem IO-Channel und kann diese darstellen.

Beispielkonfigurationen für DataID-Provider:

Durch klick auf die verschiedenen YUNAML-Elemente gelangen sie zu den jewiligen detaillierten Informationen in der folgenden Tabelle.

Kursive Elemente beziehen sich auf andere Inhalte ihrer YUNAML-Dashboards, wie z.B. Namen von DataIDs oder IO-Channels.

<io-provider>

<type>DataId</type>

<config>

<dataId>qy_nameOfADataId</dataId>

<triggerParams>

<optional>OptionalInputChannel</optional>

</triggerParams>

<output>OutputChannel</output>

</config>

</io-provider>

Konfiguration des DataID-Providers

YUNAML-TagBeschreibungKonfiguration erforderlich?Beispiel

type

Der Typ des IO-Providers. Für den DataID-Provider muss dieser Parameter auf "DataID" gesetzt werden.

Weitere mögliche Werte sind "UrlParams" und "HTTP".

(tick)<type>DataId<http>

config

Die verschiedenen Konfigurationsparameter des DataID-Providers.

(tick)

config > dataId

Die auszuführende DataID des DataID-Providers.

(tick)

<dataId>dataIdName</dataId>

config > triggerParams

Um den Zeitpunkt für die Ausführung der DataID zu konfigurieren, werden die Trigger-Parameter in drei YUNAML-Tags definiert: <trigger>, <mandatory> und <optional>.

Bei jeder Änderung eines Channels, der in mindestens einem dieser Tags definiert ist, wird geprüft, ob eine Anfrage durchgeführt werden soll. Dabei werden folgende Bedingungen geprüft:

  1. Nur wenn Channel in <trigger> definiert sind: Wurde ein <trigger>-Channel aktualisiert?
  2. Nur wenn Channel in <mandatory> definiert sind: Wurden alle <mandatory>-Channel mit Daten befüllt?

Sind weder <trigger>- noch <mandatory>-Channel definiert, wird bei jeder Änderung eines in <optional> angegebenen Kanals eine Anfrage ausgeführt.

Ein Channel kann sowohl <trigger> als auch <mandatory> sein.

Sollen mehrere Channel in einem der drei Tags definiert werden, müssen diese in <list>-Tags angegeben werden.

(error)

<triggerParams>

<trigger>someChannel</trigger>

<mandatory>

<list>mandatoryChannel</list>

</mandatory>

<optional>

<list>optionalChannel1</list>

<list>optionalChannel2</list>

</optional>

</triggerParams>

config > triggerParams > trigger

(error)
config > triggerParams > mandatory(error)
config > triggerParams > optional(error)

config > output

Unter <output> wird konfiguriert, in welchen IO-Channel das Ergebnis der DataID veröffentlicht wird.

(error)

<output>OutputChannel</output>

config > converter

Dieser Konfigurationsparameter sollte nur in wenigen Anwendungsfällen angepasst werden und ist daher für erfahrene Anwender vorgesehen.

Definiert, in welchem Format das Ergebnis der DataID-Abfrage in den Output-Channel veröffentlicht wird.

Es werden zwei Formate unterstützt: 'row' und 'col'. Für Details siehe das Beispiel zu <converter>-Formaten.

(error)

Default: row

<converter>col</converter>

Selektierte Daten:

IDName
1Heinz
2Sabine
3Stefan

Die veröffentlichten Daten im 'row'-Format:

{
	"dataQueryResult": {
		"rows": [
			{"ID": 1, "Name": "Heinz"},
			{"ID": 2, "Name": "Sabine"},
			{"ID": 3, "Name": "Stefan"}
		],
		"header": ["ID", "Name"]
	}
}

Die veröffentlichten Daten im 'col'-Format:

{
	"dataQueryResult": {
		"columns": {
			"ID": [1, 2, 3],
			"Name": ["Heinz", "Sabine", "Stefan"]	
		},
		"header": ["ID", "Name"]
	}
}

Beispiel

In diesem Beispiel wird über den DataID-Provider eine Data-ID ausgeführt. Das Ergebnis wird anschließend in einem Tabellen-Widget dargestellt.

<xml>
  <view name="DataID-Provider" roles="System_Admin, AdHoc_Full_Issue">
    <caption>DataID-Provider</caption>
    <description>IO-Provider example</description>
    <userdocu>https://confluence.eoda.de/display/DD1/.IO-Provider</userdocu>

    <!-- DATA-ID IO-Provider -->
    <io-provider>
      <type>DataId</type>
      <config>
        <!-- define the DATA-ID -->
        <dataId>qy_dataid_provider_example</dataId>
        <triggerParams>
          <!-- define the parameters, which will trigger the DATA-ID -->
          <trigger>buttonPressed</trigger>
        </triggerParams>
        <!-- define the outputchannel, where the result from the DATA-ID will go -->
        <output>dataFromQuery</output>
      </config>
    </io-provider>

    <!-- Form-Widget for DATA-ID IO-Provider-->
    <widget>
      <widgettype>formwidget</widgettype>
      <caption>
        <show>true</show>
        <label>DATA-ID Form</label>
      </caption>
      <position>
        <x>0</x>
        <y>0</y>
      </position>
      <size>
        <x>2</x>
        <y>2</y>
      </size>
      <outputs>
        <!-- on submit, buttonPressed will trigger the DATA-ID -->
        <submit>buttonPressed</submit>
      </outputs>
      <submitButton>
        <label>Run Query!</label>
      </submitButton>
      <formTemplate>
        <![CDATA[
<div>
<p>Run query and show data</p>
</div>
]]>
      </formTemplate>
    </widget>

    <!-- Table-Widget for DATA-ID IO-Provider-->
    <widget name="tbl_dataid_device_basic_info">
      <widgettype>tabledirective</widgettype>
      <caption>
        <show>true</show>
        <label>Data from DATA-ID IO-Provider</label>
      </caption>
      <position>
        <x>2</x>
        <y>0</y>
      </position>
      <size>
        <x>16</x>
        <y>4</y>
      </size>
      <sorting>ProductGroup</sorting>
      <sortingorder>asc</sortingorder>
      <inputs>
        <!-- get the data from the DATA-ID IO-Provider -->
        <!-- takes the data json in row format -->
        <data>dataFromQuery</data>
      </inputs>
      <generalOptions>
        <addColumns>true</addColumns>
        <selectable>false</selectable>
      </generalOptions>
    </widget>
  </view>
</xml>