Communicatie hulpfuncties
Concept
Maak gebruik van hulpfuncties zoals if
, ifCond
, latestMilestone
of latestTask
om logica en dynamische inhoud aan je template toe te voegen. Hierdoor kun je een flexibele template configureren die een groot aantal scenario's afdekt, in plaats van dat je verschillende vaste templates moet bouwen en onderhouden om elk mogelijk scenario af te dekken. Andere hulpelementen zoals {{dossier.label}}
en formuliervelden voegen dossierinformatie toe aan de communicatie. Merk op dat al deze elementen met elkaar gecombineerd kunnen worden (je kan ze bijvoorbeeld nesten).
Overzicht van hulpfuncties
dossierLabel
{{dossier.label}}
Voegt het dossierlabel in.
Het configureren van het label gebeurt in de dossiertype instellingen. Zie Dossierlabelformaat
. Let op dat het dossierlabelformaat (bijv. '2024-TestDossier-001') anders kan zijn afhankelijk van het feit je het dossier bekijkt vanuit de frontoffice of de backoffice. Deze hulpfunctie voegt het label zoals gezien vanuit de backoffice toe.
Voorbeeld: Je aanvraag is geaccepteerd. De referentie van je dossier is {{dossier.label}}
.
if
{{#if field}}
content A {{else}}
content B {{/if}}
Dynamische inhoud. Als een gespecificeerd formulierveld waar retourneert, wordt Content A zichtbaar. Als het veld niet waar retourneert, wordt Content B zichtbaar.
Voorbeeld 1: controleer of een formulierveld waar retourneert
Voor de lunch neem je {{#if docs.requestBooking.vegetarian}}
falafel. {{else}}
biefstuk. {{/if}}
Voorbeeld 2: controleer of een formulierveld een waarde heeft
Je hebt {{#if docs.requestBooking.emailAddress}}
een e-mail adres opgegeven. {{else}}
geen e-mailadres opgegeven. {{/if}}
ifCond
{{#ifCond field operator="=" expected="expectedValue"}}
content A {{else}}
content B {{/ifCond}}
Dynamische inhoud. Als de opgegeven vergelijking true
retourneert, wordt Content A zichtbaar. Als de vergelijking false
retourneert, wordt Content B zichtbaar.
Er moeten drie parameters worden opgenomen:
field
(eerste deel van de vergelijking, veldwaarde kan een string, getal of booleaan zijn),operator
(bepaalt de wijze van vergelijken, ondersteunde operatoren staan hieronder in een lijst),expected
(tweede deel van de vergelijking, type moet overeenkomen met eerste deel van de vergelijking).
Als het veld van het type map is (een object met enkele key-value pairs), is een vierde parameter nodig:
key
(wijst naar de juiste key in het object waarnaar wordt verwezen).
Voorbeelden
Voorbeeld: Controleer of twee formuliervelden van elkaar verschillen.
{{#ifCond docs.entranceForm.email operator="!=" expected=docs.userProfile.e-mail}}
Het lijkt erop dat je een e-mailadres hebt ingevoerd dat niet overeenkomt met het e-mailadres in je gebruikersprofiel.{{else}}
Het ingevoerde e-mailadres komt overeen met het e-mailadres in je gebruikersprofiel.{{/ifCond}}
Voorbeeld: Controleer of twee formuliervelden exact dezelfde waarde bevatten.
{{#ifCond docs.entranceForm.email operator="=" expected=docs.userProfile.e-mail}}
Het ingevoerde e-mail adres komt overeen met het e-mail adres in je gebruikersprofiel.{{else}}
Het lijkt erop dat je een e-mailadres hebt ingevoerd dat niet overeenkomt met het e-mailadres in je gebruikersprofiel.{{/ifCond}}
Voorbeeld: Controleer of een lijst minstens één item bevat.
{{#ifCond docs.customerInfo.customerPreferences.elements.length operator="=" expected=0}}
De lijst is leeg.{{else}}
De lijst bevat een of meer vermeldingen.{{/ifCond}}
De methode.elements.length
retourneert een getal dat gelijk is aan het aantal items in de lijst.Voorbeeld: Controleer of een multiselect veld geselecteerde items bevat.
{{#ifCond docs.customerInfo.favouriteColors operator="=" expected=null}}
Er zijn geen favoriete kleuren geselecteerd.{{else}}
Er moeten enkele favoriete kleuren zijn geselecteerd.{{/ifCond}}
Voorbeeld: Controleer of een van twee formuliervelden waar is.
Toegangsprijs is{{#ifCond docs.entranceForm.isChild operator="||" expected=docs.entranceForm.is65+}}
10 euro.{{else}}
15 euro.{{/ifCond}}
Als een persoon in de categorie kind (booleaans) OF 65+ (booleaans) valt, is de entreeprijs 10 euro. Als de persoon in een andere leeftijdscategorie valt, is de entreeprijs 15 euro.Voorbeeld: Controleer of beide formuliervelden waar zijn.
Toegangsprijs is{{#ifCond docs.entranceForm.isChild operator="&&" expected=docs.entranceForm.hasVoucher}}
10 euro.{{else}}
15 euro.{{/ifCond}}
Als een persoon in de categorie kind valt (booleaan) EN een voucher heeft (booleaan), dan is de entreeprijs 10 euro. Als de persoon niet aan beide condities tegelijk voldoet, is de entreeprijs 15 euro.Voorbeeld: Controleer of een specifieke optie is geselecteerd in een veld met keuzes. Check op key van de optie. Toegangsprijs is
{{#ifCond docs.entranceForm.ticketType.selectedOption operator="=" expected="premium"}}
20 euro.{{else}}
15 euro.{{/ifCond}}
Als het ticket van een persoon van het type premium is, is de entreeprijs 20 euro. Zo niet, dan is de entreeprijs 15 euro.Voorbeeld: Controleer of een specifieke optie is geselecteerd in een veld met keuzes. Check op label van de optie. Toegangsprijs is
{{#ifCond docs.entranceForm.ticketType.selectedOptionLabel.nl operator="=" expected="Premium ticket"}}
20 euro.{{else}}
15 euro.{{/ifCond}}
Als het ticket van een persoon van het type premium is, is de entreeprijs 20 euro. Zo niet, dan is de entreeprijs 15 euro.Voorbeeld: Controleer of een getalwaarde kleiner is dan een andere getalwaarde.
Toegangsprijs is{{#ifCond docs.entranceForm.yourLength operator="<" expected=130}}
10 euro.{{else}}
15 euro.{{/ifCond}}
Als iemands lengte (getal) minder is dan 130 cm (getal), dan is de entreeprijs 10 euro. Als de lengte gelijk is aan of meer is dan 130 cm, dan is de entreeprijs 15 euro.Voorbeeld: Controleer of een specifieke optie is geselecteerd in een veld voor meerkeuze. Check op key van de optie.
{{#ifCond docs.entranceForm.selectFavoriteDishes.selectedOptions operator="contains" expected="lobster"}}
Je houdt van kreeft.{{else}}
Je houdt niet van kreeft.{{/ifCond}}
Voorbeeld: Controleer of een specifiek key waarde paar in een lijst staat.
{{#ifCond docs.entranceForm.listPeople.elements operator="contains" key="ageGroup" expected="child"}}
In de lijst is een kind geregistreerd.{{else}}
Er is geen kind geregistreerd in de lijst.{{/ifCond}}
Als een lijst met personen en hun eigenschappen een persoon (een item) bevat waarvan de eigenschap “ageGroup” is ingesteld op “child”, dan wordt de tekst “In de lijst is een kind geregistreerd” weergegeven. Zo niet, dan wordt de tekst “Geen kind geregistreerd” weergegeven.
Lijst van ondersteunde operatoren:
Operator | Beschrijving | Eenvoudig voorbeeld |
---|---|---|
= | geeft true terug als de vergeleken waarden precies overeenkomen |
|
!= | geeft true als de vergeleken waarden niet overeenkomen |
|
&& | AND, geeft true als beide (booleaanse) waarden true zijn; als een van de waarden niet van het type booleaans is (het is bijvoorbeeld een string), krijg je een foutmelding. |
|
|| | OR, geeft true als een van de twee (booleaanse) waarden true is; als een van de waarden niet van het type booleaans is (bijvoorbeeld een string), krijg je geen foutmelding, maar wordt false geretourneerd. |
|
< | Geeft true als de eerste waarde kleiner is dan de tweede. Werkt alleen met getalwaardes. |
|
> | Geeft true als de eerste waarde groter is dan de tweede. Werkt alleen met getalwaardes. |
|
<= | Kleiner dan of gelijk aan. Werkt alleen met getalwaardes. |
|
>= | Groter dan of gelijk aan. Werkt alleen met getallen. |
|
contains | geeft true als een lijst met waarden een specifieke waarde bevat, het werkt ook met een map (lijst met key-value pairs). | Lijst:
Map:
|
Specifiek gedrag van de contains
operator bij lijsten en maps.
Lijst (e.g. waarde van een meerkeuze veld) | Lijst-Map (e.g. lijst van objecten met key-value pairs) | |
---|---|---|
Value of list or map | [“Jan”,”Mieke”,”Paul”,”Piet”] | [{“naam”:”Jan”,”geslacht”:”M”},{“naam”:”Mieke”,”geslacht”:”V”},{“naam”:”Paul”,”geslacht”:”M”},{“naam”:”Piet”,”geslacht”:”M”}] |
| true | false |
| false | false |
| true | true |
| false | false |
| true | false |
| false | false |
each
{{#each docs.list.elements}}
Inhoud van de lijst, bijvoorbeeld {{title}}
. {{/each}}
Herhaal inhoud voor elk item in de opgegeven lijst. De lengte van de lijst is niet vooraf gedefinieerd en elke invoer kan een complexe reeks waarden van verschillende types zijn.
De informatie die je wilt weergeven voor elk item in de lijst, moet worden weergegeven vanuit de key van de lijst. Dus {{docs.keyForm.keyList.title}}
moet eenvoudig worden weergegeven als {{title}}
. Een bijzondere toepassing van de each-hulpfunctie vind je binnen de context van een bulkdossier. Voor meer uitleg, zie voorbeeld 4 hieronder.
Voorbeeld 1: lijst van items met enkele eigenschappen
De gebruiker voert een lijst met voorkeuren in. Elke voorkeur heeft een titel en een beschrijving. In je communicatie wil je elke titel visualiseren (maar niet de beschrijving). Merk op dat je .elements
moet toevoegen na de key van de lijst om toegang te krijgen tot de inhoud.
{{#each docs.keyForm.keyList.elements}}
-{{titel.value}}
{{/each}}
Dit resulteert in de volgende lijst (voorbeeld):
Titel van item 1
Titel van item 2
Titel van item 3
...
Als je ook de beschrijving wilt toevoegen, gebruik dan de volgende syntaxis:
{{#each docs.keyForm.keyList.elements}}
-{{titel.value}}
: {{beschrijving.value}}
.
{{/each}}
Dit resulteert in de volgende lijst (voorbeeld):
Titel van vermelding 1: beschrijving van vermelding 1.
Titel van vermelding 2: beschrijving van vermelding 2.
Titel van vermelding 3: beschrijving van vermelding 3.
…
Als je geen lijst met opsommingstekens wil gebruiken, maar een door komma’s aaneengeschakelde lijst, kan je een beroep doen op de {{#unless @last}}
hulpfunctie.
{{#each docs.formulierAanvraag.redenen.elements}}{{reden}}{{#unless @last}}, {{/unless}}{{/each}}
Resulteert in (voorbeeld):
reden 1, reden 2, reden 3, reden 4
Voorbeeld 2: lijst met geselecteerde opties (meerkeuze veld)
De gebruiker selecteert een of meer opties (kleuren) uit een meerkeuzeveld (favoriete kleuren). In je communicatie wil je de geselecteerde kleuren visualiseren. Merk op dat je .selectedOptionsLabels
moet toevoegen na de key van het meerkeuze veld. De werkelijke waarde van elk label wordt weergegeven door de taalvariant, in dit geval Engels {{en}}
.
{{#each docs.keyForm.keyMultiChoice.selectedOptionsLabels}}
- {{nl}}
{{/each}}
Dit resulteert in de volgende lijst (voorbeeld):
Oranje
Wit
Roze
Voorbeeld 3: lijst van items met enkele eigenschappen en een geneste lijst met geselecteerde opties (meerkeuze veld)
Voeg wat complexiteit toe door een meerkeuze veld in je lijst op te nemen. Elk item in je lijst vertegenwoordigt een persoon. En voor elke persoon worden een aantal eigenschappen gedefinieerd, waaronder een lijst met favoriete kleuren.
{{#each docs.keyForm.keyList.elements}}
- {{friend}}
: {{#each colors.selectedOptionsLabels}}{{nl}}
, {{/each}}
{{/each}}
Dit resulteert in de volgende lijst (voorbeeld):
Vriend 1: wit, rood, blauw,
Vriend 2: wit
Vriend 3: rood, groen,
...
Voorbeeld 4: lijst van geselecteerde dossiers binnen de contect van een bulkdossier
Een bulkdossier is een dossier waarin je werkt met een lijst van individuele dossiers. Binnen dat bulkdossier is het mogelijk om een communicatie te genereren waarin je die lijst van individuele dossiers kan weergeven. Voor elke entry (dus voor elk individueel dossier) kan je bijkoende details ophalen.
{{#each (bulkSelectedDossiers dossier.id)}}
{{#dossierDetails this}}
Label van gelesecteerd dossier: {{ dossier.label }}
Label van bulk dossier: {{ ../dossier.label }}
{{/dossierDetails}}
{{/each}}
userDetails
{{#userDetails usersub}}
{{username}}
{{/userDetails}}
Geeft details over de opgegeven gebruikerssub.
Eigenschap gebruiker | Beschrijving |
---|---|
| Status van de gebruiker. Geeft |
| Timestamp wanneer gebruiker is aangemeld. |
| E-mailadres van de gebruiker. |
| Telefoonnummer van de gebruiker. |
| Sub van de gebruiker. Een gebruiker kan meerdere subs hebben. |
| Team waartoe de gebruiker behoort. |
| Groep waartoe de gebruiker behoort. |
| Naam van de gebruiker. |
De userDetails
hulpfunctie zal in de meeste gevallen worden gebruikt in combinatie met de assignee
eigenschap die wordt geretourneerd door de latestTask
hulpfunctie.
Voorbeeld: {{#latestTask dossier.task names="TaskKey1"}}
Laatst aangemaakte taak was {{name}}
, aangemaakt op {{created}}
en toegewezen aan {{#userDetails assignee}}
{{username}}
{{/userDetails}}
. {{else}}
Er is geen dergelijke taak aangemaakt {{/latestTask}}
. Als een laatste taak van het gespecificeerde type wordt gevonden, worden de eigenschappen zoals naam, tijdstempel en uitvoerder geretourneerd. De eigenschappen van de uitvoerder worden dan doorgegeven aan de hulpfunctie userDetails
om details op te halen voor de toegewezen gebruiker (bijv. de gebruikersnaam).
date
{{date now format="dd-MM-yyyy"}}
Voegt een datum in.
By default wordt now
als parameter gebruikt. Hiermee wordt de datum ingesteld op de dag waarop de communicatie wordt gegenereerd. Je kunt ook een veldreferentie zoals docs.bookingRequest.date
gebruiken. Je kunt zelfs een datum berekenen. Bijvoorbeeld, now add="P5M"
voegt 5 maanden toe aan de huidige datum. De format
parameter bepaalt het gewenste uitvoerformaat. Alleen ISO-compliant datumnotaties worden geaccepteerd waarin “d” staat voor dag, “M” staat voor maand en “y” staat voor jaar. Bijvoorbeeld, format=“yyyy/MM/dd” geeft “2024/12/30”.
Voorbeeld: {{datum docs.bookingRequest.date add="P100D" format="dd-MM-yyyy"}}
Dit voegt 100 dagen toe aan de waarde van het veld bookingRequest.date
en specificeert het uitvoerformaat. Dus als de invoer datum 14 oktober 2024 is, zal de uitvoer 25-01-2025 zijn.
Nog een voorbeeld waarbij het uitvoerformaat van de datum wordt gewijzigd.
Voorbeeld: {{datum docs.bookingRequest.date format="dd MMMM yyyy" language="nl"}}
Dit zal resulteren in iets als “25 januari 2025”.
number
{{number docs.requestBooking.priceOfMeal decimalLength='2' thousandsSep='.' decimalSep=','}}
Bepaalt de opmaak van getallen. Geef duizendtallenscheidingsteken en decimaal scheidingsteken op (bijvoorbeeld 1.300,55 met '.' als duizendtallenscheidingsteken en ',' als decimaal scheidingsteken).
Voorbeeld: 1.300,55
{{number field decimalLength='2' thousandsSep='.' decimalSep=','}}
Voorbeeld: 1 300.55
{{number field decimalLength='2' thousandsSep=' ' decimalSep='.'}}
Voorbeeld: 1 300.6
{{number field decimalLength='1' thousandsSep=' ' decimalSep='.'}}
index
{{index @index}}
Moet worden gebruikt in combinatie met de hulpfunctie each
. Geeft de positie van elk item in de lijst.
Voorbeeld: {{#each docs.keyForm.keyList.elements}}
{{index @index}}
. {{title}}
: {{description}}
{{/each}}
Geeft iets terug als:
Titel van item 1: beschrijving van item 1.
Titel van item 2: beschrijving van item 2.
Titel van item 3: beschrijving van item 3.
latestTask
{{#latestTask dossier.task names="TaskName"}}
Er is een taak aangemaakt. {{else}}
Er is geen taak aangemaakt. {{/latestTask}}
Speciale instantie van de ifCond
hulpfunctie die true teruggeeft als de opgegeven gebruikerstaak is aangemaakt. Als je meerdere gebruikerstaken opgeeft, geeft de hulpfunctie true terug zodra er één is aangemaakt (OR-logica). Om een specifieke gebruikerstaak te controleren, moet je de naam (niet de key) van de gebruikerstaak opgeven zoals gespecificeerd binnen de BPMN-workflow.
Voorbeeld:
{{#latestTask dossier.task names="Bereken prijs"}}
. De taak 'Bereken taak' is aangemaakt.{{else}}
De taak 'Bereken taak' is (nog) niet aangemaakt.{{/latestTask}}
Voorbeeld:
{{#latestTask dossier.task names="Bereken prijs,Bereken korting"}}
Laatst aangemaakte taak was{{name}}
, aangemaakt op{{created}}
.{{else}}
Er is geen taak van een van de opgegeven types aangemaakt.{{/latestTask}}
. Als een taak wordt geretourneerd, kan in de tekst worden verwezen naar eigenschappen zoals naam en tijdstempel.
Lijst met beschikbare eigenschappen van taken waarnaar kan worden verwezen binnen de latestTask
hulpfunctie.
Eigenschap taak | Beschrijving |
---|---|
| Status van de taak. Geeft |
| Unieke identificatie van de uitvoerder. |
| Tijdstempel wanneer de taak is aangemaakt. |
| Unieke identifier van het document (communicatie) gerelateerd aan de taak. |
| Tijdstempel wanneer de taak werd voltooid. |
| Unique identifier van de taak. |
| Naam van de taak. |
| Unique identifier van de gerelateerde procesinstantie. |
| Key van de taak zoals gedefinieerd binnen de BPMN-workflow. |
| Type gebruikerstaak (formulier, communicatie, bevestiging). |
Merk op dat naar deze eigenschappen ook kan worden verwezen binnen een geneste logica.
Voorbeeld: {{#latestTask dossier.task names="TaskKey1"}}
De taak is aangemaakt, {{#if active}}
maar is nog niet voltooid. {{else}}
en is voltooid. {{/if}}
{{else}}
De taak is nog niet aangemaakt. {{/latestTask}}
. Als een laatste taak wordt geretourneerd, kun je controleren of deze nog steeds actief is en dienovereenkomstig een passende tekst weergeven.
latestMilestone
{{#latestMilestone dossier.milestones keys="requestConfirmed"}}
Uw aanvraag werd bevestigd. {{else}}
Uw aanvraag werd nog niet bevestigd. {{/latestMilestone}}
Speciale instantie van de ifCond
hulpfunctie die true retourneert als een specifieke mijlpaal is bereikt. Als je meerdere mijlpalen opgeeft, geeft de hulpfunctie true terug zodra één ervan is bereikt (OR-logica). Om een specifieke mijlpaal te controleren, moet je de key (niet de naam) van het signal throw event gebruiken, zoals gespecificeerd in het BPMN proces.
Voorbeeld:
{{#latestMilestone dossier.milestones keys="requestConfirmed"}}
Uw aanvraag werd bevestigd.{{else}}
Uw aanvraag werd nog niet bevestigd.{{/latestMilestone}}
Voorbeeld:
{{#latestMilestone dossier.milestones keys="accessDenied,accessGranted"}}
Uw toegangsrechten werden ingesteld. Resultaat:{{status}}
.{{else}}
Uw toegangsrechten werden nog niet ingesteld.{{/latestMilestone}}
Hier zijn twee mijlpalen gespecificeerd. Als één van beide mijlpalen is bereikt, retourneert de hulpfunctie true en wordt de status van de laatst behaalde mijlpaal gevisualiseerd (bijv. “Je toegangsrechten zijn vastgesteld. Resultaat: Toegang geweigerd.”). Als geen van beide mijlpalen is bereikt, retourneert de hulpfunctie false (“Uw toegangsrechten zijn nog niet vastgesteld.”).
Lijst met beschikbare mijlpaal eigenschappen waarnaar verwezen kan worden in de latestMilestone
hulpfunctie..
Milestone eigenschap | Beschrijving |
---|---|
| Unique identifier van de mijlpaal. |
| Key van het signal throw event zoals gedefinieerd in de BPMN-workflow. |
| Status beschrijving van de mijlpaal (bijv. ‘Toegang geweigerd.’). |
| Tijdstempel van de bereikte mijlpaal. |
Merk op dat je ook binnen een geneste logica kan verwijzen naar deze eigenschappen.
voorbeeld: {{#latestMilestone dossier.milestones keys="accessDenied,accessGranted"}}
{{#ifCond status operator="=" expected="Access denied"}}
Toegang geweigerd. {{else}}
Toegang verleend. {{/ifCond}}
{{else}}
Uw toegangsrechten zijn nog niet vastgesteld. {{/latestMilestone}}
dossierUrlLink
{{#dossierUrlLink dossier.id type="front"}}
Link naar het dossier in de frontoffice{{/dossierUrlLink}}
{{#dossierUrlLink dossier.id type="back"}}
Link naar het dossier in de backoffice{{/dossierUrlLink}}
currentPage & totalPages
{{paging.currentPage}}
/{{paging.totalPages}}
Alleen gebruikt in kop- en voettekst configuratie.
Voorbeeld: 1/6 (huidige pagina is de eerste van in totaal zes pagina's).