OutSystems Notify message

data structuren (auteur: Menno Hoogsteen)

inSystems datacenter

Om in OutSystems vanuit een popup window (of webblock) data te retourneren kun je gebruik maken van de system server actions Notify en NotifyGetMessage. Via Notify stuur je het bericht vanuit een action in het popup scherm. Met de NotiftyGetMessage kun je het vervolgens ontvangen in het webscherm, waar de aanroep naar de popup plaats vond.

In de volgende afbeelding is deze flow schematisch weergegeven:

inSystems OutSystems Notify Message

Parameter

Je hebt één parameter tot je beschikking. Het bericht dat je stuurt/ontvangt dient van het datatype Text te zijn. Een enkelvoudige string als bericht is vaak niet zo’n probleem. Maar als je meer data en eventueel van verschillende datatypen wilt terug sturen, dan blijkt een enkele Text parameter niet zo handig.
Vaak krijg je dan ad hoc constructies waarin variabelen aan elkaar geregen worden met scheidingstekens. Zoiets als:

inSystems OutSystems Notify Message

De action die de notify ontvangt wil je deze tekst weer ontleden. Hiervoor komt de system String_Split action om de hoek kijken:

inSystems OutSystems Notify Message

De String_Split levert een lijst op met in dit geval drie rijen:

inSystems OutSystems Notify Message

Wil je naar de inhoud verwijzen, dan ben je genoodzaakt om hard te verwijzen naar de rijen. Als je dit in een conditie gebruikt, komt dit de leesbaarheid en begrip niet ten goede:

inSystems OutSystems Notify Message

Gelukkig is er ook een betere manier voor bovenstaande constructie. Om het retourneren te structuren en het gebruik van de data te vereenvoudigen, hebben we twee andere built-in actions tot onze beschikking, namelijk JSONSerialize en JSONDeserialize.

JSONSerialize en JSONDeserialize

Met JSONSerialize kun je een Record of List of Records datatypen converteren naar tekst. Dit kunnen bijvoorbeeld entiteiten/structures of lijsten hiervan zijn. Vervolgens gebruik je JSONDeserialize om de tekst weer terug te vertalen naar het oorspronkelijke data type.
Als we de vorige ad hoc constructie vervangen met een implementatie met de zojuist genoemde actions, zien we een duidelijk verschil. De notify bevat nu alleen de uitkomst van het serialiseren van een record variabele:

inSystems OutSystems Notify Message

Hieronder zien we het resultaat van de JSONSerialize action:

inSystems OutSystems Notify Message

De String_Split wordt vervangen door de JSONDeserialize, om de tekst weer om te zetten naar een record:

inSystems OutSystems Notify Message

Herschrijven we de conditie van hierboven, dan krijgen we:

inSystems OutSystems Notify Message

Een stuk duidelijker en geen harde verwijzingen naar posities in een lijst.

Is de JSONSerialize/Deserialize manier feilloos? Nee, je zal goed moeten opletten dat je in beide actions steeds hetzelfde datatype gebruikt. Anders kan het als nog runtime fouten opleveren. Als je bijvoorbeeld de inhoud van een text datatype naar een integer datatype serialiseert, dan levert dit een foutmelding op:

inSystems OutSystems Notify Message

Als je geluk hebt levert het een foutmelding op, zodat je in ieder geval weet dat er iets fout gaat. In het slechtste geval levert het onverklaarbare functionele fouten op, als gevolg van onverwachte data.

Ik ben van mening dat deze manier meer voordelen dan nadelen heeft. Het is een goed gebruik om het elke keer toe te passen.

Share this

Contact

Heb je vragen of opmerkingen? Aarzel niet om contact op te nemen. Dat kan via de algemene contactgegevens, rechtstreeks met de genoemde contactpersoon op een van de detailpagina’s, of via onderstaande knop.

29 juni 2026

Welke midlance regeling past bij mij?

Medium-lance / Midlance wint snel aan populariteit. Het combineert de zekerheid van een vast dienstverband met de mogelijkheid om een aanzienlijk hoger inkomen te verdienen wanneer je op mooie opdrachten wordt ingezet.

18 juni 2026

AI inspiratiesessie

AI is nauwelijks nog weg te denken uit het nieuws. Vrijwel dagelijks verschijnen er berichten over nieuwe AI-toepassingen. Dat roept vragen op. Wat is AI eigenlijk precies? Wat kunnen deze systemen wel en niet? Wat betekent dit voor mij?

Opdrachten uitgevoerd voor

Leaseplan
Telegraaf Media Groep
WVDB Adviseurs Accountants
Ministerie van Economische Zaken, Landbouw & Innovatie
PC Uitvaart
DICTU
Thales
AgroEnergy
Rendo
VION Food Group
Darling
Nederlandse Spoorwegen
CB Logistics
Gemeente Den Haag
Syntrus Achmea Real Estate & Finance
SVB
Rabobank
CBR
Altran
Stratech Social
NVWA inSystems
ASR Nederland
Ahold
Gemeente Gouda
Rechtspraak
inSystems KLM
VAA ICT Consultancy
Rijk Zwaan inSystems
ING Bank
Allianz
RIGD LOXIA
JUVA
TU Eindhoven
Eneco
VTTI
Van Iperen Groeispecialisten
Greenchoice
TenneT
RAVU
Alliance Healthcare
Universiteit Tilburg
Twinq
Fokker
Feenstra inSystems
Oracle University
Alphabet
Bank Mendes Gans
IBM
Multi Tank Card
Politie
MN Services
inSystems Unive
Provincie Utrecht
Gemeente Apeldoorn
UBR Uitvoeringsorganisatie Bedrijfsvoering Rijk
Arval BNP Paribas
Belastingdienst
BMW
Stedin
Ziggo
Cannock
GVB
Holland Casino