Masterclass InProces 2.12

Agenda

  1. Introductie
  2. Gebruik
  3. Beheer organisatie en procesmodel
  4. Objectmodelering
  5. UI beheer
  6. IPML
  7. Rapportages

Wat is InProces

  • Enterprise Content Management
  • Platform as a Service
  • Authentication
  • Authorisation
  • Multi-tenant

Enterprise Content Management

InProces ECM

  • Proces management (intern / extern)
  • Dossiervorming / substitutie
  • Organisatiestructuur / routering / autorisatie
  • Kennismanagement
  • Klant contact (balie/telefoon)
  • Digitaal vergaderen en besluiten (college/raad)
  • Website
  • Burgerloket/Ondernemersloket
  • Studentenloket
  • Objectmanagement
  • Governance
  • Multi-organisatie / Multi-lingual

What's new : InProces 2.11

  • serverside
    • scheiding blobs en operationele data !!
    • search engine lucene naar aparte service
    • IPML (many)
    • functions
    • OpenAPI 3.0 (swagger)
  • clientside
    • Fuse (material design)
    • views / widgets
    • samen werken aan zelfde zaak

What's new: InProces 2.12

beta 1 april 2018, rc 1 juli 2018, release  1 augustus 2018

 

  • serverside
    • IPML
    • servicemix stateless
      • voorbereiding docker
      • voorbereiding barebone iron
    • externe gegevensbron functionaliteit
      • swagger
      • xml
      • webservices soap / wsdl 
  • clientside
    • auto translate
    • bulk verwerking zaken
    • search
    • business rules
    • progressive web app

InProces Architectuur

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

SaaS

  • software as a SERVICE
  • service bevat
    • infrastructuur (tot aan de meterkast)
    • basis functionaliteit
    • organisatietype functionaliteit
    • organisatie functionaliteit
      • d.m.v. configuratie
      • d.m.v. standaard content
    • support
    • beheer

applicatie toegang

  • Toegang via browser
  • Laatste 2 major versies
  • Hostname bevat applicatie, omgeving en klant

 

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

authenticatie methodes

instelbaar per applicatie

  • InProces
  • LDAP
  • AD
  • ADFS
  • DigiD
  • eHerkenning
  • SurfConnext

applicatie routering

via URL parameters

parameter voorbeeld
portaal /home
widget /home/zaak
schema /home/zaak/evenementenvergunning
sleutel / docunid /home/zaak/evenementenvergunning/2017-001234

belangrijste applicaties

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

Agenda

  1. Introductie
  2. Gebruik
  3. Beheer organisatie en procesmodel
  4. Objectmodelering
  5. UI beheer
  6. IPML
  7. Rapportage

InProces Gebruikersinterface

Agenda

  1. Introductie
  2. Gebruik
  3. Beheer organisatie en procesmodel
  4. Objectmodelering
  5. UI beheer
  6. IPML
  7. Rapportages

zaken.staging.webbergen.nl/management

Organisatie model

  • organisatie
    • organisatie zelf
    • ketenpartners
  • users uit LDAP / AD / ADFS
  • groepen in InProces
    • rol
    • afdeling / team
    • organisatieonderdeel
    • partij

beheer medewerkers

  • synchronisatie met externe user-dir
  • additionele config in IP

medewerker in organisatie

proces model

zaaktypen

  • Proces definitie (uitbreiding van het zaak-schema)
  • Interne en externe zaaktypen
  • Onderdelen
    • Algemene classificatie
    • Aanleiding (b.v. aanvraag formulier, post, mail etc.)
    • Behandeling algemeen
    • Proces verloop
    • Resultaat definitie tbv archief en vervolg processen
    • Dossiervorming
    • Subprocessen
    • Views (user interface)
    • Functies
    • Bussinessrules 

zaaktype

Procesverloop

  • fase
    • beslaat een periode
    • behandelaar vast of berekend
  • status
    • sluit een periode af
  • checklist
    • controle mechanisme
    • kan automatisch worden gezet

Businessrules

  • naam
  • conditie (fase + ipml)
  • uitvoering
    • functie
    • service
    • save
    • send

Views

gebruikersknoppen in de zaak widget

Views

  • standaard
    • documenten
    • memos
    • subprocessen
    • timeline
    • kaart
  • custom
    • icon
    • naam
    • filter (js)
    • widget

Zaak functions

  • standaard
    • volgende fase
    • vorige fase
    • toewijzen
    • annuleren
    • etc.

Functions

  • IPML -> server side uitvoering
    • conditie
    • parameters
    • function
    • return
  • uitvoerbaar via
    • businessrule
    • API extern
    • in widgets

InProces Open API

  • restfull
    • /api/{schema}/{function}/{id}?.....
    • /api/zaak/naarfase/2018-0001358
  • Swagger Open API 2.0
  • /swagger

Agenda

  1. Introductie
  2. Gebruik
  3. Beheer organisatie en procesmodel
  4. Datamodelering
  5. UI beheer
  6. IPML
  7. Rapportages

Gegevensmodellering

  • Schema
    • class van een entiteit
  • Entiteit
    • instantie van een schema
    • content
      • object met inhoudelijke gegevens
    • context
      • relatie tussen 2 content entiteiten

Schema definitie

  • Visuele weergave voor zowel classic als fuse
  • eigenschappen
    • tabbladen
    • fieldset -> meerdere fieldset entiteiten per schema
    • fields -> meerdere field entiteiten per fieldset
  • views (alleen fuse)
    • tbv het tonen van widgets of starten van functies 
  • functions
    • serverside uitvoeren van IPML code
  • events
    • create
    • update
    • delete

Agenda

  1. Introductie
  2. Gebruik
  3. Beheer organisatie en procesmodel
  4. Datamodelering
  5. UI beheer
  6. IPML
  7. Rapportages

Single Page Application

  • Application  server parsing
  • MVC Model
    • Model (json)
    • View (html5 / css3)
    • Control  (javascript)
  • Frameworks
    • AngularJS
    • Angular material
    • losse modules
  • Routering d.m.v. URL

Gegevens flow

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

Model View Controller

Material Design

UI Componenten

  1. Applicatie
    1. Toolbar widget
    2. Navigatie widget
    3. Portaal placeholder
  2. Portaal
    1. vaste indeling
    2. of dynamische widgets
  3. Widget

UI componenten

  • contentbeheer.staging.webbergen.nl/management
  • kies applicatie
  • panel sitemanagement
    • applicatie
    • portalen
    • widgets

Basis componenten

  • InProces applicatie
  • Portalen
    • Dossiers
    • Klantcontact
    • Vergaderingen
  • Widgets
    • Dossiers widget voor werkvoorraad en zoeken
      • Bevat dynamische filter mogelijkheden
    • Zaak widget met  views: 
      • zaak-dossier
      • zaak-memo's
      • subdossiers
      • timeline
    • .....

UI component

  • applicatie, portaal of widget
  • definitie
    • view panel
      • IPML => HTML
    • controller panel
      • model in JSON
      • control in javascript
  • opmaak
    • CSS
    • assets zoals images of fontfiles

Widget

  • Model
  • View
  • Control
<ip-widget>
    <content>
        <!-- your code here -->
    </content>
</ip-widget>

Agenda

  1. Introductie
  2. Gebruik
  3. Beheer organisatie en procesmodel
  4. Datamodelering
  5. UI beheer
  6. IPML
  7. Rapportages

Wat is IPML

  • InProces Markup Language
    • String parser
    • Vertaald strings naar strings 
  • InProces Magic Language
    • functional operations
    • procedural operations
  • Resources
    • https://help.brein.nl/home/oplossing/inproces-foundations?tag=beheerder#inproces-markup-language
    • https://help.brein.nl/ipml-doc

InProces Magic Language

  • Elements
    • <ip-widget>
    • <.. widget name..>
    • <http>
    • ....
  • Statements
  • Functions

InProces entiteit model

InProces schema model

IPML in Schema

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

IPML in Fieldset

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)

IPML in Field

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

IPML in Application, Portaal en Widget

Field Description Event
(applicatie)template html template view
opmaak css expression view
controller javascript expression view

IPML Testen

  • IPML test widget:  /home/ipml

IPML Objecten

  • Any object
    • functions
      • update
      • ....
    • properties
      • object
      • .... any
    • filter
      • javascript
        • (format object naar javascript save notatie)
  • this
    • context waarin ipml wordt uitgevoerd
      • (meestal een entiteit)

Entiteit(en)

  • Is een record in de database (instance)
  • Definitie op basis van een schema (class)
  • 1 entiteit lezen d.m.v. sleutel of id
    • syntax
      {... schemanaam.. [ docunid/sleutel ]....veld of object of function.. }
  • meerdere zoeken dmv query
    • syntax
      {... schemanaam.. [ ..query.. ]....veld of object of function.. }
{zaak[2018-0001234].betreft}

{ip-var(zaken = {zaak[?[startdatum] > 01-01-2017].object} )}

{zaken[?[onderwerp] = "Evenementenvergunning"].object}

{ip-var(....)}

{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-log(....)}

{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-create(..)}

{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-update()}

{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(....)}

{ip-list(["eerste","tweede","derde"])}


{ip-list({this.eerstebehandelaar|javascript}, {gebruiker.sleutel})}

ip-list  creëert een itereerbare list in memory

{(if ...) ? (..then..) : (..else ..)}

{({this.cijfer} > 5) ? (geslaagd) : (gezakt)}



{({zaak.betreft}) || ({document.documenttitel})}

condities

{ip-for(... in ...) => (.....)}

{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-calc(...)}

{ip-var(inclusiefbtw = {ip-calc({this.bedrag} * 0.21)})}

{ip-log({inclusiefbtw.value})}

ip-calc tbv berekenen

Text

IPML Debugger

IPML Functions

  • Standaard

    • update
    • map (list)
  • Entiteit
    • save
    • remove
  • schema / zaaktype
    • .....

Swagger / OpenAPI

Events

  • Op functions tabblad van schema
  • Overerving door
    • eigen schema eerst
    • daarna parent,
    • daarna parent van parent etc.
  • events:
    • create
      • nadat de entiteit is gecreëerd in de database
    • update
      • na elke save
    • delete
      • na elke inactief gemaakte entiteit

Masterclass Dag 2

Hands-On

Afstemmen en Besluiten

Proces Afstemmen en Besluiten

  • voorstel opgesteld in Word
  • aanbieden middels registratie
  • hoofdproces = voorstel behandelen
    • fase afstemmen 
      • subproces voorstel adviseren
        (vraag medewerkers en/of gremia om advies)
    • fase besluiten
      • subproces  voorstel besluiten
        (vraag gremia om besuit)
    • fase afhandelen

Benodigd formulier

  • Schema "voorstel" met velden:
    • Titel
    • Word document
    • Steller
    • Aanbieder

Oefening 1: Formulier

  1. ga naar zaken.staging.uva.nl/management
    open panel met formulieren
  2. Kopieer formulier "voorstel" naar "voorstel_initialen"
  3. Geef formulier ook een andere titel. bv "Voorstel initialen"
  4. Voeg  richttext veld "beslispunten" toe aan eerste fieldset
    • Instellingen gelijk aan samenvatting veld (controller en classic eigenschappen tabladen)
  5. Test je formulier d.m.v.

    inproces.staging.uva.nl/aanvraag/formulier-indienen/voorstel_initialen

 

Benodigd sjabloon t.b.v. voorblad

  • Documenttitel
  • Datum
  • Opsteller
  • Aanbieder
  • Samenvatting
  • Beslispunten

Oefening 2: Sjabloon

  1. ga naar zaken.staging.uva.nl/management
    open panel met sjablonen
  2. Kopieer sjabloon "voorstel" naar "voorstel_initialen"
  3. Voeg veld beslispunten toe aan de inhoud
    (net zoals samenvatting veld)
  4. Test je sjabloon d.m.v.

    inproces.staging.uva.nl/home/formulier-indienen/voorstel_initialen

 

Benodigde zaaktypen

  • voorstel behandelen (hoofdproces)
  • voorstel adviseren (subproces)
  • voorstel besluiten (subproces)

Oefening 3: Zaaktype voorstel

  1. ga naar zaken.staging.uva.nl/management
    open panel met zaaktypen
  2. Klik op "zaaktype toevoegen"
  3. Vul de parameters in conform volgende slides

 

Oefening 3: Zaaktype voorstel

Oefening 3: Zaaktype voorstel

Oefening 3: Zaaktype voorstel

Oefening 3: Zaaktype voorstel

Oefening 3: Zaaktype voorstel

Oefening 3: Zaaktype voorstel

  1. Ga naar inproces.staging.uva.nl
    open Nieuw dossier starten
  2. Zoek jou zaaktype en klik er op
  3. Vul een nieuw voorstel in
  4. Selecteer je zelf als opsteller (default)
  5. Ga naar je werkvoorraad
  6. Controleer of er een zaak is gestart met jou zaaktype

Oefening 4: Zaaktype afstemmen

  1. Maak een nieuw zaaktype
  2. onderwerp = "Voorstel afstemmen initialen"
  3. product = "voorstel_initialen"
  4. handeling organisatie = "adviseren"
  5. fasering = "beoordelen"
  6. Open daarna in zaaktype "voorstel_initalen" het tabblad subzaken
  7. Voeg je eigen "Voorstel afstemmen initialen" zaaktype als subzaaktype toe

Oefening 4: Zaaktype afstemmen

  1. Open je zaak
  2. Ga naar de subzaken view
  3. klik op het plusje
  4. kies jou zaaktype "Voorstel afstemmen initialen"
  5. Start een subzaak met:
    1. betreft: "Advies door  {naam van de medewerker}"
    2. kies start en gewenste einddatum
    3. kies de medewerker bij behandelaar veld
    4. kies jezelf als verantwoordelijke

Oefening 4: Zaaktype afstemmen

  1. klik nogmaals op het plusje
  2. kies jou zaaktype "Voorstel afstemmen initialen"
  3. Start een subzaak met:
    1. betreft: "Advies door  {naam van gremium}"
    2. kies start en gewenste einddatum
    3. kies het gremium bij behandelaar veld
    4. kies jezelf als verantwoordelijke
  4. Controleer in de hoofdzaak of de subzaken bij de sub-zaken view zichtbaar zijn

Widget voorstel 

  • InProces bied standaard views voor
    • documenten
    • memo's
    • subprocessen
    • timeline
    • info
    • geo
  • Voor het behandelen van een voorstel kan een zaaktype specifieke widget nuttig zijn

Widget voorstel 

  • Redenen eigen widget
    • snel starten van afstemming subzaak
    • snel overzicht van gegeven adviezen

Oefening 5: widget "voorstel"

  1. Ga naar
    contentbeheer.staging.uva.nl/management
  2. Kies applicatie InProces
  3. Kies panel sitemanagement
  4. klik op menu optie "nieuwe widget"
  5. Op "widget" tabblad de naam "voorstel_initialen"
  6. Op het definitie tabblad de code:
<ip-widget>
    <content>
        <h1>My first Little widget</h1>
    </content>
</ip-widget>

Oefening 5: widget "voorstel"

  1. Ga naar
    zaken.staging.uva.nl/management
  2. Open je eigen zaaktype "Voorstel initialen"
  3. Ga naar tabblad "views"
  4. Voeg een view toe
    1. naam "voorstel"
    2. label "voorstel"
    3. icon  naar keuze
    4. locatie "sidemenu"
    5. positie 1
    6. widget "voorstel_initialen"
  5. Open de zaak in de InProces werkvoorraad en controleer of de widget als eerste getoond wordt

Oefening 5: widget "voorstel"

  1. Open widget "voorstel"
  2. Kopieer definitie tabblad code
  3. Plak in je eigen definitie voorstel_initialen code
  4. Kopieer controller code uit "voorstel" widget
  5. Plak in je eigen controller code
  6. Idem voor opmaak tabblad
  7. In opmaak tabblad "scan en replace"
      .voorstel  door .voorstel_initialen

Benodigde functie

  • Afstemmen met een gremium betekent het vragen van een advies aan elk lid
  • Dit betekent een subproces per lid voor de afstemmen subzaak van het gremium
  • Het oordeel van het gremium zal door  de secretaris worden vastgesteld na advies van de leden
  • Voor elk lid van een overlegorgaan (of andere groep) moet een "Voorstel adviseren" subzaak aangemaakt worden in de subzaak van het beoordelen door het gremium
  • Een functie "afstemmenleden" kan in een iteratie door de leden gaan en per lid een startzaak van het type voorstel afstemmen aanmaken

Oefening 6: functie afstemmenleden

  1. Open je zaaktype "Voorstel afstemmen initialen"
  2. Ga naar het tabblad functies
  3. Voeg een nieuwe functie toe met naam"afstemmenleden"
  4. functie:
{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}"
    })}
)}

Oefening 6: functie afstemmenleden

  1. Ga naar het tabblad views
  2. Voeg een nieuwe view toe
    1. naam"afstemmenleden"
    2. icoon naar keuze
    3. locatie toolbar
    4. positie 1
    5. functie "afstemmenleden"

Oefening 6: functie afstemmenleden

  1. Open de zaak "Voorstel"
  2. Ga naar de view "subzaken"
  3. Open een subzaak van het type "voorstel afstemmen"
  4. Controleer of de functie "afstemmenleden" via een knop in de toolbar van de subzaak aangeklikt kan worden
  5. InProce sgaat de subzaken nu aanmaken voor elk van de leden uit het gremium aan wie deze afstemming is aangeboden. Controleer dat bij de subzaken view

Masterclass InProces 2.12

By Ronald Brinkerink

Masterclass InProces 2.12

Enterprise Content Management met InProces

  • 531