Datasets en dataregels

Geheugenvelden van het type dataset of dataregel worden gebruikt voor waarden die bestaan uit meerdere kolommen en regels: een tabel.


Voorbeeld van een tabel


Bovenstaande tabel bestaat uit drie debiteuren met, per debiteur, een vijftal kolommen.


Een tabel bestaat dus niet uit 1 waarde, maar uit een verzameling gegevens (set data). In BPM Server noemen we een tabel met gegevens een dataset. De regels in een dataset noemen we dataregels.


Een verzameling gegevens (dataset) kunnen we uit diverse bronnen ophalen. Daarvoor kent BPM Server diverse acties:



Met alle hierboven genoemde acties kunnen datasets opgehaald worden, waarna deze in een geheugenveld van het type Dataset worden geplaatst.

Dataset geheugenveld

Een dataset bevat één of meerdere dataregels. Elke dataregel bestaat weer uit één of meerdere kolommen. U kunt de inhoud van een dataset op verschillende manieren benaderen.

Dataset lus

Via de actie Dataset Lus kunt u alle dataregels van de opgehaalde dataset doorlopen. In deze actie zal dan elke regel steeds in een geheugenveld van het type Dataregel worden geplaatst. U kunt daarna de inhoud van de dataregel opvragen.

Opvragen in dataset aanwezige kolommen

Indien u wilt weten welke kolommen de dataregels van een dataset bevatten, kunt u deze informatie opvragen via de parameter ? (vraagteken).


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataset, genaamd dsDebiteuren, gevuld met de voorbeeldtabel in dit hoofdstuk.

{!dsDebiteuren( ? )}


Resultaat

DebNr [String]; Naam [String]; Plaats [String]; Omzet [Decimal]; FactuurDatum [DateTime]


Het is ook mogelijk om de kolommen van een dataset op te vragen zonder het datatype via de parameter ?FieldNames.


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataset, genaamd dsDebiteuren, gevuld met de voorbeeldtabel in dit hoofdstuk.

{!dsDebiteuren( ?FieldNames )}


Resultaat

DebNr; Naam; Plaats; Omzet; FactuurDatum


Het is eveneens mogelijk om de aanwezige kolommen in een CSV-lijst weer te geven. Hiervoor gebruikt u de parameter ?Columns.


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataset, genaamd dsDebiteuren, gevuld met de voorbeeldtabel in dit hoofdstuk.

{!dsDebiteuren( ?Columns )}


Resultaat

Name; Type

DebNr; String

Naam; String

Plaats; String

Omzet; Decimal

FactuurDatum; DateTime


Om de aanwezige kolommen in een lijst weer te geven zonder datatypes kunt u de parameter ?ColumnNames gebruiken.


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataset, genaamd dsDebiteuren, gevuld met de voorbeeldtabel in dit hoofdstuk.

{!dsDebiteuren( ?ColumnNames )}


Resultaat

Name

DebNr

Naam

Plaats

Omzet

FactuurDatum

Opvragen gehele tabel

Indien u de gehele inhoud van een dataset geheugenveld wilt opvragen, dan geeft u geen parameter op.


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataset, genaamd dsDebiteuren, gevuld met de voorbeeldtabel in dit hoofdstuk.

{!dsDebiteuren}


Resultaat

"1401";"Van Hasteren B.V.";"BREDA";1250;"2013-03-15"

"1412";"Burgerman Hekmaterialen";"ZWIJNDRECHT";750;"2013-02-28"

"1433";"Zwaluwvlucht Consultancy";"EINDHOVEN";1000;"2013-01-14"


Indien u deze inhoud wilt tonen inclusief een kopregel (de eerste regel, waarin de namen van de kolommen worden weergegeven), dan kunt u deze informatie opvragen via de parameter ?CSV.


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataset, genaamd dsDebiteuren, gevuld met de voorbeeldtabel in dit hoofdstuk.

{!dsDebiteuren( ?CSV )}


Resultaat

DebNr;Naam;Plaats;OmzetBedrag;Factuurdatum

"1401";"Van Hasteren B.V.";"BREDA";1250;"2013-03-15"

"1412";"Burgerman Hekmaterialen";"ZWIJNDRECHT";750;"2013-02-28"

"1433";"Zwaluwvlucht Consultancy";"EINDHOVEN";1000;"2013-01-14"


Het is daarnaast ook mogelijk om de inhoud van de dataset weer te geven in EDF-formaat. U kunt deze informatie opvragen via de parameter ?EDF.


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataset, genaamd dsDebiteuren, gevuld met de voorbeeldtabel in dit hoofdstuk.

{!dsDebiteuren( ?EDF )}


Resultaat

#Table1;DebNr|S;Naam|S;Plaats|S;OmzetBedrag|DC;Factuurdatum|DT

1401;Van Hasteren B.V.;BREDA;1250;2013-03-15

1412;Burgerman Hekmaterialen;ZWIJNDRECHT;750;2013-02-28

1433;Zwaluwvlucht Consultancy;EINDHOVEN;1000;2013-01-14


Ook is het mogelijk om de inhoud van de dataset weer te geven in vaste kolom-formaat. U kunt deze informatie opvragen via de parameter ?FLAT. De kolomwaarden zijn standaard links uitgelijnd. Alleen de kolommen met datatype decimaal (DC) worden rechts uitgelijnd.


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataset, genaamd dsDebiteuren, gevuld met de voorbeeldtabel in dit hoofdstuk.

{!dsDebiteuren( ?FLAT )}


Resultaat

DebNr Naam                     Plaats      OmzetBedrag Factuurdatum

1401  Van Hasteren B.V.        BREDA              1250 2013-03-15

1412  Burgerman Hekmaterialen  ZWIJNDRECHT         750 2013-02-28

1433  Zwaluwvlucht Consultancy EINDHOVEN          1000 2013-01-14


Het is tevens mogelijk om de inhoud van een dataset weer te geven als een hash-waarde. U kunt de hash-waarde opvragen via de parameter ?HASH.


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataset, genaamd dsDebiteuren, gevuld met de voorbeeldtabel in dit hoofdstuk.

{!dsDebiteuren( ?HASH )}


Resultaat

FD97D0FBA017DF166F9264CAC9477F0C

Opvragen kolom in dataregel

Indien u de waarde van een kolom uit een bepaalde dataregel wilt weten dan geeft u twee parameters op: het regelnummer (0-based index) en het kolom nummer (0-based index) of de kolomnaam.


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataset, genaamd dsDebiteuren, gevuld met de voorbeeldtabel in dit hoofdstuk. U kunt de gewenste kolom opgeven via een kolomindex-nummer:

{!dsDebiteuren( 0 ; 1 )}


Resultaat

Resultaat is de waarde van de 2de kolom (= index 1) uit de 1ste dataregel (= index 0): Van Hasteren B.V.


U kunt de gewenste kolom opgeven via de kolomnaam, wat eenvoudiger/duidelijker is:


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataset, genaamd dsDebiteuren, gevuld met de voorbeeldtabel in dit hoofdstuk. U kunt de gewenste kolom opgeven via een kolomindex-nummer:

{!dsDebiteuren( 0 ; "Naam" )}


Resultaat

Resultaat is de waarde van de kolom met de naam 'Naam' uit de 1ste dataregel (= index 0): Van Hasteren B.V.


Indien bij het opvragen een niet bestaande kolom wordt opgevraagd, zal tijdens het uitvoeren van de taak een foutmelding worden gegeven. In deze foutmelding staat een opsomming van de beschikbare kolomnamen:


Voorbeeld

Opvragen optionele kolom in dataregel

Indien u een waarde wilt weten uit een bepaalde dataregel van een kolom die dan weer wel en dan weer niet kan voorkomen, dan kunt u na de omschrijving van de kolom een vraagteken (?) opgeven.

Hierdoor wordt er geen fout gegenereerd in de actie, maar een lege waarde.


Voorbeeld

Stel: het veld 'Afleverdatum' wordt alleen in een XML-bestand getoond, indien deze is ingevuld in een programma.

U kunt de waarde uit de optionele kolom als volgt opvragen:

{!dsOpdracht( 0 ; "AfleverDatum?" )}


Het vraagteken kan ook buiten de aanhalingstekens worden gebruikt.


Voorbeeld

Stel in kolomnummer 2 (= index 1) bevindt zich het optionele veld 'AfleverDatum'. De waarde van dit veld kan dan op de volgende manieren worden opgevraagd:

{!dsOpdracht( 0 ; 1? )

{!dsOpdracht( 0 ; "AfleverDatum?" )}

{!dsOpdracht( 0 ; "AfleverDatum"? )}

Opvragen kolom in dataregel a.d.h.v. sleutelveld

Indien u de waarde van een kolom uit een dataregel wilt weten, waarvan de waarde in de eerste kolom (= sleutelveld) van de dataset bekend is, dan geeft u dit aan door de bekende waarde en het kolom nummer (0-based index) of de kolomnaam op te geven.


Voorbeeld

Stel: u wilt de waarde uit de kolom Naam weten van de klant met code ABC. U kunt de gewenste waarde opvragen op de volgende manier:

{!dsKlanten( "ABC" ; "Naam" )}


Resultaat

Het resultaat is de Naam van klant ABC

Let op

  • De opgegeven waarde wordt alleen gezocht in de eerste kolom (het zogenaamde sleutelveld).
  • Indien de waarde in de eerste kolom vaker voorkomt, zal de regel worden gebruikt waarin de waarde als eerste voorkomt.

Opvragen kolom in dataregel a.d.h.v. optioneel sleutelveld

Stel, u wilt de waarde van een kolom uit een dataregel weten, waarvan de waarde in de eerste kolom (= sleutelveld) van de dataset zou moeten staan, maar u weet niet zeker of deze waarde ook daadwerkelijk in het sleutelveld aanwezig is. In dat geval geeft u dit aan door de sleutelwaarde, gevolgd door een vraagteken (?), en het kolom nummer (0-based index) of de kolomnaam op te geven.


Voorbeeld

Stel: u wilt de waarde uit de kolom Naam weten van de klant met code ABC. U weet echter niet of klant ABC in de dataset aanwezig is. U kunt de gewenste waarde opvragen op de volgende manier:

{!dsKlanten( "ABC"? ; "Naam" )}


Resultaat

Het resultaat is de Naam van klant ABC. Indien de klant ABC niet zou bestaan, zou hier een lege waarde worden geretourneerd.

Let op

  • De opgegeven waarde wordt alleen gezocht in de eerste kolom (het zogenaamde sleutelveld).
  • Indien de waarde in de eerste kolom vaker voorkomt, zal de regel worden gebruikt waarin de waarde als eerste voorkomt.

Opvragen statistische berekeningen

U kunt een statistische berekening maken op alle dataregels van een dataset. Zo kunt u bijvoorbeeld het totaal berekenen van alle bedragen (in alle dataregels van de dataset) in een bepaalde kolom.


De notatie van de op te geven parameter is als volgt:


<regel index> ; <berekening>:<kolomindex/-naam>


De regelindex moet worden opgegeven, maar zal verder genegeerd worden. U kunt hier bijvoorbeeld altijd een 0 opgeven.


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataset, genaamd dsDebiteuren, gevuld met de voorbeeldtabel in dit hoofdstuk. U kunt nu de totale omzet van alle debiteuren berekenen via de volgende opgave:

{!dsDebiteuren( 0 ; "SUM:OmzetBedrag" )}


Met SUM geeft u aan dat de te gebruiken statistische berekening een totaal moet zijn.


Hieronder volgt een overzicht van alle mogelijke statistische berekeningen die u kunt uitvoeren op dataset-geheugenvelden:


Code berekening

Uitleg

AVG

Berekent het gemiddelde van de waarden in de opgegeven kolom (alleen numerieke waarden).

AVGNN

Berekent het gemiddelde van de waarden in de opgegeven kolom (alleen numerieke waarden). Lege waarden (zogenaamde null-waarden) worden overgeslagen.

COUNT

Berekent het aantal dataregels in de dataset.

COUNTNN

Berekent het aantal dataregels in de dataset waar de waarde van de opgegeven kolom niet leeg is (zogenaamde null-waarden).

COUNTNULL

Berekent het aantal dataregels in de dataset waar de waarde van de opgegeven kolom leeg is (zogenaamde null-waarden).

DCOUNT

Berekent het aantal uniek voorkomende waarden van de opgegeven kolom.

DCOUNTNN

Berekent het aantal uniek voorkomende waarden van de opgegeven kolom met uitzondering van die dataregels waarde de waarde leeg is (zogenaamde null-waarden).

DLIST

Genereert een gesorteerde CrLf (ENTER/regeleinde) gescheiden lijst van unieke waarden in een, bij voorkeur, tekstueel datasetveld. De sortering is gebaseerd op tekst.

GAPS

Genereert een lijst met gaten in reeksen (numeriek of datum).


Voorbeeld

{!dsFacturen( 0 ; "GAPS:FactuurDatum" )}


Indien de dataset voor de factuurdatum deze waarde bevat:

15-05-2016

16-05-2016

18-05-2016

22-05-2016


Dan is dit het resultaat

2016-05-17;2016-05-17

2016-05-19;2016-05-21


Het resultaat is dus één of meerdere reeksen waarvan de vanaf- en t/m-waarden zijn geschieden door een puntkomma (;).


N.B.: de waarden in de dataset hoeven niet op volgorde te worden aangeboden. Deze functie zal zelf eerst een sortering uitvoeren.

LIST

Genereert een gesorteerde CrLf (ENTER/regeleinde) gescheiden lijst van waarden in een, bij voorkeur, tekstueel datasetveld. De sortering is gebaseerd op tekst.

MIN

Berekent de laagste waarde uit het opgegeven dataset veld.

MAX

Berekent de hoogste waarde uit het opgegeven dataset veld.

SUM

Berekent het totaal van de waarden in de opgegeven kolom (alleen numerieke waarden).


Let op: Indien de dataset, waarop de statistische berekening wordt uitgevoerd, leeg is (de dataset geeft een null-waarde), wordt als resultaat 0 (nul) gegeven.

Dataregel geheugenveld

Een dataset bevat één of meerdere dataregels. Elke dataregel bestaat weer uit een of meerdere kolommen.

U kunt de inhoud van een dataregel op verschillende manieren benaderen.

Opvragen in dataregel aanwezige kolommen

Indien u wilt weten welke kolommen de dataregel bevat, kunt u deze informatie opvragen via de parameter ?.


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataregel, genaamd drDebiteur, gevuld met de eerste regel uit de voorbeeldtabel in dit hoofdstuk.

{!drDebiteur( ? )}


Resultaat

DebNr [String]; Naam [String]; Plaats [String]; Omzet [Decimal]; FactuurDatum [DateTime]

Opvragen inhoud gehele dataregel

Indien u de gehele inhoud van een dataregel geheugenveld wilt opvragen, dan geeft u geen parameter op.


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataregel, genaamd drDebiteur, gevuld met de eerste regel uit de voorbeeldtabel in dit hoofdstuk.

{!drDebiteur}


Resultaat

"1401";"Van Hasteren B.V.";"BREDA";1250;"2013-03-15"


Het is tevens mogelijk om de inhoud van een dataregel weer te geven als een hash-waarde. U kunt de hash-waarde opvragen via de parameter ?HASH.


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataregel, genaamd drDebiteur, gevuld met de eerste regel uit de voorbeeldtabel in dit hoofdstuk.

{!drDebiteur( ?HASH )}


Resultaat

A171B1B6B590E8EED7F8CDE72900F270

Opvragen kolom in dataregel

Indien u de waarde van een kolom uit een dataregel wilt weten dan geeft u de gewenste kolom als parameter op: het kolomnummer (0-based index) of de kolomnaam.


Voorbeeld

Stel: u heeft een geheugenveld van het type Dataregel, genaamd drDebiteur, gevuld met de eerste regel uit de voorbeeldtabel in dit hoofdstuk. U kunt de gewenste kolom opgeven via een kolomindex-nummer.

{!drDebiteur( 1 )}


Resultaat

Resultaat is de waarde van de 2de kolom (= index 1): Van Hasteren B.V.


U kunt de gewenste kolom opgeven via de kolom naam, wat eenvoudiger/duidelijker is:



Voorbeeld

Stel: u heeft een geheugenveld van het type Dataregel, genaamd drDebiteur, gevuld met de eerste regel uit de voorbeeldtabel in dit hoofdstuk. U kunt de gewenste kolom opgeven via een kolomindex-nummer.

{!drDebiteur( "Naam" )}


Resultaat

Resultaat is de waarde van de kolom met de naam 'Naam': Van Hasteren B.V.

Opvragen optionele kolom in dataregel

Indien er een waarde wordt opgevraagd uit een kolom die dan weer wel en dan weer niet kan voorkomen in een dataregel, dan kunt u na de omschrijving van de kolom een vraagteken (?) opgeven.

Hierdoor wordt er geen fout gegenereerd in de actie, maar een lege waarde.


Voorbeeld

Stel: het veld 'Afleverdatum' wordt alleen in een XML-bestand getoond, indien deze is ingevuld in een programma.

U kunt de waarde uit de optionele kolom als volgt opvragen:

{!drOpdracht( "AfleverDatum?" )}


Het vraagteken kan ook buiten de aanhalingstekens worden gebruikt.


Voorbeeld

Stel in kolomnummer 2 (= index 1) bevindt zich het optionele veld 'AfleverDatum'. De waarde van dit veld kan dan op de volgende manieren worden opgevraagd:

{!drOpdracht( 1? )

{!drOpdracht( "AfleverDatum?" )}

{!drOpdracht( "AfleverDatum"? )}