Mikset jo koodaa, prosessit jatkoa

Kaikki oikeudet tietenkin pidätetään.

Viimeinen versio ohjelmasta löytyy seuraavasta linkistä: moijari.com:5002

Tietovirrat

Aiemmassa postissa ajattelin, että prosesseja kuivattaisi lauseilla, kuten:

toimituspäivä<=tänään, toimituksen tilausnumero=tilausnumero, toimituksen asiakasnumero=tilauksen asiakasnumero, …, toimituksen tuotenumero = tilauksen tuotenumero, jne.

Tämä rikkoo kuitenkin perussääntöä, jossa sarakelistat pitäisi olla vain yhdessä paikassa. Ajattelin toista tapaa kuvata sama asia. Tässä esimerkki tilauksesta lähtevistä ja siihen tulevista tietovirroista.

(tietovirta=1, lähdesovellus=”tuote”, kohdesovellus=”tilaus”)

(tietovirta=2, lähdesovellus=”tilaus”, kohdesovellus=”toimitus”,ehto=”toimituspäivä<=\”kuluvapäivä\””)

(tietovirta=3, lähdesovellus=”tilaus”, kohdesovellus=”tapahtumat”)

(tietovirta=4, lähdesovellus=”tilaus”,kohdesovellus=”myynti”)

Tietovirtoja käsitellään siten, että otetaan lähdesovelluksen sarakkeet ja kohdesovelluksen sarakkeet ja etsitään saman nimiset (tuotenumero=tuotenumero), tai toisiaan muistuttavat (tuotenumero, tilauksen tuotenumero, toimituksen tuotenumero) ja laaditaan automaattisesti niistä tuo “tietokantalause”. Siihen siis tulevat sovelluksen kentät, joille toisessa sovelluksessa löytyy vastinpari (kuten tilauksen tuotenumero=tuotenumero, tilauksen tuotteen nimi=tuotteen nimi, tilauksen tuotteen hinta=tuotteen hinta). Tietovirtaa käsitellään eri tavalla tapauksesta riippuen. Eri tapauksien kuvausta varten tarvittavat alkiot myöhemmin. Ilmeisesti ne ovat yleensä tietovirran 2 ehto tyylisiä.

Tietovirtoja on ainakin kolmea mallia. Tietovirta 1 on esimerkki ensimmäisestä. Siinä tietovirran kohteesta löydettävä kentän arvo vaikuttaa lähteen tiedon valintaan. Jos esimerkiksi tässä tapauksessa tuotteesta on tilaukselle syötetty tuotenumero, haetaan tämän kentän perusteella muut kentät (tilauksella taisi olla tuotenumero, tuotteen nimi ja tuotteen hinta).

Toisesta mallista en keksinyt esimerkkiä, mutta siinä lähteen tiedot kopioidaan sellaisenaan kohteen tietoihin. Myös muutokset vain kopioidaan kohteen kenttiin. Esimerkki voisi olla myyntiraportti (tuotenumero, myynti), mutta siinä on summaus.

Kolmannessa mallissa aluksi tiedot kopioidaan sellaisenaan, ja muutokset kopioidaan kohteen päälle sellaisenaan, kunnes ehto toteutuu. Toimituksessa tämä ehto voisi olla (toimitus tehty==”1″. Eli tiedot kopioidaan aina päälle kunnes toimitus on tehty, ja sen jälkeen luodaan uusi toimitus. Eli jos asiakas on tilannut 5 tuotetta, ja haluaakin muuttaa tilaustaan siten että tilaa 10 tuotetta. Tuo tilatun määrän muuttaminen muuttaa toimitusta siihen asti kun alkuperäinen viiden tuotteen toimitus on tehty.

Neljännessä mallissa muutos luo aina uuden tapahtuman. Tästä esimerkkinä on kirjanpitotapahtumat. Kaikki muutokset tilaukseen luovat uuden tapahtuman/tapahtumat siten, että kirjanpidon tapahtumien summat=tilauksen summat. Kirjanpidon tapahtumissa voi olla useita summia sen mukaan mitä kenttiä kirjanpitoon on laitettu jos esimerkiksi kirjanpitotapahtumalla on tuotenumero, noiden tuotekohtaisten summat on saatava täsmäämään. Tuotenumeron lisäksi voi olla asiakasnumero ja toimittajanumero eli näiden kaikkien yhdistelmien summat on korjattava samalla tapahtumalla, tilauksella voi olla tuotteen hintojen muutoksia, asiakkaan muutoksia, toimittajan muutoksia. Onneksi tästä pitäisi saada aikaan vain yleinen tapaus.. (hehe)

Viidennessä mallissa lähde ja kohde ovat samat, esimerkiksi tilauksessa rivin summa kenttään lasketaan määrä*hinta. Silloin ilmeisesti tietokantalause pitää aina syöttää, muutenhan siihen tulee siirto kaikista kentistä itseensä.

Kuudes malli voi olla summattava kenttä, mutta se muistuttaa mallia 2 (?).

Siinä taisi olla suurinpiirtein tuo asia. Sitten uuden mallisen “tietokantalauseen” käsittelyyn:

Terttu lauseen uusi versio (lyhyt versio)

Terttu lauseen uutta versiota varten tarvitaan kyselyn muutos vanhaan muotoon, ja uuden lausekkeen suorittaminen. Alussa on esimerkiksi tarjottu lause:

(toimituspäivä<=tämäpäivä, toimituksen asiakasnumero=tilauksen asiakasnumero,…)

Tämä lause muutetaan vanhaan muotoon, jossa on lueteltuna kaikki lauseen kentät oli se kohdekenttänä tai lähdekenttänä, eli (tilaus, toimitus) -kysely tuottaa lajiteltuna vastauksena tilauksen kaikki kyselyssä olevat kentät ja toimituksen kyselyssä olevat kentät:

tilaussovelluksen kaikki kentät                toimitussovelluksen kaikki kentåt

tilausotsakkeen kentät, tilausrivin kentät, toimitusotsakkeen kentät, toimitusrivin kentät

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

Tilauksen ja toimituksen yhdistää tilauksen toimitusnumero, tai toimituksen tilausnumero. Ensimmäisessä rivissä ei ole vielä toimitusta, toisessa rivissä on.

Aiemmassa taulukossa on kaikki uuden lauseen tarvitsemat kentät, joten lause voidaan suorittaa. Periaatteessa tuloksena tulevan kyselyn perusteella voidaan toteuttaa nuo aiemmat kaikki versiot tietovirroista. Tarvitaankohan versiota neljä varten kaksi kyselyä, lähde ja kohde erikseen, ja näiden “erotus” kirjoitetaan uuteen tapahtumaan.

Tästä tuli vähän lyhyt, se kaipaa miettimistä.

Published
Categorized as terttu