beta 1 april 2018, rc 1 juli 2018, release 1 augustus 2018
website
loket
inproces
bestuur
.........
private cloud
applicatie clusters
database clusters
internal datasources
external datasources (land. voorz / open data)
public cloud
applicatie clusters
database clusters
basis
gemeente
waterschap
onderwijs
.......
Amstelveen
Aalsmeer
.....
Rijnland
.....
UvA
.....
Delfland
HvA
app server
app server
app server
app server
app server
tenants
organisatie type
https://[applicatie].[omgeving].[klant].[tld]
| omgeving | host |
|---|---|
| test | https://inproces.test.webbergen.nl |
| acceptatie | https://inproces.acceptatie.webbergen.nl |
| productie | https://inproces.webbergen.nl |
| staging | https://inproces.staging.webbergen.nl |
instelbaar per applicatie
via URL parameters
| parameter | voorbeeld |
|---|---|
| portaal | /home |
| widget | /home/zaak |
| schema | /home/zaak/evenementenvergunning |
| sleutel / docunid | /home/zaak/evenementenvergunning/2017-001234 |
| applicatie | doel | interface |
|---|---|---|
| basis | container voor vaste componenten | - geen - |
| inproces | gebruik vanaf 2.11 | responsive |
| contentbeheer | configuratie applicaties | classic |
| zaken | configuratie processen | classic |
| wijzer | gebruik sociaal domein | responsive |
| connect | koppelingen monitor | classic |
| bestuur | gebruik besluitvorming | classic |
| intranet | gebruik medewerkers | responsive |
| website | gebruik klanten | responsive |
gebruikersknoppen in de zaak widget
| component | middel | output |
|---|---|---|
| database | mongo-db | json |
| applicatieserver |
data parser (schema defin. / autorisatie) |
json |
| applicatieserver | ipml parser (applicatie/widget) |
html5/css3/es6 |
| browser | inproces MVC client angularjs parser angularjs-material |
html5/css3/es6 |
<ip-widget>
<content>
<!-- your code here -->
</content>
</ip-widget>| Field | Description | Event |
|---|---|---|
| aftersavefunction | Event first save | after first save |
| afterupdatefunction | Event every save | after every save |
| afterdeletefunction | Event after delete | after inactive |
| functioncondition (multiple) | Expression to test if function may be executed | before function call |
| functionparameters (multiple per function) | Array of parameters for function | before function call |
| function (multile) | Expression to be executed | Function call |
| functionresult | Expression to return after function | after function call |
| Field | Description | Event |
|---|---|---|
| includecondition | Checks if user has a right to read the fields of this fieldset | every read |
| legend | Dynamic fieldset title | form creation (fuse/classis) |
| help | Generates help fir this fieldset | form creation (fuse/classis) |
| Field | Description | Event |
|---|---|---|
| label | Dynamic fieldlabel | form creation (fuse/classis) |
| help | Generates help for this field | form creation (fuse/classis) |
| create | default value | before entity creation |
| update | calculated value | Every save |
| Field | Description | Event |
|---|---|---|
| (applicatie)template | html template | view |
| opmaak | css expression | view |
| controller | javascript expression | view |
{zaak[2018-0001234].betreft}
{ip-var(zaken = {zaak[?[startdatum] > 01-01-2017].object} )}
{zaken[?[onderwerp] = "Evenementenvergunning"].object}
{ip-var(obj = {
"naam":"Arend Marie",
"geslacht":"gender-neutraal"
})}
{ip-var(zaak = {zaak[2018-0001234].object})}
{/*
Een goede gewoonte om documentatie in je IPML op te nemen:
De gevonden zaak gaan we annuleren.
*/}
{zaak.annuleren({
"reden":"Vanuit IPML een zaakje geannuleerd."
})}
creeert een of meer object(en) of entiteit(en) in memory
{ip-var(zaak = {zaak[2018-0001234].object})}
{ip-log(De gevonden zaak: {zaak.docunid|javacsript} )}
{ip-var(zaken = {zaak[?[onderwerp] = "Evenementenvergunning"].object} )}
{ip-log(aantal venementenvergunningen = {zaken.value|length()}
stuur bericht naar user en naar de serverlog
{ip-var(mijnvoorstel = {ip-create({
"schema": "bestuursvoorstel",
"documenttitel": "Voorstel verlenen vergunning Heetpasweg 13"
})}
)}
{mijnvoorstel.save()}
{ip-var(zaak = {zaak[2018-000125].object})}
{zaak.connect({
"contextschema":"zaak-document",
"doelsleutel":"{mijnvoorstel.sleutel}",
"doeldocunid":"{mijnvoorstel.docunid}",
"context":"Bestuursvoorstel {mijnvoorstel.documenttitel}"
})}ip-create creert een entiteit in memory
.save function legt entiteit vast in de database
{ip-var(medewerker = {medewerker[{gebruiker.sleutel}].object})}
{medewerker.update({
"hobby":"IPML-en"
})}
{medewerker.save()}ip-update werkt een object of een entiteit in memory
{ip-list(["eerste","tweede","derde"])}
{ip-list({this.eerstebehandelaar|javascript}, {gebruiker.sleutel})}
ip-list creëert een itereerbare list in memory
{({this.cijfer} > 5) ? (geslaagd) : (gezakt)}
{({zaak.betreft}) || ({document.documenttitel})}condities
{ip-for(medewerker in {medewerker[?[cijfer] > 5].object}) => (
{medewerker.save({"geslaagd" : "ja"})}
)}
{ip-for(zaak in {zaak[?[eerstebehandelaar] in {gebruiker.rollen|javascript}].object}) => (
{zaak.naarfase({
"eerstebehandelaar": "{zaak.eerstebehandelaar}",
"afhandelinsgstatus": "Advies inwinnen"
})}
)}
ip-for itereert over een lijst
{ip-var(inclusiefbtw = {ip-calc({this.bedrag} * 0.21)})}
{ip-log({inclusiefbtw.value})}ip-calc tbv berekenen
Text
Standaard
Hands-On
Afstemmen en Besluiten
<ip-widget>
<content>
<h1>My first Little widget</h1>
</content>
</ip-widget>{ip-for(member in {ip-list({groep[{this.eerstebehandelaar}].members})}) => (
{this.startzaak({
"zaaktypesleutel":"{this.zaaktypesleutel}",
"eerstebehandelaar":"{member.value}",
"betreft":"Advies van {organisatieonderdeel[{member.value}].naam} over {this.betreft}",
"afhandelingsverantwoordelijke":"{organisatieonderdeel[{gebruiker.sleutel}].fullname}"
})}
)}