Zum Hauptinhalt springen
Version: 4.1 (2026 H2)

ProviderPipeline


Über die DataProvider in primedocs kann eine Suche ausgeführt werden, und die Daten werden anschliessend dem Benutzer präsentiert.
Für Endpunkte, bei denen über eine Suchanfrage bereits alle Daten übermittelt werden, ist dieses Vorgehen ausreichend.
Für den Fall, dass eine Suchanfrage zwar wesentliche, aber nicht alle Daten zurückliefert, kann die ProviderPipeline eingesetzt werden.

Die ProviderPipeline ermöglicht es, für die Suche einen eigenen DataProvider zu hinterlegen. Wenn der Benutzer den entsprechenden Datensatz selektiert, wird ein Nachladen weiterer Details über einen zusätzlichen DataProvider ausgelöst.

Searching & Loading

Die ProviderPipeline verhält sich wie ein gewöhnlicher DataProvider, ist jedoch in zwei “Phasen” unterteilt:

<ProviderPipeline DisplayName="Zefix">
<Searching>
...
</Searching>
<Loading>
...
</Loading>
</ProviderPipeline>

In beiden Phasen können DataProvider konfiguriert werden — ausser dem ExistingListDataProvider und der ProviderPipeline selbst. Es ist auch erlaubt, im Searching-Schritt einen anderen DataProvider zu verwenden als im Loading-Schritt.

Die beiden Phasen unterscheiden sich in den erlaubten Einstellungen:

  • Searching: Der eigentliche Suchschritt. SearchParameters können hier definiert werden; fehlen sie, wird ohne Eingabemaske automatisch über den gesamten Bestand gesucht.
  • Loading: Hier dürfen keine SearchParameters definiert werden. Der CodeDataProvider nimmt zudem nicht an der Loading-Phase teil, da er keinen flachen Suchschritt besitzt, der beim Laden neu zugeordnet werden könnte.

Der DisplayName wird ausschliesslich auf dem ProviderPipeline-Element gesetzt, nicht auf den Providern innerhalb von Searching/Loading.

Suchparameter & Datennachladen

Im Searching-Schritt können SearchParameters für die Suche angegeben werden. Fehlen sie, wird ohne Eingabemaske automatisch über den gesamten Bestand gesucht.
Das Suchresultat muss auf dem Schema des Objects bzw. der ObjectCollection basieren.

Im Loading-Schritt kann dann auf die Felder des Suchresultats zugegriffen werden, um z. B. mit einer ID weitere Details nachzuladen.
Im Loading dürfen darüber hinaus keine SearchParameters definiert werden.

Beispiel

Im Beispiel werden Firmendaten über den Zefix Dienst abgefragt.

Hierbei bekommt man den Namen und die Identifikationsnummer als Suchresultat geliefert. Wählt der Benutzer die Suchresultate aus, werden automatisch die Adressdaten nachgeladen.

<ProviderPipeline DisplayName="Zefix">
<Searching>
<HttpDataProvider>
<SearchParameters>
<Text Id="Query" Label="Query" />
</SearchParameters>
<Configuration>
<Step>
<Request Method="Post">
<Url>https://www.zefix.admin.ch/ZefixPublicREST/api/v1/company/search</Url>
<Header Name="Authorization" Value="Basic [ZEFIX-AUTH-KEY]" />
<Header Name="Content-Type" Value="application/json" />
<Header Name="accept" Value="application/json" />
<Body>{
"name": "{Query}",
"activeOnly": true
}</Body>
</Request>
<Response>
<Data JsonPath="$.[*]">
<Mapping>
<Map Source="uid" Target="uid" />
<Map Source="name" Target="name" />
</Mapping>
</Data>
</Response>
</Step>
</Configuration>
</HttpDataProvider>
</Searching>
<Loading>
<HttpDataProvider>
<Configuration>
<Step>
<Request Method="Get">
<Url>https://www.zefix.admin.ch/ZefixPublicREST/api/v1/company/uid/{uid}</Url>
<Header Name="Authorization" Value="Basic [ZEFIX-AUTH-KEY]" />
<Header Name="Content-Type" Value="application/json" />
<Header Name="accept" Value="application/json" />
</Request>
<Response>
<Data JsonPath="$.[*]">
<Mapping>
<Map Source="uid" Target="uid" />
<Map Source="name" Target="name" />
<Map Source="address.street" Target="street" />
<Map Source="address.houseNumber" Target="houseNumber" />
<Map Source="address.city" Target="city" />
<Map Source="address.swissZipCode" Target="swissZipCode" />
</Mapping>
</Data>
</Response>
</Step>
</Configuration>
</HttpDataProvider>
</Loading>
</ProviderPipeline>