Note
Dit voorbeeld maakt gebruik van de preview functionaliteit "Bevragen registraties", welke onder Configuratie > Algemene configuratie > Feature flags, test- en ontwikkelinstellingen in te schakelen is.
In dit voorbeeld maken we een deel van een formulier bestaande uit één stap. De uitgangspunten zijn:
- de dummyjson-service bied een lijst van productcategorieën aan
- de service biedt ook een lijst van producten aan, per categorie
- na selectie van een categorie halen we de beschikbare producten uit die categorie op
De keuzelijsten voor categorieën en producten worden dus dynamisch opgebouwd op basis van data uit een externe service.
We gaan ervan uit dat u een :ref:`formulier met geavanceerde logica <example_advanced_logic>` kunt maken.
Maak een formulier aan met de volgende gegevens:
- Naam: Productaanvraag
Klik op het tabblad Stappen en velden.
Klik aan de linkerkant op Stap toevoegen en selecteer Maak een nieuwe formulierdefinitie.
Onder de sectie (Herbruikbare) stapgegevens vul het volgende in:
- Naam: Productkeuze
Sleep een Keuzelijst component op het witte vlak, vul de volgende gegevens in en druk daarna op Opslaan:
- Label: Categorie
- Scroll naar beneden en selecteer bij Keuzeopties
variabele
- Vul bij Opties-expressie het volgende in:
{"var": "catagorieen"}
Sleep een Keuzelijst component op het witte vlak, vul de volgende gegevens in en druk daarna op Opslaan:
- Label: Product
- Scroll naar beneden en selecteer bij Keuzeopties
variabele
- Vul bij Opties-expressie het volgende in:
{"var": "producten"}
Klik op de Variabelen tab in het formuliermenu en vervolgens op de Gebruikersvariabelen tab
Klik op Variabele toevoegen
Voer bij Naam
Categorieën
in en kies bij DatatypeLijst (array)
Klik op Variabele toevoegen
Voer bij Naam
Producten
in en kies bij DatatypeLijst (array)
Klik op de Logica tab in het formuliermenu
Klik op Regel toevoegen, gevolgd door Geavanceerd.
Vul bij Triggervoorwaarde deze JsonLogic in:
{"!": [{"var": "categorieen"}]}
Klik op Actie Toevoegen en selecteer
- dan haal de waarde op uit een externe registratie
- Categorieën (categorieen)
- Klik op Instellen
- Vul bij Naam
Haal categorieën op
in - Selecteer bij HTTP-method
GET
- Selecteer bij Service
dummyJSON
- Vul bij Pad
products/categories
in - Selecteer bij Soort mappingexpressie
jq
- Vul bij Mappingexpressie
sort
in
- Vul bij Naam
- Klik op Opslaan
Note
Omdat het antwoord van de dummyJSON service ongesorteerd is, gebruiken we de jq sort functie, zodat de opties in de keuzelijst op alfabetische volgorde komen.
Deze actie betekent: als
categorieen
leeg is, bevraag dan de dummyJSON service voorproducts/categories
, sorteer het antwoord en sla deze lijst van strings op in de variabele``categorieen``.Klik op Regel toevoegen, gevolgd door Geavanceerd.
Vul bij Triggervoorwaarde deze JsonLogic in:
{"!!": [{"var": "categorie"}]}
Klik op Actie Toevoegen en selecteer
dan haal de waarde op uit een externe registratie
Producten (producten)
Klik op Instellen
- Vul bij Naam
Haal producten in categorie op
in - Selecteer bij HTTP-method
GET
- selecteer bij Service
dummyJSON
- Vul bij Pad
products/category/{{ categorie }}
in - Selecteer bij Soort mappingexpressie
JsonLogic
- Vul bij Mappingexpressie het volgende in:
{"map": [ {"var": "products"}, {"merge": [ {"var": "id"}, {"var": "title"} ]} ]}
- Vul bij Naam
Klik op Opslaan
Note
Deze actie betekent: als er een
categorie
is gekozen, bevraag dan de dummyJSON service voorproducts/category/{{ categorie }}
met de gekozen categorie in het pad, neem van elk product object in hetproducts
attribuut van het antwoord, deid
entitle
en sla de resulterende lijst van lijsten van 2 strings op in de variabele``producten``.Klik onderaan op Opslaan om het formulier volledig op te slaan.
U kunt nu het formulier bekijken.
Eventueel kunt u extra acties aan de regels toevoegen, zodat de Product
keuzelijst alleen zichtbaar is wanneer er een categorie gekozen is:
Warning
Het bevragen van services kost tijd en kan de formulierlogica vertragen, omdat er op antwoorden gewacht moet worden. Probeer door handig gebruik van variabelen en triggers, deze bevragingen tot een minimum te beperken.
"Bevragen registraties" is nog geschikt voor gebruik, maar nog onvolledig. Bekende missende of beperkte functionaliteiten zijn onder andere:
Door de agile aard van de ontwikkeling staan deze issues staan op het moment niet op een roadmap.
Daarnaast kan de manier van invoegen van formulierdata in de bevragingen van
syntax veranderen. Op dit moment kunt u met de bekende {{ variabelesleutel
}}
syntaxis, waarden invoegen in
- Pad
- waarden van Query-parameters (niet de sleutels)
- waarden van Request-headers (niet de sleutels)
- Body