ProviderPipeline

ProviderPipeline


Über die DataProvider in primedocs kann eine Suche ausgeführt werden, und die Daten werden anschließend 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>

Innerhalb von Searching und Loading können alle DataProvider außer dem ExistingListDataProvider (sowie der ProviderPipeline selbst) konfiguriert werden. Es ist auch erlaubt, im Searching-Schritt einen anderen DataProvider zu verwenden als im Loading-Schritt.

Suchparameter & Datennachladen

Im Searching-Schritt müssen SearchParameters für die Suche angegeben werden.
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>

 

PrimeSoft AG, Bahnhofstrasse 4, 8360 Eschlikon, Switzerland