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