PROCMINERIN TIETOMALLIN SOVELTAMISOHJEITA

Miika Nurminen, 28.2.2006. Täydennetty 8.8.2006, linkkejä päivitetty 16.11.2020

TIEDOSTOT

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">

TUNNISTENUMEROT

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" />

ABSTRAKTIOTASOT

jne.

PROSESSI-INSTANSSIT

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)

ELEMENTTIEN SYRJÄYTTÄMINEN

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ä.

AKTORIT

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 JA KAARET

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-ELEMENTIT

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.

SEKALAISET

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ä.