http://
Viimeksi päivitetty .
Content Provider's Tool eli CPT on sisällöntuottajan työkalu, jolla käsitellään, muokataan, lisätään ja poistetaan dokumenteihin liittyvää metadataa. Projekti on osa TKK/TAI tutkimuskeskuksen SmartPush-projektia, jossa tutkitaan älykkäiden agenttien käyttöä informaation täsmäjakelussa. Tällä työkalulla tyypillisesti esimerkiksi toimittaja tai informaatikko voi käsitellä dokumentin metadataa, jota sitten käytetään hyväksi toimitettaessa asiakkaille heidän haluamiaan dokumentteja. Tässä teknisessä määrittelyssä esitetään järjestelmän tekninen arkkitehtuuri.
Ohjelma tehdään JBuilder 1.0-kehitysvälineellä Java-kielellä käyttäen hyväksi välineen tarjoamia luokkakirjastoja. Java Development Kitin versionumero on 1.1. Tietokantaliityntä tehdään JDBC API 1.20 -rajapinnalla. Toteutuksessa käytetään hyväksi JBuilderin tarjoamia DataSettejä. DataSet on yksi Borlandin JBCL-luokkakirjastoon kuuluvista tietokantojen käsittelyluokista, joissa on toteutettu valmiiksi mm. tiedon järjestämis-, suodatus- ja etsintätoimintoja. Päätimme käyttää luokkia ohjelmassa, koska ne helpottavat mm. käyttöliittymän toteutusta merkittävästi. Tietokannasta kyselyllä luotuun DataSet-olioon on mahdollista lisätä ohjelmassa muistinvaraisia apusarakkeita, joita ei tallenneta tietokantaan. Lisätyt sarakkeet voivat sisältää esim. mitä tahansa Object-tyyppisiä olioita.
Tietokantana käytetään Solid-tietokantaa, johon on myöskin JDBC-ajuri. Tietokantassa ylläpidetään tuettavia dimensioita ja niiden hiererkioita sekä eri versioita. Versioinnin avulla voidaan myöhemmin kutakin dokumentti-instanssia tutkia kulloisenkin hierarkian avulla. Tietokannassa on kymmenen taulua, joista sovellus käsittelee kolmea eli dokumentin identifioivaa Documents-taulua, dimension arvon identifioivaa DocumentNodes-taulua sekä tuntemattoman binäärisen metadatan talletukseeen tarkoitettua BinaryData-taulua. Muissa seitsemässä taulussa ylläpidetään järjestelmän tukemia dimensioita ja hierarkioita sekä niiden versioita. Näitä ainoastaan pääkäyttäjä voi muuttaa. Tällä saavutetaan yhtenäinen käsittelykehikko.
Sisällöntuottajan työkalu eli Content Provider's Tool on järjestelmä, jota käytetään internet-dokumentin metatiedon lukemiseen, lisäämiseen ja käsittelemiseen. Tavoitteena on luoda tiedontuottajan työkalu, jolla mahdollisimman joustavasti ja selkeästi lisätään sekä muokataan materiaalien metadataa ja siirretään se jatkokäsittelyä varten. Koska metadatarakenteet muuttuvat ajan kuluessa, täytyy järjestelmän olla sopeutuva muuttuviin metadatamäärittelyihin.
Projekti liittyy TKK/TAI:n tutkimusprojektiin SmartPush, jossa tutkitaan älykkäiden agenttien käyttöä informaation täsmäjakelussa. Ko. tutkimusprojektissa ovat mukana teollisuuspartnereina mm. Tele, WSOY ja Aamulehti-yhtymä. CPT-projekti on osa kokonaisuutta, jossa metatietoa pyritään hyödyntämään siten, että push-tekniikalla voitaisiin "pukata" asiakkaalle dokumentteja hänen toivomastaan aihepiireistä. Kun sisällöntuottaja pystyy hallitsemaan ja tuottamaan metadataa, voi agentti tehokkaammin tehdä päätöksiä siitä, miten tietoa käsitellään ja hyödynnetään. Kuvassa 1 esitetään CPT:n sijoittuminen SmartPush-kokonaisuuteen. Näet kuvan suurempana klikkaamalla tästä.
Kuva 1. SmartPush-kokonaisuus (Teppo Kurki, TAI Tutkimuskeskus, 1997)
CPT järjestelmä on tarkoitettu sisällöntuottajien käyttöön ja sen tehtävät ovat:
Järjestelmään ja sen dokumentteihin liittyviä termejä ovat:
Tekninen määrittely on jaoteltu seuraavasti:
Järjestelmän käyttäjät ovat sisällöntuottajia, jotka tyypillisimmin työskentelevät esimerkiksi lehden toimituksessa. Henkilöt voivat olla esimerkiksi toimittajia tai informaatikkoja. Järjestelmän käyttäjät eivät ole välttämättä kovinkaan teknisiä henkilöitä, joten toiminnan on oltava suhteellisen helppokäyttöistä. Tämän vuoksi metatiedon visualisointiin käyttöliittymässä tulee kiinnittää erityistä huomiota. Tyypillisesti käyttäjä käsittelee dokumentteja noin 10-30 kappaletta päivässä ja käy läpi noin 20 eri dimensiota kussakin dokumentissa.
Käyttöympäristönä on Windows NT 4.0, tietokantana on Solid jossa on JDBC-ajuri. Lisäksi järjestelmä käynnistää web-selaimen dokumentin näyttöä varten, joten se tarvitaan myös. Selaimen valinta toteutetaan todennäköisesti niin, että sen valinta on konfiguroitavissa. Javan käyttö mahdollistaa myöskin järjestelmän siirtämisen myös muillekin alustoille kuin Windowsiin, mutta alkuvaiheessa se toteutetaan tuolle alustalle. Kuvassa 2 on esitetty CPT kokonaisuutena.
Kuva 2. CPT Content Provider's Tool
Järjestelmä toimii löyhästi integroituna tuotannon järjestelmiin lehden toimituksessa. Syötteenä annetaan dokumentin URL ja mahdollisten erillisten metadatatiedostojen sijainti. Käyttäjällä on normaalit verkkoyhteydet koneessaan ja hän voi niiden puitteissa antaa dokumentin sijainnin. Järjestelmä tämän projektin puitteissa pystyy tulkitsemaan RDF- ja ASCII-muotoista metadataa.
Tietokantaa käytetään metatietopuun ja sen eri versioiden säilyttämiseen, dokumentti-instanssien (jo käsitellyiden dokumenttien metadatan) säilyttämiseen. Lisäksi tietokantaan laitetaan erilaiset järjestelmän vaatimat konfiguraatiotiedot. Liittymä tietokantaan toteutetaan JDBC-rajapinnalla. SmartPush-projektin muut välineet tulevat myöskin käyttämään tietokantaa hyväkseen. Output-lohkon tulosteet ohjataan tiedostojärjestelmään käyttäjän määrittelemään paikkaan joko omalle työasemalle tai verkkolevylle.
Ohjelma toteutetaan Java-kielellä Windows NT -ympäristöön käyttäen Borland JBuilder -kehitysympäristöä ja sen mukana toimitettavia luokkakirjastoja, kuten BWT-käyttöliittymäluokkia. Vaikka ohjelmistosta tehdään sellainen, että se on mahdollisimman helposti siirrettävissä muihin ympäristöihin, käyttöliittymä suunnitellaan MS Windows -käytäntöjen mukaiseksi
Järjestelmä sisältää neljä osaa, input-lohkon, metadatakäsittelijän metadatakandidaattien generoijan ja output-lohkon. Input-lohkolle syötteenä on dokumentin ja mahdollisten erillisten metadatatiedostojen URL:t. Input-lohko muuntaa niiden sisältämää metadataa metadatakäsittelijän ymmärtämään ja käyttämään muotoon. Tässä projektissa toteutetaan input-lohkossa kahden eri tyyppisen lähdetiedon lukeminen ja käsittely. Nämä ovat RDF- sekä ASCII-muotoinen tieto. Kuitenkin toteutus tehdään modulaarisesti siten, että erimuotoiselle metadatalle voidaan tehdä moduuleja, jotka pystyvät tulkitsemaan myös muuntyyppistä metadataa. Tärkeä osa input-lohkoa on dimensioiden erilaisten nimitysten yhdistäminen järjestelmän käyttämiin dimensioihin
Metadatakäsittelijä lukee input-lohkosta metadataa ja näyttää sen käyttäjälle. Metadatakäsittelijä käynnistää myöskin web-selaimen, jolla käyttäjä voi tarkastella dokumenttia. Metadatakäsittelijä tuo käyttäjälle mahdollisuuden tarkastella metadatakandidaatteja, visualisoi käytössä olevat dimensiot ja niiden mahdollisen hierarkian sekä metadatan sijoittumisen ko. hierarkiaan. Lisäksi se antaa käyttäjälle mahdollisuuden dokumentin metadatan sekä tarvittaessa myös metatietopuun muokkaamiseen. Käyttäjä voi metadatakäsittelijästä käynnistää metadatakandidaattien generointimoduuleita, jotka ovat dimensiokohtaisia.
Metadatakandidaattien generointilohko on modulaarinen toiminto siten, että eri dimensioilla on omat moduulinsa, jotka etsivät alkuperäisestä dokumentista ehdotuksen metadatalle käyttäjän niin halutessa. Tässä projektissa on tarkoituksena lähinnä tarjota rajapinta myöhemmin liitettäville moduuleille. Mahdollisesti sisällöstä avainsanoja tuottavaa ohjelmaa tullaan käyttämään.
Output-lohko tulostaa metadatan ulos järjestelmästä käyttäjän haluamassa muodossa. Output-lohkolle vaatimuksena on myös modulaarisuus, eli järjestelmään täytyy pystyä myöhemmässä vaiheessa liittämään joustavasti uusia tulostusmahdollisuuksia. Output-lohkojen esimerkkeinä toteutetaan järjestelmässä liitynnät ASCII-muotoiseen sekä RDF-muotoiseen datavirtaan.
CPT:n käyttöliittymä on englanninkielinen. Siihen kuuluu pääikkuna, katseluohjelma (WWW-selain) ja joukko valintaikkunoita (dialog box).
Pääikkunassa esitetään yhteenveto käsiteltävänä olevaan tiedostoon liittyvästä metadatasta. Ikkunassa on seuraavat osat: valikkorivi, työkalurivi, tietoalue ja tilarivi. Tietoalueessa on metadataulottuvuuksien luettelo, jossa on kunkin ulottuvuuden nimi ja sisältö esitettynä ulottuvuudelle sopivalla tavalla. Koska ulottuvuuksia on suhteellisen paljon (n. 20), ne eivät mahdu näyttöön kerralla. Tämän vuoksi tietoalueessa on pystysuuntainen vierityspalkki. Tarkempi kuvaus pääikkunan sisällöstä ja toiminnoista on toiminnallisessa määrittelyssä.
CPT:n käyttöliittymään kuuluu katseluohjelma, jolla käsiteltävän tiedoston sisältöä voi tarkastella. Kyseinen ohjelma voi olla esimerkiksi www-selain, ja sen käynnistävä komento määritetään Asetukset-valintaikkunassa.
Tietokannasta kyselyllä luotuun DataSet-olioon on mahdollista lisätä ohjelmassa muistinvaraisia apusarakkeita, joita ei tallenneta tietokantaan. Lisätyt sarakkeet voivat sisältää esim. mitä tahansa Object-tyyppisiä olioita. Tätä voidaan käyttää hyväksi lisäämällä dimensiodatasettiin sarake, johon tallennetaan viittauksia MDDimension-olioihin. Kyseiseen luokkaan on koottu dimensiokohtaisia palveluja, joita käytetään mm. dimensiokohtaisen käyttöliittymän kokoamiseen. Esimerkiksi pääikkunan luettelo luodaan siten, että ohjelma käy läpi DataSetin (tarkkaan ottaen siihen liittyvän DataSetView'n) tietueet yksi kerrallaan. Osa tiedoista, kuten dimension nimi, saadaan suoraan tietokannasta luetuista sarakkeista. Osa tiedoista, kuten dimension sisältämän metadatan visuaalisesta esitysmuodosta vastaava paneli taas saadaan kutsumalla jälkeenpäin lisätyssä sarakkeessa olevan olion metodeja.
Dokumenttiin liittyy kaksi muutakin DataSettiä, joista toisessa on kaikkien siihen liittyvien metadata-alkioiden (tietokannassa Document Node) tiedot, ja toisessa dokumentin yleisiä tietoja, kuten URL. Myös metadata-alkioiden setissä on oliosarake, jossa olevilla Node-olioilla on hierarkian käsittelyä ja esittämistä helpottavia metodeja. Tämä on tarpeellista, koska esimerkiksi hierarkiasolmun polun lukeminen tietokannasta on suhteellisen hankala operaatio. Polkujen lisäksi Node-oliot tarjoavat apua mm. hierarkian haarojen laajentamiseen.
Edellä mainitut MDDimension-oliot saavat tiedon niihin liittyvistä metadata-alkioista document node -datasetistä siten, että kullakin on kyseiseen tietorakenteeseen oma näkymä (DataSetView), josta on suodatettu pois muiden dimensioiden tiedot.
Dokumenttiobjektin tärkeimmät metodit ovat importMD ja exportMD, joilla metadataa siirretään CPT:n ja ulkomaailman välillä, sekä saveChanges, joka tallentaa muistissa olevan datasetin muutokset tietokantaan.
3.3.1 Tietokannan ER-malli
Tietokantana käytetään Solid-tietokantaa ja itse tietokanta on jaettu kymmeneen tauluun. Rajapintana tietokantaan on JDBC API 1.20. Kullakin taululla on oma identifioiva perusavaimensa, jotka luodaan sekvensseillä. Taulujen perustehtävät ovat seuraavat:
Kenttien nimeämiskäytäntö on SmartPush-projektin sisäisen käytännön mukainen. Tietokannan taulujen kentissä ensimmäiset neljä kirjainta muodostetaan taulun nimestä (DimensionAlias -> dial), jonka jälkeen alaviiva _ Tämän jälkeen tulee kentän tyyppiä kuvaavat kirjaimet, joista mallissamme tarvittavat ovat seuraavat:
Seuraavaksi nimeen tulee tieto siitä, onko kyseessä avain. Mikäli se on perusavain niin pk, jos taas kyseessä on viiteavain niin fk. Muutoin ei laiteta mitään. Tämän jälkeen tulee kentän varsinainen nimiosa. Esimerkiksi Versions-taulusta pääavain on vers_ipkVersionID.
Tietokannassa on kaikkiaan 10 taulua, joiden rakenne on esitetty seuraavassa:
VersionChangeLogs
kentän nimi |
tietotyyppi |
relaatio |
Indek-soitu |
selite |
vchl_ipkVersionChangeLogID |
INTEGER |
perusavain |
kyllä |
identifioi muutoksen, saadaan sekvenssistä |
vchl_ifkVersionId |
INTEGER |
viiteavain (Version) |
kyllä |
identifioi version |
vchl_lvChangesMade |
LONG VARCHAR |
|
ei |
Selite muutoksista, joita tehtiin edelliseen versioon, toistaiseksi vapaamuotoinen tekstikenttä |
vchl_vModifierName |
VARCHAR |
|
ei |
Muutoksen tekijän nimi |
vchl_lvExplanation |
LONG VARCHAR |
|
ei |
taulun selitys |
Versions
kentän nimi |
tietotyyppi |
relaatio |
Indek-soitu |
selite |
vers_ipkVersionId |
INTEGER |
perusavain |
kyllä |
juokseva avainnumero, jolla identifioidaan kukin versio, saadaan sekvenssistä |
vers_lvExplanation |
LONG VARCHAR |
|
ei |
taulun selite |
vers_tModificationTimeStamp |
TIMESTAMP |
|
ei |
Aikaleima, joka kertoo muutoksen ajankohdan |
Groups
kentän nimi |
tietotyyppi |
relaatio |
Indek-soitu |
selite |
grou_ipkGroupID |
INTEGER |
perusvain |
kyllä |
identifioi ryhmän, saadaan sekvenssistä |
grou_vGroupName |
VARCHAR |
|
ei |
Ryhmän nimi |
grou_ifkDimensionId |
INTEGER |
Viiteavain (Dimension) |
kyllä |
Ryhmä muodostuu dimensioista |
grou_ifkFirstVersionId |
INTEGER |
Viiteavain (Version) |
kyllä |
Ensimmäisen version id, jossa esiintyy |
grou_ifkLastVersionId |
INTEGER |
Viiteavain (Version) |
kyllä |
Viimeisen version id, jossa esiintyy, jos voimassa niin NULL |
grou_lvExplanation |
LONG VARCHAR |
|
ei |
taulun selite |
Dimensions
kentän nimi |
Tietotyyppi |
relaatio |
Indek-soitu |
selite |
dime_ipkDimensionId |
INTEGER |
Perusavain |
kyllä |
Dimensiolle luotava yksikäsitteinen avain, saadaan sekvenssistä |
dime_ifkFirstVersionId |
INTEGER |
Viiteavain (Version) |
kyllä |
Ensimmäisen version id, jossa esiintyy |
dime_ifkLastVersionId |
INTEGER |
Viiteavain (Version) |
kyllä |
Viimeisen version id, jossa esiintyy, jos voimassa niin NULL |
dime_vName |
VARCHAR |
|
kyllä |
Dimension nimi |
dime_lvInfo |
LONG VARCHAR |
|
ei |
Lisätietoa, jota voidaan käyttää esim. käyttöliittymässä |
dime_vValueType |
VARCHAR |
|
ei |
Kuvaa dimension arvojen tyypin |
dime_sWeights |
TINYINT |
|
ei |
Boolean tyyppinen, joka kertoo, onko dimensiolla painoja |
dime_ifkRoot |
INTEGER |
Viiteavain (Node) |
kyllä |
Hierarkian juurisolmu, jos NULL niin ei hierarkinen |
dime_sMultipleValues |
TINYINT |
|
ei |
boolean-tyyppinen, joka kertoo voiko dimensiolla olla useita arvoja: arvo 1, jos voi ja 0 mikäli ei |
dime_sAllowFree |
TINYINT |
|
ei |
boolean-tyyppinen, joka kertoo voiko dimensiolla olla myös vapaamuotoista tekstiä: arvo 1, jos voi ja 0 mikäli ei |
dime_lvExplanation |
LONG VARCHAR |
|
ei |
taulun selite |
Nodes
kentän nimi |
tietotyyppi |
relaatio |
Indek-soitu |
selite |
node_ipkNodeId |
INTEGER |
Perusavain |
kyllä |
Solmulle luotu id, saadaan sekvenssistä |
node_ifkFirstVersionId |
INTEGER |
Viiteavain (Version) |
kyllä |
Ensimmäisen version id, jossa esiintyy |
node_ifkLastVersionId |
INTEGER |
Viiteavain (Version) |
kyllä |
Viimeisen version id, jossa esiintyy, NULL mikäli voimassa |
node_vValueType |
VARCHAR |
|
ei |
Arvon tyyppi |
node_ifkDimensionId |
INTEGER |
Viiteavain (Dimension) |
kyllä |
mihin dimensioon kuuluu |
node_vName |
VARCHAR |
|
kyllä |
Solmun nimi (esim. sisältöhierarkiassa urheilu) |
node_lvExplanation |
LONG VARCHAR |
|
ei |
taulun selite |
Relations
kentän nimi |
tietotyyppi |
relaatio |
Indek-soitu |
selite |
rela_ipkRelationID |
INTEGER |
perusavain |
kyllä |
identifioi kaaren, saadaan sekvenssistä |
rela_ifkParentNodeId |
INTEGER |
Viiteavain (Node) |
kyllä |
isäsolmun id |
rela_ifkChildNodeId |
INTEGER |
Viiteavain (Node) |
kyllä |
lapsisolmun id |
rela_ifkFirstVersionId |
INTEGER |
Viiteavain (Version) |
kyllä |
ensimmäisen version id, jossa esiintyy |
rela_ifkLastVersionId |
INTEGER |
Viiteavain (Version) |
kyllä |
viimeisen version id, jossa esiintyy |
rela_lvExplanation |
LONG VARCHAR |
|
ei |
taulun selite |
DimensionAlias
kentän nimi |
tietotyyppi |
relaatio |
Indek-soitu |
selite |
dial_ipkAliasID |
INTEGER |
perusavain |
kyllä |
identifioi aliaksen, saadaan sekvenssistä |
dial_vAlias |
VARCHAR |
|
kyllä |
Toinen nimi dimensiolle |
dial_ifkDimensionId |
INTEGER |
Viiteavain (Dimension) |
kyllä |
Sen dimension id, johon alias liittyy |
dial_ifkFirstVersionId |
INTEGER |
Viiteavain (Version) |
kyllä |
Ensimmäisen version id, jossa esiintyy |
dial_ifkLastVersionId |
INTEGER |
Viiteavain (Version) |
kyllä |
Viimeisen version id, jossa esiintyy |
dial_lvExplanation |
LONG VARCHAR |
|
ei |
taulun selite |
DocumentNode
kentän nimi |
tietotyyppi |
relaatio |
Indek-soitu |
selite |
dono_ipkDocumentNodeID |
INTEGER |
perusavain |
kyllä |
identifioi dokumentin solmun, saadaan sekvenssistä |
dono_ipkDimensionId |
INTEGER |
Viiteavain (Dimension) |
kyllä |
viittaa solmun dimensioon |
dono_ifkDocumentId |
INTEGER |
Viiteavain (Document) |
kyllä |
viittaa dokumenttiin |
dono_ifkNodeId |
INTEGER |
Viiteavain (Node) |
kyllä |
kertoo sijainnin hierakiassa |
dono_ifkVersionId |
INTEGER |
Viiteavain (Version), |
kyllä |
versioId versioon, jolla on käsitelty |
dono_iWeight |
INTEGER |
Viiteavain (Dimension) |
kyllä |
paino, joka kertoo kuinka voimakkaasti liittyy ko. kohtaan; prosentteina |
dono_vOriginalDimension |
VARCHAR |
|
kyllä |
alkuperäinen järjestelmään tullut dimension nimi; poistetaan, jos match onnistuu |
dono_vOriginalValueType |
VARCHAR |
|
|
alkuperäinen järjestelmään tullut dimension arvon tyyppi; poistetaan, jos match onnistuu |
dono_lvValueString |
LONG VARCHAR |
|
kyllä |
tekstitiedon talletuspaikka |
dono_sNodeStatus |
TINYINT |
|
ei |
boolean-tyyppinen, joka kertoo onko solmu jo käsitelty |
dono_tTimeStamp |
TIMESTAMP |
|
kyllä |
päivämäärätiedon tallennukseen tarkoitettu |
dono_lvbBinaryData |
LONG VARBINARY |
|
ei |
binääridatan sijoituspaikka. ei käytössä toistaiseksi |
dono_lvExplanation |
VARCHAR |
|
ei |
taulun selite |
Document
kentän nimi |
tietotyyppi |
relaatio |
Indek-soitu |
selite |
docu_DocumentId |
INTEGER |
Perusavain |
kyllä |
Juokseva numero, joka identifioi dokumentin |
docu_VersionId |
INTEGER |
Viiteavain (Version) |
kyllä |
Sen version id, jolla dokumenttia käsitellään |
docu_sStatus |
TINYINT |
|
ei |
Kertoo onko dokumentti käsitelty vai onko se kesken |
docu_vlLocation |
LONG VARCHAR |
|
kyllä |
Dokumentin sijainti, URL tai tiedosto |
docu_vModifierName |
VARCHAR |
|
ei |
dokumentin käsittelijän nimi |
docu_vlSummary |
LONG VARCHAR |
|
ei |
selitystietoa |
docu_lvExplanation |
VARCHAR |
|
ei |
taulun selite |
BinaryData
kentän nimi |
tietotyyppi |
relaatio |
Indek-soitu |
selite |
bina_ipkBinaryDataID |
INTEGER |
perusavain |
kyllä |
identifioi binäääridatan |
bina_ifkDocumentID |
INTEGER |
viiteavain (Document) |
kyllä |
binääridata kuuluu tähän dokumenttiin |
bina_ifkVersionID |
INTEGER |
Viiteavain (Version) |
kyllä |
Sen version id, jolla binääridata on käsitelty |
bina_lvbData |
LONG VARBINARY |
|
ei |
binääridatan tallennuskenttä, tyyppi ei virallisesti blob |
3.3.3 Sekvenssit
Kaikki ID:t luodaan sekvenssien avulla, joita on luotu yksi kutakin taulua kohden. Sekvenssit on luotu seuraavasti:
CREATE SEQUENCE VCHLSEQ;
CREATE SEQUENCE VERSSEQ;
CREATE SEQUENCE GROUSEQ;
CREATE SEQUENCE DIMESEQ;
CREATE SEQUENCE NODESEQ;
CREATE SEQUENCE RELASEQ;
CREATE SEQUENCE DONOSEQ;
CREATE SEQUENCE DIALSEQ;
CREATE SEQUENCE DOCUSEQ;
CREATE SEQUENCE BIDASEQ;
Näitä sekvenssejä voidaan käyttää ainoastaan proseduureista seuraavasti:
CREATE PROCEDURE verspros
RETURNS (versvalue integer)
BEGIN
EXEC SEQUENCE VERSSEQ.NEXT INTO versvalue;
END;
Uuden ID:n arvo saadaan tämän jälkeen kutsumalla proseduuria:
CALL verspros
3.3.4 Oikeudet
Tavallisella käyttäjällä on INSERT- ja UPDATE-oikeudet seuraaviin tauluihin: Documents, DocumentNodes ja BinaryData. Muihin tauluihin on ainoastaan lukuoikeudet. Pääkäyttäjällä on oikeudet kaikkiin tauluihin.