Page tree
Skip to end of metadata
Go to start of metadata

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.

Beispiel für einen DataID-Provider

<io-provider>

<type>DataId</type>

<config>

<dataId>qy_nameOfADataId</dataId>

<params>

<parametername>OptionalInputChannel.parameterValue</parametername>

<params>

<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 > params

Um Parameter für die Abfrage der DataID zu definieren, wird der Tag <params> verwendet.

Die einzelnen Parameter, die an die DataID übergeben werden sollen, werden über weitere Tags definiert. Dabei entscheidet der umschließende Tag über den Namen, unter dem der Parameter übergeben wird. Der Wert bezieht sich auf einen der konfigurierten InputChannels und wird als Selektor evaluiert.

Das bedeutet, dass Eigenschaften verschachtelter Objekte über "." getrennt werden, während Elemnte einer Liste über eckige Klammern und den jeweiligen Index (startend bei 0) selektiert werden, z.B. "[0]" für das erste Element.

Beispiel für die Übergabe von Parametern an einen DataID-Provider

Daten im Inputchannel "SelectedChannel":

Dieser Inputchannel wird mit den selektierten Zeilen einer Tabelle befüllt (→ Outputchannel "selected" des Tabellenwidgets)

[
	{"ID": 1, "cellValue": "My Value"}
]

Konfiguration des DataID-Providers:

Hier wird über "<myParameterName>SelectedChannel[0].cellValue</myParameterName>" konfiguriert, dass ein Parameter mit dem Namen "myParameterName" an die DataID übergeben wird. Dieser hat den Wert "My Value", da aus dem Inputchannel "SelectedChannel" der erste Eintrag der Liste ("[0]") und schließlich die Eigenschaft "cellValue" (".cellValue") selektiert wird. 

<io-provider>
	<type>DataId</type>
	<config>
		<dataId>qy_nameOfADataId</dataId>
		<params>
			<myParameterName>SelectedChannel[0].cellValue</myParameterName>
		<params>
		<triggerParams>
			<mandatory>SelectedChannel</mandatory>
		</triggerParams>
		<output>OutputChannel</output>
	</config>
</io-provider>

(error)

<params>

<parametername>OptionalInputChannel.parameterValue</parametername>

</params>

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>

Beispiel zu <converter>-Formaten

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>
  • No labels