Please enable JavaScript.
- Johdatus ohjelmistotekniikkaan - ProcMiner-esittely 12.12.2006
- Taustaa
- Prosessimalleista
- Davenport, Sharp & McDermott ym. "Business process is a specfic ordering of work activities across time and place with a beginning and an end containing inputs and outputs. Business processes typically span multiple organizations both within and between enterprises."
- Käytännössä prosessimallin tarkkuus ja esitystapa voi vaihdella suuresti
- esim. visiolla tai vastaavalla piirto-ohjelmalla tehty vuokaavio tai "uimaratakaavio"
- vrt. käyttötapaukset tai algoritmit: prosessi peräkkäisten toimintojen sarjana
- jotta prosessikuvaus olisi tehokkaasti analysoitavissa ja haettavissa, esityksen täytyy perustua
yhtenäiseen tietomalliin- piirto-ohjelma ei käy (esim. visiolla piirrettyjen kaavioiden ylläpitäminen, jos jokin roolinimike muuttuu)
- esim. QPR on mallipohjainen prosessikuvausohjelma
- jotta prosessi olisi automatisoitavissa (=ajettavissa workflow enginellä tai muulla "process aware"-softalla), tarvitaan lähellä ohjelmointikielen tasoa olevaa kuvausta
- Suosittu esitystapa:
- Vaakasuuntainen "uimaratakaavio", jossa kukin toimija on omalla radallaan
- Mallinnuselementteinä aktiviteetti, päätös, tietojärjestelmä ja dokumentti
- Kontrolli- ja tietovirrat erotetaan toisistaan
- Kontrollivirta määrittää prosessin kulun (kontrollivirran alussa olevan toiminnon on päätyttävä, ennen kuin voidaan siirtyä seuraavaan askeleseen)
- Huom. kontrollivirrat ovat usein samanaikaisesti myös tietovirtoja
- Pelkkä prosessin työkulun kuvaus ei riitä - prosessiin liittyy myös metatietoja. esim:
- Prosessin nimi ja prosessin omistaja
- Prosessin alku ja loppu
- Muut prosessit, rajapinnat
- Asiakkaat, heidän tarpeensa ja vaatimuksensa
- Tavoite
- Syötteet, tuotteet ja palvelut
- Tietojärjestelmät ja dokumentit
- Prosessin vaiheet
- Vastuut
- Prosessiin liittyvä osaaminen ja tieto sekä niiden hallinta ja kehittäminen
- Prosessin kehittäminen
- Prosessin ymmärtämisen kannalta prosessikortti on kaaviota oleellisempi. Toisaalta prosessin kulku voidaan lukea kaaviosta automaattisesti.
- Metatietojen tulisi olla samassa tietomallissa kuin kaavion. muuten osittain päällekkäisten tietojen ylläpito vaikeutuu
- ProcMiner
- Yleistä
- Prosessien hallinta- haku- ja julkaisujärjestelmä
- Kehitetty ProLaatuPro-projektissa IT-tiedekunnan prosessien mallinnusta varten
- Tarkoituksena mallintaa yo:n laatujärjestelmätasoa tarkempia prosessikuvauksia, joita voidaan käyttää toimintaohjeina
- Taustalla tiedekunnan henkilöstön vaihtuvuus, organisaatiomuutokset => vakiintuneet käytännöt ovat vasta muotoutumassa, hiljaisen tiedon siirto
- Oma tietomalli mahdollistaa suljettua formaattia joustavamman mallinnuksen ja prosessin osien uudelleenkäytön
- Arkkitehtuuri
- [ arch.pdf ]
- Prosessit kuvataan XML-muodossa
- Graafinen käyttöliittymä tulossa, mutta teksipohjaisessa mallinnuksessa on myös etunsa
- Pakottaa mallinnusvaiheessa keskittymään asiaan, ei tarvitse sohia hiirellä laatikoiden asettelua =)
- Lukurajapinta Visiosta ja Excelistä toteutettu, QPR:ään työn alla
- Dokumenttien ja tietojärjestelmien merkkaamisesta
- Kontrollivirran "ohessa" kulkevat dokumentit merkitään aktiviteettien "väliin": aktiviteetti1 -> dokumentti -> aktiviteetti2. Tällöin voidaan päätellä, että dokumentti liittyy kumpaankin aktiviteettiin (ja rooliin)
- Vain tietovirtojen päissä olevat dokumentit merkitään sen roolin uimaradalle, jolle dokumentti tulee/lähtee ja yhdistetään tietovirralla aktiviteettiin, josta dokumentti on lähtöisin/menossa
- Huonona puolena oman graafisen käyttöliittymän puute. Prosessien mallinnus edellyttää koulutusta.
- Oliomalli
- Yleisluontoinen kuvaus vs. liian tarkka: liian tarkka kuvaus on työlästä ja kokonaisuus hämärtyy. toisaalta yleisluontoisessa kehittämismahdollisuuksien havaitseminen vaikeutuu.
- Prosessi voidaan pilkkoa aliprosesseihin
- ProcessManagerissa lisäksi abstraktiotasot, joiden avulla prosessi voidaan "pilkkoa" eri kerroksiin. Lisäksi rooleja voidaan kuvata organisaatio- ja virkanimiketasolla
- Prosesseista pitäisi erottua "päälinja", joka kuvaa tavallisimman tai ihanteellisen prosessin kulun. Tämän jälkeen prosessia voidaan täydentää poikkeuksilla, dokumenteilla, tietovirroilla ym.
- Vaatimuksia
- Puoliformaalit, ymmärrettävät prosessit
- Huom. ajettavuus ei vaatimuksena
- Siirrettävys
- Ylläpidettävyys
- Prosessien muokkaus pitää tehdä niin helpoksi, että ne pysyvät ajan tasalla
- Tiedonhaku- ja julkaisuominaisuudet
- Tiedonlouhinta prosessimalleista
- Malli jakautuu "mallitietokantaan", prosesseihin ja ylärakenteeseen
- [ prosessit.it.jyu.fi/raportit/endUserModel.pdf ]
- Mallitietokannassa globaalit tiedot - rooli- ja dokumenttipuut sekä tietojärjestelmälistat
- Sisäisesti yksi prosessi on monitasoinen graafi, jossa alemman tason solmut voivat syrjäyttää ylemmän tason solmuja. Mistä tahansa solmusta voidaan myös viitata toiseen prosessiin (aliprosessi). Lisäksi prosessi voidaan "periä" toisesta prosessista.
- Ylärakenne sisältää prosessien väliset linkit ja prosesseihin liittyvät yleiset metatiedot
- Oliomalli on sisäisesti hajautustaulu, jossa mihin tahansa elementtiin voidaan viitata tekstitunnisteella
- Mahdollistaa helpon siirron relaatiokantaan mallin kasvaessa
- Tällä hetkellä käytössä yksinkertainen Java-serialisointi tiedostoon
- ProcML-kieli
- Suurin haaste: miten kuvata monitasoista graafia tekstimuodossa intuitiivisesti?
- XML-työkalut (infopath) soveltuvat parhaiten tilanteeseen, jossa täytetään metatietokenttiä, mutta eivät yleensä ymmärrä eri kenttien (=solmujen) välisiä suhteita
- Työkalutuen osalta tyydyttävä tekstipohjaiseen XML-editoriin (Esim. XML Spy, Eclipse, NetBeans)
- Lisäongelmana ID-koodit - XML:n standardikäytäntö liian kankea procml:n tarpeisiin
- Vrt. tyypillinen GXL-serialisointi: aluksi kaikki solmut peräkkäin, jonka jälkeen kaaret
- [ www.gupro.de/GXL/examples/instance/gxl/complexExample/complexExample.html ]
- Ratkaisu? Prosessin ositus sekvensseiksi
- [ graph.ppt ]
- Ei ongelmaton (erityisesti prosessien perinnän osalta), mutta osoittautunut käytännössä riittävän hyväksi
- Soveltamisohjeita
- [ prosessit.it.jyu.fi/raportit/conventions.html ]
- ProcML-osajoukko käytössä vaihtoehtoisena käyttötapauskielenä UCOT-softassa
- Haku- ja julkaisutoiminnot
- Kaaviot (ei uimarata) generoidaan automaattisesti, html+pdf -monikanavajulkaisu
- XML-tiedostot luetaan ja serialisoidaan työasemalla, prosessiportaalissa sovelma lukee serialisoidun tiedon ja php-sivut kutsuvat makea niiden prosessien osalta, joille sivu tai hakutulos on generoitava uudelleen
- Yhdistelmä "ajaxia", sovelmia ja staattisia sivuja
- Prosessiportaalissa prosessien haku roolien, dokumenttien tai tietojärjestelmien mukaan
- Auttaa löytämään prosessien ja henkilöresurssien "hot spotit"
- Prosessien klusterointi ExtMinerilla
- [ prosessiklusterit.pdf ]
- (teknisestä) kehitysprosessista
- Iteratiivista kehitystä - haasteena prosessien mallinnus samaan aikaan itse mallinnusjärjestelmän kehityksen kanssa
- Taustalla Cockburnin "patternit" käyttötapausten kirjoitukseen
- breadth over depth, two tier review jne
- Esitutkimus kesällä 2005 - samalla muiden valmiiden potentiaalisten ohjelmistojen läpikäynti
- syksyllä 2005 ProcML:n perusrakenteen kehitys, visio ja excel-lukijat
- html- ja pdf-julkaisutoiminnot keväällä 2006
- hakuportaali (prosessit.it.jyu.fi) kesällä 2006
- nyt: qpr-integrointi, graafinen hallintakäyttöliittymä
- testaus osittain automatisoitu JUnitilla, suorituskykyä parannettu profiloimalla
- Toteutusratkaisuja
- uudelleenkäyttö sekä oman koodin että ulkopuolisten komponenttien osalta
- "Omia" komponentteja: ExtMiner, Opinto-oppaan julkaisujärjestelmä, jaettuja yleiskäyttöisiä komponentteja
- Valmiita ulkopuolisia komponentteja
- Apache Commons (CLI, Logging ym)
- Dom4j
- Saxon
- JTidy
- Lucene
- Dot, PdfLaTeX, Make ym. Unix-komentorivisoftaa
- Lisäksi PHP-koodia palvelinpuolella
- integrointirajapinnat
- xml
- käytössä useita xml-rajapintoja
- yksinkertaisten tai teksipainotteisen rakenteiden ulostulo (esim. html) suoraan PrintStreamiin
- Yleisenä jäsennys- ja serialisointirajapintana DOM - XML:n puumainen käsittely
- W3C-DOM:n rinnalla (ja vähitellen korvaamassa) "javamaisempi" dom4j-kirjasto
- [ dom4j.org ]
- QPR-rajapintaa (ja muuta dataorientoitunutta XML:ää varten) käytössä XMLBeans -data binding framework
- Generoi XML-skeemasta valmiit luokat käsittelyä varten => koodi pysyy aina validina
- XSLT-skriptejä
- Julkaisupuolella esim. oliomalli -> Opas-XML -> TeX -> PDF
- Tietoja luettaessa auttaa ylimääräisten tietojen suodatuksessa (MS Office XML) ennen Java-pohjaista käsittelyä
- java-com
- [ www.mit.jyu.fi/minurmin/javacom ]
- voidaan käyttää office-dokumenttien skriptaukseen suoraan java-koodilla
- esim. excel-pohjaisen tehdyn prosessikuvauksen muokkaus
- varhainen luokkakaavio
- [ frameworkImplementation.pdf ]
- oma propertysysteemi
- propertyt (sekä yksinkertaiset metatietokentät että olioiden väliset suhteet), get/set-logiikat sekä muuntimet tekstistä binaarimuotoon ovat olioita
- ei erillisiä get-set-metodeja
- // propertymäärityksiä ProcessInstance-luokasta
public static final PropertyEnv<RefProperty,Process> PROCESSCLASS_e = new PropertyEnv("processClass");
public final RefProperty<Process> PROCESSCLASS = new RefProperty(PROCESSCLASS_e,Process.class);
public static final PropertyEnv<RefProperty,OrganizationItem> IMPLEMENTOR_e = new PropertyEnv("implementor","implementor","Toteuttajaorganisaatio");
public final RefProperty<OrganizationItem> IMPLEMENTOR = new RefProperty(IMPLEMENTOR_e,OrganizationItem.class);
public static final PropertyEnv<StringProperty,String> EXCEPTIONS_e = new PropertyEnv("exceptions","exception","Poikkeukset");
public final StringProperty EXCEPTIONS = new StringProperty(EXCEPTIONS_e);
- // Esim. prosessin toteuttajaorganisaation haku
ProcessInstance p;
OrganizationItem o = p.IMPLEMENTOR.get()
- "native queries"
- [ www.odbms.org/download/010.01%20Cook%20Native%20Queries%20for%20Persistent%20Objects%20August%202005.pdf ]
- ei "sql-lauseita" koodin sekaan
- "tietokantarajapinta" storage-moduulin vastuulla
- tällä hetkellä java-serialisointi ja yksinkertainen peräkkäishaku
- tuotantokäytössä pitäisi olla relaatiokanta, johon yhteys esim. hibernatella
- kyselyt ja kyselyfiltterit ovat olioita
- // kyselymäärityksiä ProcessInstance-luokasta
public transient SmartQuery<ProcessInstance> SEARCH_INCLUDING_PROCESSES =
new BasicQuery(ProcessInstance.class,new ReferenceFilter(ProcessInstance.INCLUDED_PROCESSINSTANCE_e));
public transient SmartQuery<StepActivity> SEARCH_PARENT_STEPS =
new BasicQuery(StepActivity.class,new ReferenceFilter(StepActivity.SUBPROCESS_e));
public transient ParametrizedQuery<ElementOrganizationItem,Integer> SWIMLANES_BY_ABSTRACTION_LEVEL =
new OuterCompositeQuery (this.SEARCH_SWIMLANES, this.STEPS_BY_ABSTRACTION_LEVEL, new InverseRefFilter(Step.SWIMLANE_e));
- // Esim. prosessiin viittaavien askelten haku
ProcessInstance p;
Set<StepActivity> sa = p.SEARCH_PARENT_STEPS.search();
- InputAbstraction ja OutputAbstraction
- helpottaa tiedostopohjaista käsittelyä - käyttäjän ei tarvitse luoda jatkuvasti stream - reader/writer -wrappereita
- toisaalta abstractionia tukevien luokkien ei tarvitse toteuttaa julkisesti erillisiä metodeja tiedostoa-, streamia tai reader/writeria varten