{"id":177,"date":"2014-09-19T13:14:57","date_gmt":"2014-09-19T11:14:57","guid":{"rendered":"https:\/\/moijari.com\/?p=177"},"modified":"2019-11-22T17:01:40","modified_gmt":"2019-11-22T15:01:40","slug":"mikset-jo-koodaa-prosessit-jatkoa","status":"publish","type":"post","link":"https:\/\/moijari.com\/?p=177","title":{"rendered":"Mikset jo koodaa, prosessit jatkoa"},"content":{"rendered":"<p>Kaikki oikeudet tietenkin pid\u00e4tet\u00e4\u00e4n.<\/p>\n<p>Viimeinen versio ohjelmasta l\u00f6ytyy seuraavasta linkist\u00e4: <a href=\"https:\/\/moijari.com:5002\">moijari.com:5002<\/a><\/p>\n<h2>Tietovirrat<\/h2>\n<p>Aiemmassa postissa ajattelin, ett\u00e4 prosesseja kuivattaisi lauseilla, kuten:<\/p>\n<p>toimitusp\u00e4iv\u00e4&lt;=t\u00e4n\u00e4\u00e4n, toimituksen tilausnumero=tilausnumero, toimituksen asiakasnumero=tilauksen asiakasnumero, &#8230;, toimituksen tuotenumero = tilauksen tuotenumero, jne.<\/p>\n<p>T\u00e4m\u00e4 rikkoo kuitenkin peruss\u00e4\u00e4nt\u00f6\u00e4, jossa sarakelistat pit\u00e4isi olla vain yhdess\u00e4 paikassa. Ajattelin toista tapaa kuvata sama asia. T\u00e4ss\u00e4 esimerkki tilauksesta l\u00e4htevist\u00e4 ja siihen tulevista tietovirroista.<\/p>\n<p>(tietovirta=1, l\u00e4hdesovellus=&#8221;tuote&#8221;, kohdesovellus=&#8221;tilaus&#8221;)<\/p>\n<p>(tietovirta=2, l\u00e4hdesovellus=&#8221;tilaus&#8221;, kohdesovellus=&#8221;toimitus&#8221;,ehto=&#8221;toimitusp\u00e4iv\u00e4&lt;=\\&#8221;kuluvap\u00e4iv\u00e4\\&#8221;&#8221;)<\/p>\n<p>(tietovirta=3, l\u00e4hdesovellus=&#8221;tilaus&#8221;, kohdesovellus=&#8221;tapahtumat&#8221;)<\/p>\n<p>(tietovirta=4, l\u00e4hdesovellus=&#8221;tilaus&#8221;,kohdesovellus=&#8221;myynti&#8221;)<\/p>\n<p>Tietovirtoja k\u00e4sitell\u00e4\u00e4n siten, ett\u00e4 otetaan l\u00e4hdesovelluksen sarakkeet ja kohdesovelluksen sarakkeet ja etsit\u00e4\u00e4n saman nimiset (tuotenumero=tuotenumero), tai toisiaan muistuttavat (tuotenumero, tilauksen tuotenumero, toimituksen tuotenumero) ja laaditaan automaattisesti niist\u00e4 tuo &#8220;tietokantalause&#8221;. Siihen siis tulevat sovelluksen kent\u00e4t, joille toisessa sovelluksessa l\u00f6ytyy vastinpari (kuten tilauksen tuotenumero=tuotenumero, tilauksen tuotteen nimi=tuotteen nimi, tilauksen tuotteen hinta=tuotteen hinta). Tietovirtaa k\u00e4sitell\u00e4\u00e4n eri tavalla tapauksesta riippuen. Eri tapauksien kuvausta varten tarvittavat alkiot my\u00f6hemmin. Ilmeisesti ne ovat yleens\u00e4 tietovirran 2 ehto tyylisi\u00e4.<\/p>\n<p>Tietovirtoja on ainakin kolmea mallia. Tietovirta 1 on esimerkki ensimm\u00e4isest\u00e4. Siin\u00e4 tietovirran kohteesta l\u00f6ydett\u00e4v\u00e4 kent\u00e4n arvo vaikuttaa l\u00e4hteen tiedon valintaan. Jos esimerkiksi t\u00e4ss\u00e4 tapauksessa tuotteesta on tilaukselle sy\u00f6tetty tuotenumero, haetaan t\u00e4m\u00e4n kent\u00e4n perusteella muut kent\u00e4t (tilauksella taisi olla tuotenumero, tuotteen nimi ja tuotteen hinta).<\/p>\n<p>Toisesta mallista en keksinyt esimerkki\u00e4, mutta siin\u00e4 l\u00e4hteen tiedot kopioidaan sellaisenaan kohteen tietoihin. My\u00f6s muutokset vain kopioidaan kohteen kenttiin. Esimerkki voisi olla myyntiraportti (tuotenumero, myynti), mutta siin\u00e4 on summaus.<\/p>\n<p>Kolmannessa mallissa aluksi tiedot kopioidaan sellaisenaan, ja muutokset kopioidaan kohteen p\u00e4\u00e4lle sellaisenaan, kunnes ehto toteutuu. Toimituksessa t\u00e4m\u00e4 ehto voisi olla (toimitus tehty==&#8221;1&#8243;. Eli tiedot kopioidaan aina p\u00e4\u00e4lle kunnes toimitus on tehty, ja sen j\u00e4lkeen luodaan uusi toimitus. Eli jos asiakas on tilannut 5 tuotetta, ja haluaakin muuttaa tilaustaan siten ett\u00e4 tilaa 10 tuotetta. Tuo tilatun m\u00e4\u00e4r\u00e4n muuttaminen muuttaa toimitusta siihen asti kun alkuper\u00e4inen viiden tuotteen toimitus on tehty.<\/p>\n<p>Nelj\u00e4nness\u00e4 mallissa muutos luo aina uuden tapahtuman. T\u00e4st\u00e4 esimerkkin\u00e4 on kirjanpitotapahtumat. Kaikki muutokset tilaukseen luovat uuden tapahtuman\/tapahtumat siten, ett\u00e4 kirjanpidon tapahtumien summat=tilauksen summat. Kirjanpidon tapahtumissa voi olla useita summia sen mukaan mit\u00e4 kentti\u00e4 kirjanpitoon on laitettu jos esimerkiksi kirjanpitotapahtumalla on tuotenumero, noiden tuotekohtaisten summat on saatava t\u00e4sm\u00e4\u00e4m\u00e4\u00e4n. Tuotenumeron lis\u00e4ksi voi olla asiakasnumero ja toimittajanumero eli n\u00e4iden kaikkien yhdistelmien summat on korjattava samalla tapahtumalla, tilauksella voi olla tuotteen hintojen muutoksia, asiakkaan muutoksia, toimittajan muutoksia. Onneksi t\u00e4st\u00e4 pit\u00e4isi saada aikaan vain yleinen tapaus.. (hehe)<\/p>\n<p>Viidenness\u00e4 mallissa l\u00e4hde ja kohde ovat samat, esimerkiksi tilauksessa rivin summa kentt\u00e4\u00e4n lasketaan m\u00e4\u00e4r\u00e4*hinta. Silloin ilmeisesti tietokantalause pit\u00e4\u00e4 aina sy\u00f6tt\u00e4\u00e4, muutenhan siihen tulee siirto kaikista kentist\u00e4 itseens\u00e4.<\/p>\n<p>Kuudes malli voi olla summattava kentt\u00e4, mutta se muistuttaa mallia 2 (?).<\/p>\n<p>Siin\u00e4 taisi olla suurinpiirtein tuo asia. Sitten uuden mallisen &#8220;tietokantalauseen&#8221; k\u00e4sittelyyn:<\/p>\n<h2>Terttu lauseen uusi versio (lyhyt versio)<\/h2>\n<p>Terttu lauseen uutta versiota varten tarvitaan kyselyn muutos vanhaan muotoon, ja uuden lausekkeen suorittaminen. Alussa on esimerkiksi tarjottu lause:<\/p>\n<p>(toimitusp\u00e4iv\u00e4&lt;=t\u00e4m\u00e4p\u00e4iv\u00e4, toimituksen asiakasnumero=tilauksen asiakasnumero,&#8230;)<\/p>\n<p>T\u00e4m\u00e4 lause muutetaan vanhaan muotoon, jossa on lueteltuna kaikki lauseen kent\u00e4t oli se kohdekentt\u00e4n\u00e4 tai l\u00e4hdekentt\u00e4n\u00e4, eli (tilaus, toimitus) -kysely tuottaa lajiteltuna vastauksena tilauksen kaikki kyselyss\u00e4 olevat kent\u00e4t ja toimituksen kyselyss\u00e4 olevat kent\u00e4t:<\/p>\n<p>tilaussovelluksen kaikki kent\u00e4t\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 toimitussovelluksen kaikki kent\u00e5t<\/p>\n<p>tilausotsakkeen kent\u00e4t, tilausrivin kent\u00e4t, toimitusotsakkeen kent\u00e4t, toimitusrivin kent\u00e4t<\/p>\n<p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<\/p>\n<p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy<\/p>\n<p>Tilauksen ja toimituksen yhdist\u00e4\u00e4 tilauksen toimitusnumero, tai toimituksen tilausnumero. Ensimm\u00e4isess\u00e4 riviss\u00e4 ei ole viel\u00e4 toimitusta, toisessa riviss\u00e4 on.<\/p>\n<p>Aiemmassa taulukossa on kaikki uuden lauseen tarvitsemat kent\u00e4t, joten lause voidaan suorittaa. Periaatteessa tuloksena tulevan kyselyn perusteella voidaan toteuttaa nuo aiemmat kaikki versiot tietovirroista. Tarvitaankohan versiota nelj\u00e4 varten kaksi kysely\u00e4, l\u00e4hde ja kohde erikseen, ja n\u00e4iden &#8220;erotus&#8221; kirjoitetaan uuteen tapahtumaan.<\/p>\n<p>T\u00e4st\u00e4 tuli v\u00e4h\u00e4n lyhyt, se kaipaa miettimist\u00e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kaikki oikeudet tietenkin pid\u00e4tet\u00e4\u00e4n. Viimeinen versio ohjelmasta l\u00f6ytyy seuraavasta linkist\u00e4: moijari.com:5002 Tietovirrat Aiemmassa postissa ajattelin, ett\u00e4 prosesseja kuivattaisi lauseilla, kuten: toimitusp\u00e4iv\u00e4&lt;=t\u00e4n\u00e4\u00e4n, toimituksen tilausnumero=tilausnumero, toimituksen asiakasnumero=tilauksen asiakasnumero, &#8230;, toimituksen tuotenumero = tilauksen tuotenumero, jne. T\u00e4m\u00e4 rikkoo kuitenkin peruss\u00e4\u00e4nt\u00f6\u00e4, jossa sarakelistat pit\u00e4isi olla vain yhdess\u00e4 paikassa. Ajattelin toista tapaa kuvata sama asia. T\u00e4ss\u00e4 esimerkki tilauksesta l\u00e4htevist\u00e4 ja&hellip; <a class=\"more-link\" href=\"https:\/\/moijari.com\/?p=177\">Continue reading <span class=\"screen-reader-text\">Mikset jo koodaa, prosessit jatkoa<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/177"}],"collection":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=177"}],"version-history":[{"count":22,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/177\/revisions"}],"predecessor-version":[{"id":179,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/177\/revisions\/179"}],"wp:attachment":[{"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=177"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=177"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=177"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}