MERKURJEV INFORMACIJSKI SISTEM Jure Henigman, Merkur d.d., Naklo
Agenda Merkurjev informacijski sistem Načrtovanje prenovitve IS Prehod na novejšo tehnologijo (klient) Izdelava standardnega okostja IS z uporabo šablonskih mask Kreiranje dinamičnih menujev Problematika in rešitev večjezičnosti Komunikacija s klientom
Merkurjev informacijski sistem Komercialno logistični (KIS) Računovodsko finančni (RFIS) Centralni šifrant skupine Merkur (IS CSM)
Merkurjev informacijski sistem KIS RFIS KIS IS CSM
Merkurjev informacijski sistem Zahteve: Standardni uporabniški vmesnik za vse aplikacije Ohranitev filozofije obstoječega vmesnika (F3) Razvoj vseh aplikacij na ENI osnovi Izbira ustreznega razvojnega orodja
Načrtovanje prenovitve IS Zakaj Oracle Forms 10? S strani razvijalcev sorodno orodje SQL Forms 3 Omogoča hiter in učinkovit razvoj Spletna tehnologija, ki bazira na Javi Tri nivojska arhitektura Vzdrževanje do leta 2013 (vsaj)
Načrtovanje prenovitve IS Kaj omogoča Oracle Forms 10? Enostaven razvoj aplikacij GUI Omogoča vnaprej določeno obnašanje ekranov z uporabo dedovanja lastnosti objektov Uporaba knjižnic (generična koda) Uporaba vnaprej definiranih triggerjev Standardi (object library, dedovanje ) Sprememba na master objektu vpliva na vse child objekte Stabilno in poznano razvojno okolje
Načrtovanje prenovitve IS Kako bo zamenjava klienta vplivala na obstoječo programsko kodo na bazi? Uporaba baznih view-ov namesto kode na klientu (post-query trigger) Uporaba updatable view-a in instead of triggerja Vsa koda iz ekranskih mask se seli na bazne procedure Vzdrževanje poslovne logike na enem mestu (baza)
Načrtovanje in izdelava šablon 3 standardne šablone (template) Pregledni ekran Vnosni ekran Lista vrednosti
Načrtovanje in izdelava šablon Pregledna forma Imeti mora poizvedbeni blok in vsaj 1 bazni blok Poizvedbeni blok Bazni pregledni blok
Načrtovanje in izdelava šablon Vnosna forma Vnos in popravljanje podatkov Podatki iz Pregledne forme Vnosni bazni blok Info blok
Načrtovanje in izdelava šablon Lista vrednosti Večkratna uporaba Podatki se prenašajo preko parametrov Lahko vsebuje poizvedbeni blok in več iskalnih parametrov Modalno okno
Načrtovanje in izdelava šablon Zakaj uporabljamo forme kot listo vrednosti Večkratna uporaba z različnimi vhodnimi parametri Boljša možnost prezentacije in iskanja podatkov preko poizvedbenega bloka Lastnost liste vrednosti prenos podatka v formo z dvojnim klikom Izgled
Načrtovanje in izdelava šablon Knjižnice (.PLL) Skupna knjižnica za vse sisteme Lokalne knjižnice za posamezne sisteme Parametrizacija za čim širšo uporabo Dinamično nalaganje kode v realnem času Sprememba kode v knjižnici ne zahteva ponovno prevajanje ekranskih mask
Načrtovanje in izdelava šablon PLL0001.pll KIS RFIS KIS IS CSM APL1010.pll APL1012.pll APL1011.pll
Načrtovanje in izdelava šablon Metode skupne knjižnice Lovljenje in obvladovanje napak Standardni klici in prehodi med formami, odpiranje list Obnašanje kurzorja in tipk Funkcije za delo z zapisi (brisanje, dodajanje ) Inicialne nastavitve, toolbar Pomožna orodja (utility) konverzije, barvanja Procedure za generiranje where pogoja
Načrtovanje in izdelava šablon Metode lokalnih knjižnic Klici form za liste vrednosti Nastavitve menujev Zaščita glede na skupino uporabnikov
Načrtovanje in izdelava šablon Kako izdelati procedure za knjižnico? V formi napišemo proceduro (package) Imena blokov, polj nadomestimo s parametri Test Kodo premaknemo na nivo knjižnice in jo kličemo iz forme
Načrtovanje in izdelava šablon Skupni objekti Skupna knjižnica. Vizualni atributi (visual attributes) in property class Objektne grupe (object groups) Objektna knjižnica (OLB) Skupni objekti nam zagotavljajo standardno obnašanje form in standardni izgled, ne glede na sistem.
Načrtovanje in izdelava šablon Vizualni atributi Izbira fonta, velikosti in barve Puščice pomenijo dedovanje iz Objektne knjižnice
Načrtovanje in izdelava šablon Razredi lastnosti (property classes) Predefinirani tipi in velikosti Formatne maske Lastnosti objektov (updatable,nonupdatable)
Načrtovanje in izdelava šablon Objektne grupe Blok, canvas, parametri, polja, okno, gumbi Dedovanje grupe objektov namesto vsakega objekta posebej.
Načrtovanje in izdelava šablon Kdaj uporabiti objektno grupo? Kadar kreiramo objekt, ki je zgrajen iz več podobjektov, (npr. TOOLBAR) in ne želimo, da se spreminja. Kadar bomo ta objekt uporabili na več formah. Uporaba standardne kode, triggerjev
Načrtovanje in izdelava šablon Naredimo šablonsko formo iz Objektne Knjižnice! Iz OLB zgradimo šablonsko formo. Zajete so VSE funkcionalnosti in izgledi, kar pomeni, da ne potrebujemo nič dodatnega programiranja in nastavitev na šabloni. OLB uporabljamo tudi, pri oblikovanju končne podobe ekranske maske.
Načrtovanje in izdelava šablon Template 1 (pregledna.fmb) Source Fmb (olb01.fmb) Object library (olb01.olb) Template 2 (vnosna.fmb) Property classes Object groups Visual attributes Template 3 (lista.fmb)
Načrtovanje in izdelava šablon Object Library (OLB) Možnost reference in kopiranja objektov Referenciran objekt na formi se spremeni s spremembo v OLB v fazi prevajanja
Načrtovanje in izdelava šablon Primer dedovanja Dedovane lastnosti prikazuje puščica Property Class je v OLB. Prekrižana puščica pomeni razveljavitev dedovanja
Načrtovanje in izdelava šablon Predefinirani triggerji Na nivoju forme Predpisano delovanje vnaprej, če jih ne povozimo na nižjem nivoju
Načrtovanje in izdelava šablon Implementacija Dodani podatkovni bloki, triggerji in PL/SQL koda,. Implementiran menu Šablona Visualni Atributi, Alert, error handling PL/SQL Standard. Koda, Stand. triggerji Privzet Menu Toolbar Standardni Podatkovni Bloki, canvasi
Šablonske maske Prednosti uporabe šablonskih mask (template): Bistveno manj kodiranja s strani razvijalcev Dodano kodiranje omejeno na poslovne zahteve Standardno obnašanje vseh ekranov Manjše število napak
Kreiranje dinamičnega menuja Podatkovno krmiljen menu Centralno krmiljenje - možnost vklapljanja in izklapljanja menujskih točk preko aplikacije Omogočena večjezičnost Enostavna izgradnja in administracija
Kreiranje dinamičnega menuja
Kreiranje dinamičnega menuja Kreiranje XML datoteke, ki opredeljuje strukturo menuja na podlagi podatkov v bazi Iz XML datoteke kreiramo.mmb datoteko Menu se prikaže glede na jezik uporabnika, ki se je prijavil v sistem.
Kreiranje dinamičnega menuja
Kreiranje dinamičnega menuja Zakaj generiranje menuja z XML datoteko? Forms Builder ne omogoča dinamičnega dodajanja menujskih točk, zato moramo vedno skreirati novo.mmb datoteko Omogočen je le prikaz in skrivanje posamezne vrstice ter spreminjanje obstoječe vsebine Menu je sedaj popolnoma podatkovno krmiljen Ne potrebujemo Forms Builderja za kreiranje menuja
Večjezičnost ekranskih mask Oracle priporoča Translation hub V Merkur d.d. smo naredili svoj sistem večjezičnosti, ki je enostavnejši in lažji za administracijo in vzdrževanje. Možnost prevajanja vseh opisnih lastnosti objektov na ekranu (prompt polja, tooltip, hint, tekst na gumbih, menu, naslov )
Večjezičnost ekranskih mask
Uporaba miške v F10 Za navigacijo med bloki in polji ne uporabljamo več KEY triggerjev, ker se prožijo le na tipkovnico Namesto teh uporabljamo triggerje: WHEN-NEW-BLOCK-INSTANCE WHEN-NEW-RECORD-INSTANCE WHEN-NEW-ITEM-INSTANCE Triggerji se prožijo ne glede na to, s čim smo izvedli navigacijo (s tipkovnico ali miško)
WHERE in ORDER BY stavka Uporaba v preglednih formah ob skoku iz poizvedbenega bloka na bazni blok Stavka sestavimo programsko glede na podatke v poizvedbenem bloku s pomočjo knjižnice set_block_property (<blok>, default_where, <where stavek>); Operatorji se avtomatično nastavijo glede na podane pogoje npr. če je v poizvedbenem polju znak %, sistem poda operator LIKE, drugače operator =
WHERE in ORDER BY stavka Uporaba bind spremenljivk namesto vrednosti optimalnejša izraba SGA Vključitev le tistih poizvedbenih polj, ki nimajo vrednosti NULL Lepša preglednost v kodi na enem mestu
WHERE in ORDER BY stavka Primer: if p_kontrolni_blok='k1' and p_bazni_blok = 'B1' then v_where := 'where '; f_w.add_where (v_where, 'partner, ':k1.partner, f_w.oper( = ), f_w.oper( and )) ; f_w.add_where (v_where, 'part_prej_fakt, ':k1.part_prej_fakt, f_w.oper('='), f_w.oper( and )) ; f_w.add_where (v_where, 'naziv1, ':k1.naziv1, f_w.oper( = ), f_w.oper( and )) ; f_w.add_where (v_where, 'stat_pfak, ':k1.stat_pfak, f_w.oper( = ), f_w.oper( and )) ; f_w.add_where (v_where, 'kraj, ':k1.kraj, f_w.oper( like ), f_w.oper( and )) ; f_w.fin_where(v_where); v_sort := 'order by ' 'ARTIKEL'; set_block_property (p_bazni_blok, default_where, v_where); set_block_property (p_bazni_blok, order_by, v_sort); else return; end if;
Komunikacija s klientom Webutil Ni vgrajen v Forms Builder Omogoča delo z datotekami na klientih Javanska pogovorna okna (open file, save ) Integracija s Forms Builderjem preko PL/SQL knjižnice