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:
- Haal dataset met SQL query
- Haal dataset uit Bestandsysteem
- Haal dataset uit CSV bestand
- Haal dataset uit Excel bestand
- Haal dataset uit omgeving database
- Haal dataset uit XML bestand
- Haal dataset van FTP server
- Haal dataset van FTP/SSH server
- Haal dataset van IMAP server
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"? )}