Göran Koreneff
Anssi Seppälä
VTT Energia

 

Causeway, Causeway Pro ja nimitilojen (namespace) hyödyntäminen

 

Causeway on graafinen työkalu graafisten käyttöliittymien tekoon. Dyalog APL/W:n mukana jaetaan sharewarena Causeway-dws:n, joten ensitutustuminen tapahtuu helposti . Causewayn etu on helppo työkalu, jolla nopeasti aikaansaa monimutkaisiakin graafisia käyttöliittymiä ilman sen kummempia GUI (Graphical User Interface) -taitoja tai -tietoja. Dyalogin "vessa"-funktioon ŒWC ja muihin ŒWS ŒWG voi sitten tutustua kaikessa rauhassa vuosien Causeway-käytön jälkeen, jos ollenkaan. Causewayn heikkoutena on toistaiseksi ollut suljettu ajoympäristö, mutta Causeway Prolla tämä heikkous on poistunut.

Kaupallinen tuote Causeway Pro, josta tarjolla on vasta beta-versio 1.0d, on varsin näppärä APL-pohjainen GUI-kehitin. Kuten shareware-versiollakin käyttö on vaivatonta ja alkuun pääseminen nopeata myös Dummylle. Kehitys ja testaaminen on huomattavasti helpompaa, koska Causeway ei ole enää vastaavasti suljettu ajoympäristöönsä vaan toimii kuten kaikki muukin ohjelmisto. Käyttöliittymää muotoiltaessa pystyy Pro-versiolla vaihtamaan suoraan sessioikkunaan ilman että ensin pitää lopettaa Causeway-designeri. Vanhojen shareware-versiolla tehtyjen formien konvertointi Pro-versioon sujuu mukana tulevalla funktiolla Migrate varsin vaivattomasti, kun on kyse yksinkertaisesta formista. Monimutkaisten formien automaattinen konvertointi ei toimi yhtä hyvin, mutta tuleepa korjattaessa samalla opeteltua Pron toiminnot kantapään kautta.

Causeway Pron rakenne perustuu nimitiloihin (namespace). Eri käyttöliittymäobjekteilla (edit-kenttä, tekstimatriisi, spin box jne) on kullakin oma nimitilansa, joissa on muuttujia (esim. specification sisältää paljon infoa) sekä tapahtumiin liittyviä funktioita (Create, Read …). Perusbjektien käyttäytymisen muokkaus eli funktioiden ja muuttujien editointi mieleisekseen on huomattavasti helpottunut ja selkeytynyt nimitilojen hyödyntämisen myötä.

Nimitiloja voi muutenkin hyödyntää usealla tavalla Causewayn yhteydessä. Causewayn voi kopioida omaan nimitilaansa, esim. ohjelman käynnistyksen yhteydessä. Hyötyinä tästä on pienemmät ohjelmatiedostot sekä causewayn helppo versiopäivitys.

"SOPIMUSSALKKU" -CASE AIHEESTA CAUSEWAY JA NIMITILAT

Varsin kätevä käyttömalli nimitiloille on tietokokonaisuuksien, esim. yksittäisten sopimusten, säilyttäminen kukin omassa nimitilassaan. Nimitilassa on vaihteleva määrä sopimukseen liittyviä muuttujia, esim. nimi, kesto ja hinta, mahdollisesti myös funktioita. Sopimusta käsiteltäessä nimitila kopioidaan valittuun vakionimitilaan, esim. #.sopimus. Käyttöliittymän l. Causeway-formin kentät asetetaan viittaamaan suoraan vakionimitilan muuttujiin, esim. #.sopimus.nimi, #.sopimus.kesto jne. Etuna on, että eri formit voivat viitata samoihin tietoihin, muutosten hylkäys ei vaadi toimenpiteitä ja muutosten tallennus tapahtuu yksinkertaisesti siirtämällä vakionimitila oikealle paikalleen pitkäaikaismuistiin.

Jos sopimusten vaatima muistitila on suurehko, kannattanee tallettaa sopimusnimitila sellaisenaan komponenttitiedostoon (ŒOR '#.sopimus')ŒFREPLACE 1,sopimuksen_index. Jos taas sopimusten viemä muistitila on vähäinen, voidaan ylläpitää hierarkinen sopimuskanta työtilassa. Eräässä sovelluksessa olemme tehneet seuraavanlaisen sopimuskannan:

Ja nimitilan nimi on sama kuin sopimustunnus, jolloin saadaan jo varsin kätevä tietokanta aikaiseksi. Esim. komennolla Œnl 9 saadaan kaikki sopimukset listattua tarvitsematta ylläpitää mitään keskitettyä, erillistä sopimustaulua. Nimitiloja on helppo käsitellä kokonaisuuksina.

Esimerkki: Obj_edit- funktiolla kopioidaan kiinnostuksen kohteena olevan sopimuksen nimitila #.sopimus-nimitilaan ja editoidaan se sopimustyyppikohtaisella formilla:

classname Obj_edit soptunnus
ŒCS classname © siirrytään haluttuun sopimusluokkaan
Init © alustetaan '#.sopimus' ko. luokan mukaisesti
'#.sopimus'ŒNS ŒOR soptunnus © kopioidaan soptunnus'->'#.sopimus'
:Select classname © valitaan GUI-formi luokan mukaan
:Case 'Oma_tuotanto' © aloitetaan causeway-käyttöliittymä:
#.cw.Gui_call #.‘omatuotanto © '‘omatuotanto'
:Case 'Porssisopimukset'
#.cw.Gui_call #.‘porssisopimus © '‘porssisopimus'
:Case 'Kahdenkeskiset'
#.cw.Gui_call #.‘tariffisopimus © '‘tariffisopimus'

Gui_call hyväksyy myös vasemman argumentin, jolla samat sopimustiedot pystyy välittämään Causewaylle. Kehitysvaiheessa valitsemamme ratkaisu on vain tuntunut luontevammalta ja helpommalta, päinvastoin esim. kuin argumenttien eksplisiittinen syöttö. Jos on tarve editoida useampaa sopimusta samanaikaisesti ns. ei-modaalisesti, muodostetaan kullekin sopimukselle oma väliaikainen nimitila, jonka polkumääritys annetaan parametrina Causeway-lomakkeelle.

Causeway Pro on hyvä esimerkki niistä eduista, joita APL on saanut Dyalogin namespace-konseptin myötä. Olemme osallistuneet Causewayn Pron beta-testaukseen, missä on havaittu pieniä ongelmia siirtää kaikki shareware-versolla tehdy koodit Pro-versioon. Uusien sovellusten tekemiseen, varsinkin yksinkertaisimpien, jo nykyinen Pron beta versio aivan kelvollinen.