Inhoud

Standaard Lijst- en Detailschermen

Portal beheerportaal-Nieuw. Tegel Tabellen standaardAPI.

Screenidentifiers (beheertegel Schermkolomdefinitie tabellen standaard-API)

Tabellen:

Zie ook: Uitgewerkt voorbeeld

Omschrijving

Met behulp van de tabel tbSysStandardTable kan een applicatiebeheerder zelf nieuwe schermen op bestaande OpenWave tabellen/views definiëren.

De kaarten in de tabel tbSysStandardTable hebben een unieke codering. Elke kaart is een representatie van hoe een bepaalde view of tabel uit de OpenWave database moet worden getoond met die restrictie dat altijd gerenderd wordt conform de opmaak van een OpenWave-lijstscherm en OpenWave-detailscherm. Naast het definiëren van de tabel/view die getoond moet worden, en met welke parent, worden ook de verwijzing(en) naar de bijbehorende schermkolomdefinitie(s) vastgelegd in de kaart. In de dochtertabel tbSysstandardButton kunnen tenslotte de knoppen linksonder op de te leveren lijst-of detailpagina worden gedefinieerd met bijbehorende action. Eventueel kan ook een filter op het lijstscherm worden getoond. Zie hiervoor onderaan deze pagina Voorbeeld filterdefinitie.

Aanroep

Waarbij:

De kolommen van de tabel tbsysstandardtable

Zie verder over het gebruik en mogelijkheden van actions: Actions.

Voorbeeld gebruik rechtenkolom op basis van query

Het gaat hier om het vullen van de kolom tbqueries.dvcode wijzigrechten (dvautheditquerycode) of tbqueries.dvcode kijkrechten (dvauthvisiblequerycode) waarbij de uitkomst true of false bepalend is voor het kijk- of wijzigrecht van het scherm. Ook bij de knoppen (zie hieronder) wordt van deze systematiek uitgegaan.

voorbeeld gebruik rechtenkolom

wanneer het inzien of wijzigen van een scherm voorbehouden moet zijn aan een functioneel beheerder is er een verwijzing naar de systeemquery met dvcode = sysstandaard_isbeheerder het makkelijkst. Deze standaard uitgeleverde query retourneert true indien de medewerker beheerniveau 99 heeft.(tbmedewerkers.dnbeheerniveau).

Wanneer het inzien of wijzigen van een scherm gekoppeld moet zijn aan de autorisaties van een medewerker rekening houdend met compartiment is het volgende voorbeeld met gebruik functies fn_rechtenkolom en fn_iscompartimentok
van toepassing.
In de kolom dvauthvisiblequerycode wordt naar een query uit tbqueries verwezen bijv. met de code omgeving_milalertmuteren
De query met dvcode = omgeving_milalertmuteren kan dan als volgt gedefinieerd zijn:

select case when (fn_iscompartimentok(:keyaccount, 'W',{id}) = 1) 
	  and (fn_rechtenkolom('tbomgrechten.dlbomgmemoedt',:keyaccount) = 'T' ) 
      then 'true'  
      else 'false' 
      end

De query maakt gebruik van twee OpenWave functies:
fn_iscompartimentok kijkt op grond van de inlogger, de module en de dnkey van de kaart of de compartimentsrechten in de weg zitten. De string :keyaccount wordt onder water altijd vervangen door de dvcode van de inlogger. De string (id) altijd door de dnkey van de kaart waar de gebruiker op staat in de hoofdtabel (dvmaintablename).
fn_rechtenkolom kijkt op grond van de aangegeven rechtenkolom (rechtentabel gevolgd door een punt gevolgd door de kolomnaam) of de inlogger (:keyaccount) wijzigrechten heeft volgens die rechtenkolom .
Zie ook Database functies.

Controle op valide schermverwijzingen

In het servicecentrum portaal onder de kolom Notificaties is een tegel Ontbrekende sysstandardschermen in AAR gedefinieerd. Met deze tegel wordt een lijst gegenereerd van schermaanroepen (lijstschermen of detailschermen of filterschermen of insertstandardrowschermen) in tbsystandardtable en/of tbsysstandardbutton (dus in de tabel achter de tegel Tabellen Standaardapi van het nieuwe beheerportaal onder de kolom Scherm- en tegelbeheer) die niet zijn opgenomen in de AAR.

Dit zijn schermen die niet met implementatie en updates van OpenWave zijn aangeleverd. Dat kan zijn omdat de schermen door een functioneel beheerder zelf zijn gedefinieerd: in de tabel tbscreencolumns (tegel Schermkolomdefinitie tabellen standaard-api) is de kolom dvscreenxml in dat geval gevuld met de eigen opmaak. In bovengenoemde controlelijst is dat zichtbaar indien de kolom Afwijkend scherm aangevinkt is. Er gaat dus pas iets mis indien een regel in deze lijst is opgenomen zonder dat de kolom Afwijkend scherm is gevuld. Een reden is vaak dat de verwijzing en benaming van de feitelijke opmaakxml-file in de AAR van elkaar verschillen in kamelennotatie.

Filterdefinitie bij lijstscherm

Zie: Definitie filterblokken op lijstschermen. Indien er gewenst is dat het lijstscherm gefilterd kan worden zal er een filter xml moeten worden gedefinieerd. De naam van de xml moet beginnen net 'MDFC_' en de rest van de naam moet gelijk zijn als de xml-naam van het lijstscherm (zonder de prefix MDDLC_).

Ga naar gewenste kaart in tbsysstandardtable (beheertegel: Tabellen standaardAPI):

Knoppen op lijst- en detailschermen

Knoppen die binnen een detailscherm dat door tbsysstandardtable wordt gedefinieerd- bijv. achter een specifieke kolom - moeten verschijnen, worden in de xml van dat detailscherm gedefinieerd inclusief de actions die aan die knoppen verbonden moeten zijn: dus - in bovenstaand voorbeeld - in de MDFC_getTest_MWPerRechtengroepList.xml. Zie Scherminformatie voor detailschermen.

De knoppen die linksonder op het gedefinieerde lijst- of detailscherm moeten komen, kunnen binnen de detailkaart van tbSysStandardTable in het blok Knoppen worden gedefinieerd. Deze informatie wordt in de tabel tbSysstandardButton opgeslagen: een dochtertabel van tbsysstandardtable.

Per knop zijn de volgende kolommen beschikbaar:

Knop Standaard insertscherm

Om een knop te maken met als doel een standaard insert op een tabel moet bij de knopdefinitie de action startWizard aangeroepen worden met:

voorbeeld insertsysstandardrow

Een voorbeeld van de aanroep van insertSysStandardRow in de basis uitlevering van OpenWave is de insert-knop op het lijstscherm van medewerkers verbonden aan een team.
Zie voor de definitie hiervan: beheerportaal, onder de kolom Scherm-en tegelbeheer de tegel Tabellen Standaardapi en vervolgens de rij in tbsysstandardtable met dvcode = beheer_vwfrmmwteams. Het gaat om de knop Voeg medewerker toe.
Het resultaat is te gebruiken in het beheerportaal onder de kolom Gebruikers de tegel Teams. Op het detailscherm van een team staat de lijst met medewerkers bij dat team. Aan de insert-knop is dus de InsertSysStandardRow-functie verbonden.

Voor de opmaak van standaard insertscherm (de xml) zie: Scherminformatie voor standaard insert- en kopieer.

Knop Standaard kopieerscherm

Om een knop te maken met als doel een standaard insert op een tabel te doen als kopie van de kaart waar de gebruiker op staat moet bij de knopdefinitie de action startWizard aangeroepen worden met:

voorbeeld kopieersysstandardrow

Een voorbeeld van de aanroep van kopieerSysStandardRow in de basis uitlevering van OpenWave is de kopieer-knop op het lijstscherm van de zaaktypes.
Zie voor de definitie hiervan: beheerportaal, onder de kolom Scherm-en tegelbeheer de tegel Tabellen Standaardapi en vervolgens de rij in tbsysstandardtable met dvcode = beheer_vwfrmsoortomgvergs. Het gaat om de knop Kopieer zaaktype.
Het resultaat is te gebruiken in het portaal Zaakbeheer onder de kolom Zaaktypes de tegel Zaaktypes. Op het lijstscherm van de omgevingzaaktypes staat de kopieer-knop waar dus de kopieerSysStandardRow-functie aan verbonden is.

Voor de opmaak van standaard insertscherm (de xml) zie: Scherminformatie voor standaard insert- en kopieer.

Knop Standaard verwijderen van een kaart

Om een knop te maken met als doel een standaard verwijderactie op een kaart van een tabel moet bij de knopdefinitie de action startWizard aangeroepen worden met:

voorbeeld deletesysstandardrow

Een voorbeeld van de aanroep van deleteSysStandardRow in de basis uitlevering van OpenWave is de min-knop op het lijstscherm van de adviesinstanties:
Zie voor de definitie hiervan: beheerportaal, onder de kolom Scherm- en tegelbeheer de tegel Tabellen Standaardapi en vervolgens de rij in tbsysstandardtable met dvcode = beheer_tbadviesinstanties. Het gaat om de knop Verwijder adviesinstantie.
Het resultaat is te gebruiken in het beheerportaal onder de kolom Gebruikers de tegel Adviesinstanties. Op het lijstscherm is de min-knop hier dus verbonden aan de deletesysstandardrow-functie.

Deze methode deleteSysStandardRow kijkt naar de voorwaarden gedefinieerd in de kaart uit tbsysstandardtable met dvcode = de vierde parameter.

In deze kaart kan de Kolomnaam blokkering uit parenttabel gevuld zijn, hetgeen betekent dat indien de achterliggende waarde van deze kolom gevuld is - en parenttable is van toepassing- , dat dan de verwijderactie niet door kan gaan. In deze kaart kan de Kolomnaam blokkering uit hoofdtabel/view gevuld zijn, hetgeen betekent dat indien de achterliggende waarde van deze kolom gevuld is, dat dan de verwijderactie niet door kan gaan.

In de dochtertabel tbsysstandardbutton is bij de betreffende deletesysstandardrowkaart gedefinieerd naar welke rechten het programma dient te kijken.

Voor verwijderacties op de hoofdtabellen houdt OpenWave rekening met compartiment.

OpenWave waarschuwt ook met naam en toenaam dat een verwijderactie niet plaats kan vinden indien er een foreign key in de weg zit.

Knop insert of synchroniseer vanuit een derde codetabel

Toepassingen:

In beide gevallen is de sysstandaardtabel in kwestie een dochtertabel van een parent.

Een voorbeeld van synchronisatiegebruik in de basis uitlevering van OpenWave is de koppeling van documentsjablonen aan een of meer groepen:
Zie voor de definitie hiervan: beheerportaal, onder de kolom Scherm- en tegelbeheer de tegel Tabellen Standaardapi en vervolgens de rij in tbsysstandardtable met dvcode = beheer_vwfrmkopdocaandocsoort. Het gaat om de knop Sjabloon koppelen aan sjabloongroepen. Het resultaat is te gebruiken in het beheerportaal onder de kolom Werkbeheer de tegel Documentsjablonen. Op het detailscherm van een willekeurig sjabloon is een lijst opgenomen van de groepen waaraan dat sjabloon is verbonden. De plusknop is hier dus verbonden aan de koppelsysstandardrow-functie.

1)
mag ook een viewnaam zijn op basis van de code tabel)
  • de tweede deelparameter is de veldnaam van de foreign-key kolom uit de koppeltabel naar de codetabel
  • de derde deelparameter is de veldnaam van de primary key van de codetabel
  • de vierde deelparameter is een veldnaam uit de codetabel of view die getoond kan worden in het aanvinkscherm. Mag leeg zijn
  • de vijfde deelparameter is een veldnaam uit de codetabel of view die getoond moet worden in het aanvinkscherm. Mag NIET leeg zijn
  • de zesde deelparameter is optioneel en bevat - indien gevuld - een veldnaam uit de codetabel of view die een moduleletter bevat. Mag dus leeg zijn.
  • de zevende deelparameter is optioneel en bevat - indien gevuld - een veldnaam uit de codetabel of view die gevuld kan zijn met een vervaldatum. Indien gevuld dan zijn de vervallen items niet zichtbaar in het keuzelijstscherm
  • de achtste deelparameter is optioneel en bevat een extra where clausule met kolommen uit de codetabel/view die aan de query die ten grondslag aan de keuzelijst wordt toegevoegd. Bijvoorbeeld substr(dvcode,1,1) = 'R' of dnminwaarde > 40
  • de negende parameter is optioneel en bevat een verwijzing naar tbqueries (dvcode). Indien gevuld dan zal OpenWave de codetabel tonen volgens die select-query. Die query moet aan een aantal eisen voldoen:
    • Er moet een kolomnaam zijn met de naam id, waarvan de inhoud bij koppelen overgenomen wordt in de kolom aangeduid in de tweede deelparameter van param3 (de veldnaam van de foreign-key kolom uit de koppeltabel naar de codetabel)
    • Er moet een kolom zijn met de naam multiselect waarvan de waarde T of F moet zijn.
    • Er moet een kolom zijn met de naam dnkey waarvan de inhoud een primary key van de codetabel is.
    • Er moet een kolomnaam zijn met als naam de inhoud van vijfde deelparameter van param3 en deze kolom moet een gevulde waarde hebben.
    • Indien de vierde deelparameter van param3 gevuld is, dan moet er een kolomnaam zijn met als naam de inhoud van vierde deelparameter van param3.
    • De query kan gebruik maken van de variable {id} die on the fly wordt gevuld met de waarde van %keyparent% (dus met de primary key van de parenttabel)
  • param4: de code uit tbsysstandardtable die verwijst naar de kaart waar de betreffende tabel in is gedefinieerd.
In beide toepassingsgevallen kan de gebruiker één of meer rijen aan- of uitvinken van de codetabel in een wizardscherm.
De selectie van rijen op die codetabel wordt beïnvloed door:
  • Indien de zevende deelparameter van param3 is gevuld met de kolomnaam van een datumveld dan gaat OpenWave er van uit dat het hier gaat om een vervaldatum en worden alleen die kaarten uit de codetabel getoond die niet vervallen zijn.
  • De moduleletter (de derde deelparameter van param2 die verwijst naar kolomnaam van de parenttabel, en de zesde deelparameter van param3 die verwijst naar kolomnaam van de codetabel) wordt - indien beide deelparameters gevuld - om de rijen van de codetabel te filteren op de moduleletter van de parenttabel. Mogen dus leeg zijn. Let op de inhoud van de modulekolom van de parenttabel moet in dat geval gevuld zijn met één letter namelijk: W,A,O,I,H of E).
  • De rijen van de codetabel kunnen aan nog een voorwaarde moeten voldoen indien de achtste deelparameter van param3 gevuld is met een statement dat gebruikt kan worden in de where clausule van de SQL die ten grondslag ligt aan het oproepen van de codetabelrijen.
De vierde deelparameter van param2 (met de waarde 0, leeg of 1) is bepalend voor wat OpenWave met de selectie van rijen uit de codetabel gaat doen: Indien
  • leeg of de waarde 0 dan zal OpenWave synchroniseren. Dat betekent dat op basis van de NIET aangevinkte rijen OpenWave kijkt of er rijen met foreign keys bestaan in de sysstandaardtabel (de koppeltabel) met een verwijzing naar zo'n niet aangevinkte rij. Zo ja dan worden deze verwijderd uit de koppeltabel. Vervolgens wordt gekeken of er aangevinkte rijen zijn in de codetabel die nog geen verwijzing hebben vanuit de standaardtabel. Zo ja worden op basis daarvan nieuwe kaarten aangemaakt in de syststandaardtabel (de koppeltabel) met gevulde foreign key naar de parenttabel en gevulde foreign key naar de codetabel.
  • de waarde 1 dan zal OpenWave op basis van elk van de aangevinkte rijen een kaart aanmaken in de sysstandaardtabel (de koppeltabel) met gevulde foreign key naar de parenttabel en gevulde foreign key naar de codetabel.

voorbeeld koppelsysstandardrow zonder query-verwijzing

De knop Sjabloon koppelen aan sjabloongroepen is als volgt gedefinieerd bij de sysstandaartabel met code beheer_vwfrmkopdocaandocsoort:
action = //startwizard//
param1 = //koppelSysStandardRow//
param2 = //%keyparent%;dvomschrijving;dvvantoepop;0//
param3 = //tbdocumentsoorten;dnkeydocsoort;dnkey;;dvomschrijving;dvindelenin;ddvervaldatum;1=1//
param4 = //beheer_vwfrmkopdocaandocsoort//
Op grond hiervan toont OpenWave een lijstje uit tbdocumentssoorten (de sjabloongroepen) die de gebruiker nog aan aan- en uitvinken. De aangevinkte kaarten van deze codetabel worden overgenomen in tbkopdocaandocsoort. Tbkopdocaandocsoort is een dochtertabel van TbDocumenten (de sjablonen). Dus:
  Tbdocumenten is de parentabel
  Tbkopdocaandocsoort is de koppeltabel 
  Tbdocumentsoorten is de codetabel 
param2
  • de eerste deelparameter %keyparent% is de waarde van de primary key van tbdocumenten van de kaart waarvanuit de functie koppelsysstandardrow() wordt aangeroepen. Deze wordt in dit voorbeeld on the fly door OpenWave gevuld.
  • de tweede deelparameter dvomschrijving is een veldnaam uit tbdocumenten waarvan de waarde gebruikt wordt in de koptekst boven de codetabellijst
  • de derde deelparameter dvvantoepop is een veldnaam uit tbdocumenten die een moduleletter bevat (B,O,W,C,I,E of H) die gebruikt kan worden om de codetabel te filteren
  • de vierde deelparameter 0 betrekent dat de aangevinkte kaarten uit de codetabel Tbdocumentsoorten worden overgenomen in tbkopdocaansoort en dat de niet aangevinkte kaarten juist worden verwijderd
param3
  • de eerste deelparameter tbdocumentsoorten geeft de naam van de codetabel
  • de tweede deelparameter dnkeydocsoort is de naam van de foreign key-kolom uit tbkopdocaandocsoort richting tbdocumentsoorten
  • de derde deelparameter dnkey is de naam van de primary key-kolom uit tbdocumentsoorten waar dnkeysocsoort naar verwijst
  • de vierde deelparameter is leeg en worfdt dus niet gebruikt.
  • de vijfde deelparameter dvomschrijving is een kolomnaam uit tbdocumentsoorten die getoond moet worden in de keuzelijst
  • de zesde deelparameter dvindelenin is een kolomnaam uit tbdocumentsoorten waarop de waarde van de derde deelparameter van param2 wordt gefilterd
  • de zevende deelparameter ddvervaldatum is een vervaldatumkolomnaam uit tbdocumentsoorten waarop wordt gefilterd (alleen geldige)
  • de achtste deelparameter 1=1 is de extra where clausule waarop de lijst uit tbdocumentsoorten wordt gefilterd (in dit geval dus altijd true)
  • de negende deelparameter is leeg. Dus Openwave construeerst zelf een lijst uit tbdocumentsoorten op grond van de andere deelparameters.
param4 beheer_vwfrmkopdocaandocsoort bevat de codering van de betrokken standardtabel (tbstandardtable.dvcode) op grond waarvan Openwave de relatie-gegevens tussen tbkopdocaandocsoort en tbdocumenten ophaalt.

De query die OpenWave construeert ziet er als volgt uit - ervanuitgaande dat %keyparent% de waarde 100 geeft en de module in dvvantoepop de waarde W:
select b.dnkey as id, 'T' as multiselect,b.dnkey as dnkey, b.dvomschrijving
   from tbkopdocaandocsoort a inner join tbdocumentsoorten b on (a.dnkeydocsoort= b.dnkey) 
   where a.dnkeydocument = 100 
 UNION 
 select dnkey as id, 'F' as multiselect,dnkey as dnkey, dvomschrijving 
   from tbdocumentsoorten where dnkey 
   not in (select dnkeydocsoort from tbkopdocaandocsoort  where dnkeydocument = 100) 
   and (ddvervaldatum is null or ddvervaldatum >= fn_vandaag(0)) 
   and 1 = 1 and instr('W',dvindelenin) > 0  order by dvomschrijving
Dus eerst een opsomming met multiselect = T van alle documentsoorten die reeds in tbkopdocaandocsoort en vervolgens een opsomming met multiselect = F van alle documentsoorten die NIET in tbkopdocaandocsoort voorkomen (bij document met dnkey = 100).

voorbeeld koppelsysstandardrow met eigen query-verwijzing

Deze Query die OpenWave zelf construeert bij ontbreken van de negende deelparameter bij param3 mag de gebruiker ook zelf construeren en anders maken. Er moet dan een verwijzing in de negende deelparameter komen naar een query. Stel die query heet MijnEigenQuery dan is param3:
tbdocumentsoorten;dnkeydocsoort;dnkey;;dvomschrijving;;;;Mijneigenquery
Deze query kan er dan op grond van bovenstaand voorbeeld als volgt uit zien:
select b.dnkey as id, 'T' as multiselect, b.dvomschrijving
   from tbkopdocaandocsoort a inner join tbdocumentsoorten b on (a.dnkeydocsoort= b.dnkey) 
   where a.dnkeydocument = {id}
 UNION 
 select dnkey as id, 'F' as multiselect,dnkey as dnkey, dvomschrijving 
   from tbdocumentsoorten 
         where dnkey not in (select dnkeydocsoort from tbkopdocaandocsoort where dnkeydocument = {id}) 
   and (ddvervaldatum is null or ddvervaldatum >= fn_vandaag(0))
         and dnkey > 1000  
Hierbij geldt dus:
  • De primary key van tbdocumenten die on the fly wordt vervangen moet weergegegevn worden als {id}
  • Er moet een kolom dlmultiselect zijn met waarde T of F
  • Er moet een kolom dnkey zijn met de primary key van de codetabel (tbdocumentsoorten)