Inhoud

Actions

Wat is een action

Een action is een aanroep naar een methode van OpenWave met de juiste parameters. Die action wordt gekoppeld aan een trigger (zoals een knop, of een tegel of dubbelklikken op een lijstregel). OpenWave roept de methode aan en het gevolg is dat een lijst- of detailscherm wordt geopend, of een nieuw tabblad met een URL, of een wizard die wordt opgestart, of een kaartje dat getoond wordt, een memo…. et cetera.

Waar worden actions gedefinieerd

Op vele plekken in OpenWave kan een action aan een trigger worden gekoppeld. Bijvoorbeeld:

Syntax en substitutie van variabelen

In de meeste gevallen moet de action (methode + parameters) in één string worden gedefinieerd zoals: geefZaakMemo(12234,W) of getFlexList(SysStandardList,nil,nil,G,beheer_tbdocumenttype). Alleen de actions gekoppeld aan knoppen van een standaardlijst of standaarddetail (dus via de beheertegel Tabellen standaard API) zijn opgesplitst in een kolom action, waarin dit keer alleen de methodenaam moet komen, en kolommen voor de parameters: elke parameter een eigen kolom.

OpenWave kan bij de aanroep van een action binnen die action-definitie de volgende substrings tegenkomen:

Welke OpenWave methodes kunnen worden gebruikt?

Voor de onderstreepte items geldt dat de substring {id} of {kolomnaam} in de action - indien aangeroepen van een lijstscherm - vooraf vervangen zal worden door de betreffende regel id (de waarde van de primary key van de regel) c.q. de waarde van de genoemde kolomnaam.

openTabPage

Waarschuwing

Indien openTabPage vanuit een tegelaction wordt aangeroepen kunnen de parameters niet via een query aanroep worden gesubstitueerd. Dat moet in dat geval iets ingewikkelder via een flexaction: bijvoorbeeld de action op de tegel is getflexaction(omgeving_complex_oorsprong,{id}) waarbij de aangeroepen query (in dit voorbeeld omgeving_complex_oorsprong) een openTabPage-aanroep dient te construeren zonder te substitueren variabelen zoals: select 'openTabPage(#omgevingdetail/' | | dnkeyparentverg | | ')' from tbomgvergunning where dnkey = {id}

getFlexList

getFlexDetail

getFlexAction

Waarschuwing

Het is raadzaam dat wanneer de action startwizard(showtekst) wordt gebruikt, waarbij deze een tekst ophaalt uit een kolom waarbij harde returns en linefeeds kunnen worden gebruikt (bij voorbeeld een memo), deze aanroep te laten lopen via getFlexAction.

voorbeeld getflexaction en showtekst

Een voorbeeld van het gebruik van een getFlexAction in de definitie van het lijstscherm van de processtappen (termijnbewakingstappen) bij een zaak, zoals die default wordt uitgeleverd:
De kolom void in MDLC_GeefProcessenoverzicht toont een klikbaar vraagtekenicoon indien de kolom dvprocitemtoelichting op de regel is gevuld (de query achter celvisible) EN indien de instelling Sectie: Termijnbewaking Item: ToelichtingZichtbaar is aangevinkt (de query achter visible).

   <column tagnaam="void">
      <label></label>
      <index>80</index>
      <length>60</length>
      <wavetype>schermknop</wavetype>
      <icoon>28</icoon>
      <showhint>false</showhint>
      <action>getFlexAction(termijnbewaking_toelichting,{id})</action>
      <visible>%query(termijnbewaking_toelichtingzichtbaar)%</visible>
      <celvisible>%query(termijnbewaking_celtoelichtingzichtbaar,{id})%</celvisible>
   </column>
   

Met het aanklikken van het vraagtekenicoontje wordt de query termijnbewaking_toelichting geëvalueerd die aangeroepen wordt met de getFlexAction met de {id} ofwel de dnkey van tbtermijnbewstappen-rij als parameter.
Die query:

 select startWizard(showtekst,beginarg(' || coalesce(dvprocitemtoelichting ,'Sorry Geen toelichting aanwezig') || ')endarg,
 Toelichting op processtap,300)' from tbtermijnbewstappen  where dnkey = {id} 

Het evalueren van de query levert een aanroep naar een action startwizard(showtekst) op , die vervolgens uitgevoerd wordt:

startWizard(showtekst,beginarg(ja ff documentje starten snap je wel?)endarg,Toelichting op processtap,300)

Het gebruik van beginarg( en )endarg voorkomt dat komma's in de inhoud van dvprocitemtoelichting gezien worden als parameterscheiding.

voorbeeld getflexaction en hoovertekst

Een tweede voorbeeld is de aanroep bij het hooveren over het groepicoontje op de lijst alle zaken (openingsportaal). Die kolom in de MDLC_AlleZakenList.xml is als volgt gedefinieerd.

 <column tagnaam="dnkeygroepvergunning">
      <label>Groep</label>
      <index>10</index>
      <length>40</length>
      <wavetype>icoon</wavetype>
      <icoon>12</icoon>
      <showhint>false</showhint>
      <hooverhint>getFlexAction(groep_inhoudtekst,{dnkeygroepvergunning})</hooverhint>
  </column>

De tag hooverhint moet bij afspraak gevuld worden met de aanroep getFlexAction(querynaam,{id-naam}) waarbij de query een string teruggeeft. Deze string wordt getoond bij het hooveren over de kolom in de lijst, waarbij puntkomma's in de string worden geïnterpreteerd als een harde return.
Voorbeeld: het groepvergunningicoontje in de lijst alle zaken. De hooverhint is hier gedefinieerd als getFlexAction(groep_inhoudtekst,{dnkeygroepvergunning}). Dus de query met de naam groep_inhoudtekst wordt aangeroepen met de parameter dnkeygroepvergunning (uit vwfrmalleaanvragen) van de rij waar de gebruiker over het icoontje hoovert. De query retourneert startdatum, betreft en wavezaakcode van de leden van de groep, gescheiden met een puntkomma.
Door het gebruik van getFlexAction wordt de query pas aangeroepen wanneer daar om gevraagd wordt.

voorbeeld één getflexaction voor zowel getflexballoon als showtekst

Dt voorbeeld is dat achter een geflexballoon-knop en een starttwizard(showtekst)-knop verwezen kan worden naar eenzelfde query: de actie achter de twee knoppen tonen dezelfde inhoud, alleen in een ander jasje.
action bij knop showtekst: getFlexAction(TestPaul_3_HaalMemoOp,S%keypointer%)
action bij knop flexballoon: getFlexAction(TestPaul_3_HaalMemoOp,F%keypointer%)
De query: TestPaul_3_HaalMemoOp ontleedt de substitutie van {id} , dus begint met letter S of F en construeert de gewenste vervolg actieaanroep.

select 
  case when substr('{id}',1,1) = 'F' then
      'getFlexBalloon(beginarg(' || coalesce(replace(dvmemo,chr(13)||chr(10),chr(59)),'Sorry. Geen memotekst aanwezig')|| ')endarg,P)'
       else 
       'startWizard(showtekst,beginarg(' || coalesce(dvmemo,'Sorry. Geen memotekst aanwezig')|| ')endarg,Memo bij adres,300)'
  end
from tbomgvergunning where dnkey = substr('{id}',2)::integer

Voor getFlexBaloon worden de linefeeds en returns vervangen worden door een puntkomma.

geefGeoVanLokatie

getFlexMemo

getFlexBalloon

voorbeeld ophalen memo-kolom in flexballoon

Indien een query wordt aangeroepen, waarbij de waarde van een kolom wordt opgehaald waarin linefeeds en harde returns kunnen zitten (memo), is het belangrijk dat de query deze linefeeds en returns vervangt door een puntkomma:
aanroep: getFlexBalloon(%query(TestPaul_2_HaalMemoOp,%keypointer%)%,P)
de query TestPaul_2_HaalMemoOp kan dan bijvoorneeld de volgende select bevatten:

select  'beginarg(' || coalesce( replace(dvmemo,chr(13)||chr(10),chr(59)),'Sorry. Geen memotekst aanwezig') || ')endarg' 
from tbomgvergunning where dnkey = {id}

Het gebruik van beginarg( en )endarg voorkomt dat komma's in de inhoud van dvmemo gezien worden als parameterscheiding.

noAction

refreshActiveDialog

refreshActiveDialog(parameterlist)

startWizard

Action column:kolomnaam

Deze actie heeft dezelfde functie als getFlexAction. Alleen wordt de uiteindelijke uit te voeren actie NIET opgehaald uit een query, maar uit een kolom van de view die aan de lijst ten grondslag ligt.

De tag <action> bij de knop wordt zonder verdere parameters gevuld wordt door de vaste tekst 'column:' die direct gevolgd wordt door een kolomnaam uit de betreffende lijst. De waarde van die kolomnaam bevat de action die uitgevoerd wordt bij het indrukken van de bewuste knop. Het gaat dan om de waarde uit de actieve regel van die lijst. In zo'n kolom staat dus bijv. als waarde: geefGeovanLokatie(1234,tbperceeladressen) en in diezelfde lijst bij een volgende regel geefGeovanLokatie(5678,tbperceeladressen).

Toepassing: zie beheertegel Tabellen Standaardapi en zoek de kaart met dvcode = opening_vwfrmtevolgenzaken.