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.

31 maart 2026

APEX World 2026 – ’n impressie

inSystems was op de “Sweet 16″ editie van APEX World als sponsor vertegenwoordigd middels verschillende banners en met 5 deelnemers. Tezamen hebben zij veel interessante keynote sessies en parallelsessies bijgewoond.

2 april 2026

30 jaar inSystems in vogelvlucht

inSystems viert haar 30-jarig bestaan. Wat ooit begon als Quobell B.V., opgericht in 1996 door vijf ervaren IT-professionals met Oracle als gemeenschappelijke factor, is uitgegroeid tot een stabiele en herkenbare speler in de Nederlandse IT-markt.

Opdrachten uitgevoerd voor

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