Miika Nurminen, 28.2.2006. Täydennetty 8.8.2006, linkkejä päivitetty 16.11.2020
dtd:n viimeisin versio on osoitteessa: https://www.mit.jyu.fi/prolaatu/dtd/processml.dtd
Osoitetta voidaan käyttää kaikissa prosessimallin mukaisissa xml-tiedostoissa, jolloin dtd:tä ei tarvitse pitää paikallisella levyllä ja koodi voidaan validoida missä tahansa.
Esim:
Mallitietokanta:
<!DOCTYPE modelDataBase SYSTEM "https://www.mit.jyu.fi/prolaatu/dtd/processml.dtd">
Prosessi:
<!DOCTYPE process SYSTEM "https://www.mit.jyu.fi/prolaatu/dtd/processml.dtd">
Prosessien väliset linkit:
<!DOCTYPE processModel SYSTEM "https://www.mit.jyu.fi/prolaatu/dtd/processml.dtd">
Järjestelmän sisäisesti _jokaisella_ mallinnuselementillä, johon viitataan, on globaali (myös eri tiedostot huomioiden), yksikäsitteinen tunniste. Sisäisesti tunnisteet ovat seuraavaa muotoa ("An"-tyyliset kohdat on käyttäjän muokattavissa olevaa tietoa):
<documentDef id="documentDef|D1" /> <systemDef id="systemDef|S1" /> <actorDef id="actorDef|A1" /> <process id="process|P1" owner="actorDef|A1" customer="actorDef|A2" /> <processInstance id="process|P1|I1" implementor="actorDef|A1" include="process|P1|I2" /> <actor id="process|P1|I1|actor|A1" ref="actorDef|A1" /> <step id="process|P1|I1|step|S1" actor="process|P1|I1|actor|A1" system="systemDef|S1" target="process|P1|I1" /> <decision id="process|P1|I1|step|S2" overrideid="process|P1|I2|step|S1"/> <terminator id="process|P1|I1|step|S3" /> <flow id="process|P1|I1|flow|F1" from="process|P1|I1|step|S1" to="process|P1|I1|step|S2" /> <document id="process|P1|I1|document|D1" ref="documentDef|D1" /> <document id="process|P1|document|D2" ref="documentDef|D2" />
Loppukäyttäjä näkee normaalitilanteessa ko. id-koodeista vain viimeisen osan ("An"). XML-tiedostoihin tarvitsee kirjoittaa koko koodi vain silloin, kun yksikäsitteisyys sitä edellyttää. Tällaisia tilanteita ovat prosessien väliset linkit ja aliprosessit silloin, kun aliprosessi sijaitsee toisessa prosessissa.
Esim:
<processModel> <process id="p1">Prosessi 1 <processInstance id="i1">Yliprosessi-instanssi <!-- aliprosessi saman prosessin sisällä --> <step id="s1" target="i2" /> <!-- linkki toisessa prosessissa olevaan aliprosessi-instanssiin --> <step id="s1" target="process|p2|i2" /> <terminator id="t1" /> </processInstance> <processInstance id="i2">Aliprosessi-instanssi</processInstance> </process> <process id="p2">Prosessi 2 <processInstance id="i1">Aliprosessi-instanssi toisessa prosessissa </processInstance> <processInstance id="i2">Linkittynyt prosessi-instanssi <terminator id="t1" /> </processInstance> </process> <!-- prosessien välinen linkki --> <flow from="process|p1|i1|t1" to="process|p2|i1|t1" /> </processModel>
Id-koodien täytyy olla yksikäsitteisiä yksittäisten prosessi-instanssien saman elementtityypin sisällä niin, että <step>, <decision> ja <terminator>- elementit tulkitaan kaikki "step"-tyyppisiksi. Esim. seuraava ei ole sallittua:
<step id="s1" /> <decision id="s1" />
Sen sijaan seuraava on mahdollista (mutta ei välttämättä kovin selkeää):
<step id="s1"> <document id="d1" /> </step> <flow id="s1" from="s1" to="d1" /> <decision id="d1" />
jne.
Prosessi-instanssit voivat olla joko tietyn organisaation tekemä toteutus "yleisestä" prosessimäärityksestä ("main"-tyypin instanssi) tai saman prosessin toiseen instanssiin liittyvä aliprosessi ("sub"-tyypin instanssi). Prosessialueet ("group") ryhmittelevät prosesseja yhteen, mutta eivät yleensä sisällä itsesään logiikkaa tai sekvenssejä.
Prosessi-instanssi voi sisällyttää itseensä toisen saman prosessin instanssin elementtejä määriteltyyn abstraktiotasoon asti. Tällöin sisällytetyn prosessin elementtien katsotaan olevan "puoli" tasoa korkeammalla kuin sisällyttävän prosessin. Tämä mahdollistaa esim. sisällytetyn prosessin tasolla 1 olevan elementin syrjäyttämisen sisällyttävän prosessin tasolla 1)
Prosessi-instanssin mallinnuselementti (virta, askel, päätös, terminaattori) voi syrjäyttää minkä tahansa ylemmällä tasolla olevan elementin. jos prosessi-instanssi on sisällyttänyt elementtejä toisesta prosessista, myös näitä voidaan syrjäyttää.
Syrjäytetty elementti sisältää oletuksena kaikki samat ominaisuudet kuin alkuperäinen elementtikin, mutta ominaisuuksia voidaan muuttaa (esim. aktorin vaihto) tai lisätä (esim. dokumentin lisäys). Alkuperäiseen elementtiin viittaavien kaarien katsotaan viittaavan myös syrjäytettyyn elementtiin.
Saman prosessi-instanssin sisällä syrjäyttäminen voidaan merkitä kahdella tavalla. Lyhennetty tapa:
<processInstance id="i1"> <abstraction level="1"> <step id="s1" actor="act1"> <step level="3" actor="act2" /> </step> </abstraction> </processInstance>
On merkitykseltään sama kuin eksplisiittinen tapa:
<processInstance id="i1"> <abstraction level="1"> <step id="s1" actor="act1"> </step> </abstraction> <abstraction level="3"> <step overrideid="s1" actor="act2" /> </abstraction> </processInstance>
Lyhennettyä tapaa tulisi käyttää vain tarkentavien aktoreiden merkkaamiseen. Tavoitetilana on, että lyhennettyä tapaa ei käytetä ollenkaan ja kaikki syrjäyttämiset merkitään yhtenäisellä tavalla.
Jos syrjäytetty elementti sijaitsee samassa prosessi-instanssissa kuin syrjäyttäjä, voidaan siihen viitata tunnisteen viimeisellä osalla. Muussa tapauksessa voidaan käyttää täydellistä id:tä tai prosessi-instanssin mukaista id:tä.
<process id="p1"> <processInstance id="i1"> <abstraction level="1"> <step id="s1" /> </abstraction> <abstraction level="2"> <step overrideid="s1">syrjäytetty s1</step> </abstraction> </processInstance> <processInstance id="i2" include="i1" <abstraction level="1"> <step overrideid="i1|step|s1"> toisesta prosessi-instanssista syrjäytetty s1 </step> <step overrideid="process|p1|i1|step|s1"> toisesta prosessi-instanssista syrjäytetty s1 </step> </abstraction> </processInstance> </process>
Useampi elementti voi syrjäyttää saman ylemmän tason elementin. Tällöin jokainen syrjäytetyistä elementeistä jakaa syrjäytetyn elementin ominaisuudet (ml. viittaavat kaaret). Syrjäytetyt elementit eivät kuitenkaan saa muodostaa ketjuja yms. rakenteita. Tällaisessa tilanteessa tulisi käyttää aliprosessia eikä syrjäyttämistä.
ylemmän tason uimaradoilla käytetään myös yleisempiä aktoreita (esim. TDK vs. OAP, Laitos vs. amanuenssi) jos tj-askeleella ei ole aktoria, käytetään implisiittistä uimarataa "tietojärjestelmät" jos tavallisella prosessiaskeleella ei ole aktoria, käytetään implisiittistä uimarataa "sidosryhmät"
dokumentit merkitään pääsääntöisesti tietovirtojen osaksi. Tällöin raporteissa dokumentti merkitään kuuluvaksi sekä edeltävään että seuraavaan prosessiaskeleeseen. (perusteluna yhteensopivuus PROMI-kuvausten kanssa ja <document>-elementtien määrän vähennys. vrt:
<seq> <step><document /><step> <step><document /><step> </seq>
vs
<seq> <step /> <flow><document /></flow> <step /> </seq>
composite-elementeillä kuvataan rinnakkain ja/tai yhteistyössä tehtävää toimintaa. composite-elementtejä ovat automaattisesti ne graafin yksittäiset solmut, joilla on sama alkupiste ja sama loppupiste (tai ei ollenkaan alku/loppupisteitä) eikä muita kaaria samalla abstraktiotasolla.
jos tietysssä prosessissa suoritetaan rinnakkain useita _toimintosarjoja_, niistä tehdään aliprosesseja (saman prosessin uusia instansseja), jolloin niiden kutsuminen voidaan merkitä yhdellä composite-elementillä ja kutsuvan prosessin kuvaus säilyy yhdessä sekvenssissä.
Huom. jos compositea edeltää <decision>-elementti, compositessa olevat elementit tulkitaan vaihtoehtoisiksi.
compositeen voidaan merkitä kaaria, jos on esim. tarvetta merkitä ehtoja tai dokumentteja vaiheeseen liittyen. Merkintätapa on seuraava:
<composite> <flow to="s1" /> <flow to="s2" /> <step id="s1" /> <step id="s2"/> <flow from="s1" /> <flow from="s2" /> </composite>
Kaikkia kaaria ei tarvitse merkitä. Järjestelmä generoi ne malliin tarvittaessa automaattisesti (kuten <seq>-elementin prosessiaskelten välissä olevat kaaret).
useita composite-elementtejä ei voi merkitä välittömästi peräkkäin.
Desc-elementtiä voidaan käyttää missä tahansa elementissä tarkempien lisätietojen ja kuvauksen merkkaamiseen. Nämä merkitään raportteihin lisätietoina.
tavoitetila: desc-elementtejä ja muita tekstikenttiä tulisi voida muotoilla HTML-elementeillä (mahdollistaisi yksinkertaiset listat ja taulukot osaksi kuvauksia).
Comment-elementtiä voidaan käyttää mallintajan omiin kommentteihin ym. lisätietoihin, joita ei haluta mukaan raportteihin, mutta jotka halutaan sisällyttää malliin osaksi. XML-kommentteja <!-- --> ei tule käyttää, koska ne häviävät mallin muunnosten yhteydessä.