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

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