liferay road show helsinki, case innokylä, 2012-09-13
DESCRIPTION
Henri Leisma, Ambientia, Liferay Road Show Helsinki 13.09.2012, Case InnokyläTRANSCRIPT
Innokylän verkkopalvelun toteuttaminen
Liferay Road Show, Helsinki
13.9.2012 www.ambientia.fi 1
Projektin osapuolet
• Terveyden ja hyvinvoinnin laitos (THL)• THL tekee väestön terveyteen ja hyvinvointiin liittyvää
tutkimusta ja kehittämistä. Tutkimus liittyy terveyden ja hyvinvoinnin edistämiseen sekä sairauksien ja vajaakuntoisuuden ehkäisyyn.
• Ambientia• Ambientia on sähköiseen liiketoimintaan ja viestintään
sekä yhteisöllisiin ratkaisuihin erikoistunut asiantuntijayritys.
• Henri Leisma• Senior Software Developer, yksi Innokylän
sovelluskehittäjistä
13.9.2012 www.ambientia.fi 2
Taustaa
• Julkinen tarjouskilpailu• Palvelu toteutus aloitettiin maaliskuussa 2011,
ensimmäinen vaihe julkaistiin 15.12.2011• Toteutus tehtiin scrum kehystä mukaillen,
iteraation pituus oli 3 viikkoa• Palvelun lähdekoodi, saavutettavuus ja
käytettävyys testautettiin kolmannella osapuolella
13.9.2012 www.ambientia.fi 3
Innokylä-projektin tavoitteet
“Innokylä tarjoaa sosiaali- ja terveysalan toimijoille ympäristön, jossa nämä voivat löytää toisensa, kehittää yhdessä sekä levittää uusia ideoita ja innovaatioita. Innokylässä ihmiset ja ideat kohtaavat.”
-Mahdollistaa kehittämisen ja ideoinnin yhdessä
-Keskussivusto menneille ja nykyisille hankkeille
-Tapahtumien jakaminen alan keskeisten toimijoiden kesken-Samankaltaisten projektien parissa toimivien löytäminen
13.9.2012 www.ambientia.fi 4
Haasteet / määrittelyt
- Loppukäyttäjät voivat jakaa hankkeiden ja tapahtumien muokkausoikeuksia
- Loppukäyttäjiä ei päästetä Liferayn hallintapaneeliin- LR Groups, permissions
- Nostoja voitava tehdä lähes mistä tahansa sisällöistä- LR Asset Publisher, AssetEntry, indexing
- Saavutettavuus ja käytettävyys- Sulautetut ohjeet tageilla, joissa näytetään web artikkeleita- Rakenteen ja teeman korostettu yksinkertaisuus (monilla
käyttäjillä rajoitteita ja apuvälineitä)
13.9.2012 www.ambientia.fi 5
Ratkaisut / Keskeiset toiminnot
- Julkinen tiedon jakaminen- Hankkeet- Tapahtumat- Käytännöt (tulossa)- Verstaat (tulossa)
- Osallistuminen ja kehittäminen- Rekisteröidy palveluun- Ota yhteyttä muihin käyttäjiin- Kehitä muiden hankkeita ja osallistu tapahtumiin- Luo omia hankkeita ja tapahtumia
13.9.2012 www.ambientia.fi 6
www.innokyla.fi
13.9.2012 7www.ambientia.fi
Haasteita ja miten ne ratkaistiin
• Sivuston hallinta ilman hallintapaneelia• Vaatimusmäärittely esittää varsin paljon erilaisia
hallintavaatimuksia, joiden tulee olla helposti käytettävissä julkiselta puolelta ja vieläpä tapahtuma-/hankekohtaisesti.
• Ratkaisu• Tapahtumat ja hankkeet päätettiin toteuttaa omina Liferay
yhteisöinään (Group), jolloin käyttöoikeudet näille saatiin toimimaan vaatimusten mukaisesti ilman räätälöintejä. Ominaisuuksien tuominen julkipuolelle käyttöön hoidettiin toteuttamalla räätälöityjä portletteja, jotka lukevat Liferayn tarjoamia yhteisö- ja muita tietoja.
13.9.2012 www.ambientia.fi 8
Haasteita ja miten ne ratkaistiin
• Oikeuksien jakaminen resurssikohtaisesti• Vaadittiin, että loppukäyttäjien pitää pystyä myöntämään
eritasoisia käyttöoikeuksia palvelussa tapahtuma-/hankekohtaisesti. Käyttöoikeuksien jakaminen tapahtuu käyttäjien kesken ja yksinkertaisesti julkiselta puolelta.
• Ratkaisu• Ongelma ratkaistiin toteuttamalla tapahtumat ja hankkeet
Liferayn omina yhteisöinä, jolloin käyttöoikeuksien jakaminen yksittäin eri tapahtumille/hankkeille voitiin toteuttaa yhteisökohtaisesti. Lisähaasteena oli toteuttaa kutsuminen yhteisöön, eli oikeuksien antamisen toisille käyttäjille tuli kulkea kutsutun käyttäjän oman hyväksynnän kautta.
13.9.2012 www.ambientia.fi 9
Tapahtumakalenteri
13.9.2012 10
Näkymä tapahtumakalenterin etusivusta(web sisältö, kuvakaruselli, luonti, asset listaus)
www.ambientia.fi
Ominaisuudet: Tapahtumakalenteri
Tapahtumakalenteri on yhdistelmä erilaisia portletteja. Tapahtumien kuvien esittäminen tapahtuu Javascript-karusellilla, muuten tapahtumanostoihin käytettään Liferayn Asset julkaisijaa.http://www.innokyla.fi/web/guest/ajankohtaista Varsinaisista tapahtumista muodostuu omia Liferay yhteisöjä. Tämä on toteutettu Liferayn sivustopohjana, jossa on määritelty mistä asetteluista, portleteista ja niiden asetuksista se koostuu. •Ominaisuuksia:
• Ilmoittautumisen aktivointi• Aktivointi kuvakaruselliin• Ylläpitäjien määrittäminen tapahtumalle• Alisivujen luominen• Kommentointi• Kaikki nämä tuotu käytettäväksi julkiselle puolelle
13.9.2012 www.ambientia.fi 11
Hankepankki
13.9.2012 12
Näkymä hankkeen julkisesta sivusta (murupolku, toiminnot, sisällöt välilehdittäin)
www.ambientia.fi
Hankkeen luonti
• Joka hankkeelle luodaan oma yhteisö (Group)• Hankkeen luoneelle käyttäjälle lisätään
oikeuksia (Permissions)• Hankkeen yhteisön sivuston asettelu ja portletit
(Layout) tulevat sivustopohjalta (Site Template)
• Asettelu päivitettävissä startup action:lla (6.0 vs. 6.1)
• Hankkeen sisältö versioidaan tallennettaessa
13.9.2012 www.ambientia.fi 13
Samankaltaiset hankkeet
13.9.2012 14
Näkymä samankaltaisten hankkeiden listauksesta luonnoksen tallentamisen jälkeen
www.ambientia.fi
Samankaltaiset hankkeet
• Uutta hanketta luotaessa• Sanasto käytettävissä oman sisällön
asiasanoitukseen• Kategorisointi tulee valituista tageista• Lisätään portaalin yhteiseen hakuindeksiin• Luodaan AssetEntry portaalin listauksia varten
• Hankeluonnosta tallennettaessa• Perustietojen täytön lisäksi valittuna asiasanoja• Samankaltaisia hankkeita haetaan hakuindeksistä• Hankkeiden tiivistelmiä näytetään
13.9.2012 www.ambientia.fi 15
Käyttäjäprofiilisivu
13.9.2012 16
Näkymä käyttäjäprofiilista (alisivut, perustiedot, Asset-listauksia)
www.ambientia.fi
Ominaisuudet: Käyttäjäprofiili
• Jokaiselle käyttäjälle muodostuu automaattisesti oma profiilisivu. Käyttäjä voi päivittää ja hallita oman profiilin tietoja julkisen käyttöliittymän kautta.
• Profiilista löytyy:• Käyttäjän oma palvelun sisäinen postilaatikko• Käyttäjän asetukset (sähköpostimuistutusten
vastaanotto, onko kutsuttavissa yhteisöihin jne.)• Profiiliin listataan yhteisöt joihin käyttäjä kuuluu,
tapahtumailmoittautumiset, suosikit ja kiinnostuksen kohteet
13.9.2012 www.ambientia.fi 17
Haasteita ja miten ne ratkaistiin
• Nostot• Vaatimuksena oli erilaisten nostojen lähes vapaa tekeminen
mihin tahansa kohtaan palvelua. • Ratkaisu
• Ongelma ratkaistiin Liferayn tarjoaman Asset Framework:n avulla. Esim. jokaisesta julkaistusta hankkeesta luodaan tallennuksen yhteydessä myös AssetEntry. Tämä tallentuu portaalin puolelle ja mahdollistaa räätälöityjen portlettien sisällön esittämisen/listaamisen asset julkaisijan avulla.
• Muutamia esimerkkejä siitä mitä tämän avulla mahdollistettiin:• Tykkäysten listaaminen• Suosituimman sisällön listaaminen• Hankkeiden listaaminen erilaisten metatietojen perusteella• Tapahtumien listaaminen erilaisten metatietojen perusteella
13.9.2012 www.ambientia.fi 18
Asset FrameworkRäätälöidyn portletin sisällön näyttäminen portaalissa
•Jokainen portlet-app “elää omassa galaksissaan”•Asset Publisher elää itse portaalissa•Portlet-app:n omien entiteettien näyttäminen ja listaaminen (vain portlet-app)•Portlet-app:n omien entiteettien “korvikkeiden” näyttäminen ja listaaminen (myös portal)
• Tallennetuista AssetEntry:ista•AssetEntry:jen tallentaminen mahdollistaa AssetEntryQuery-kyselyiden käyttämisen
13.9.2012 www.ambientia.fi 19
Haasteita ja miten ne ratkaistiin
Anonyymit toiminnot•Kommentointi (kirjautumatta)•Kutsutoiminnallisuus (nimimerkin kutsuminen)
•Haastavia toteutettavia, kun pyrkimys käyttää mahdollisimman paljon Liferayn mukana tulevia portletteja ja tagi-kirjastoja•Kyseessä portaali (kohdentaminen sivuun vs. kohdentaminen sivulle nostettuun sisältöön)
13.9.2012 www.ambientia.fi 20
Ominaisuudet: Kutsutoiminnallisuus
• Kutsutoiminnallisuus• Palveluun on toteutettu toiminto, jonka avulla
käyttäjä voidaan kutsua hankkeen kehittäjäksi tai ylläpitäjäksi.
• Ominaisuudet:• Sisäisen kutsun lähettäminen, jolla kutsutaan käyttäjä
kehittäjäksi tai ylläpitäjäksi yhteisöön• Kutsu voidaan hyväksyä tai hylätä• Kutsu kulkee palvelun sisäisen postin kautta• Ennustava käyttäjän valinta käyttäjän nimimerkin mukaan
13.9.2012 www.ambientia.fi 21
Ominaisuudet: Kommentointi
Toteutettu räätälöitynä portlettina•Sivun kommentointi (kommentti kuuluu oikeasti jollekin sivulle, tätä voidaan ja hyödynnetään muissa palvelun osissa)•Kommentit muodostavat puuhierarkian, kommentoi kommenttia•Kirjautunut käyttäjä voi valita kommentoiko nimimerkillä vai omalla nimellään•Vierailijoiden kommentointimahdollisuus•IP-sulkulista•Verkkopalvelun ylläpitäjät voi muokata kaikkia kommentteja, yhteisön ylläpitäjä voi muokata oman yhteisön laajuudessa•Kieltosanalista13.9.2012 www.ambientia.fi 22
Esteettömyys ja käytettävyys
•Korostetun yksinkertainen rakenne ja siirtymät•Huomioitu myös kontrasteja•Toteutettu kustomoituja näppäintoimintoja ja esteettömyys huomioitu mahdollisuuksien mukaan teemojen ja layouttien teossa.
13.9.2012 www.ambientia.fi 23
Ominaisuudet: Laajat hakutoiminnallisuudet
Monipuoliset haun rajausmahdollisuudet eri tietosisältöjen mukaan, lisäksi piti pystyä näyttämään tulokset (kuinka moneen vaihtoehtoon rajaus vaikuttaa) etukäteen ennen käyttäjän oman haun suorittamista.
Ratkaisu
Varsin haasteelliselta kuulostanut vaatimus ratkaistiin suhteellisen yksinkertaisesti hyödyntämällä Lucene-hakumoottorin ominaisuuksia. •Räätälöidyistä portleteista tarjotaan entiteettien tiedot tallennettavaksi portaalin yhteiseen hakuindeksiin. •Hakutulosten suodattamiseen käytetään Liferayn kategorisointi-toiminnallisuutta.
13.9.2012 www.ambientia.fi 24
Haku ja suodatukset
13.9.2012 25
Näkymä hakusivulta (suodattimet, haku, tulokset)
www.ambientia.fi
Haku, kategoriat ja tagit
• Käytettävissä olevat asiasanat parsittu ontologiasta
• Tagit luokiteltu aihealueiden kategorioihin
• Hanketta ja tapahtumaa luotaessa käyttäjä valitsee sille asiasanoja
• Haettaessa , käyttäjä voi suodattaa tuloksia aihealueiden kategorioilla
• Lopputuloksena (adminien) muokattavissa olevat hakusuodattimet
13.9.2012 www.ambientia.fi 26
Haku ja suodatukset
13.9.2012 27
Näkymä aihealueiden hallinnasta (LR kategoriat)
www.ambientia.fi
Haku ja suodatukset
13.9.2012 28
Näkymä aihealueiden ja asiasanojen linkitysten hallinnasta (LR hallintapaneeli)
www.ambientia.fi
Haku ja suodatukset
13.9.2012 29
Näkymä Liferayn kategorioiden ominaisuuksista
www.ambientia.fi
Haasteita ja miten ne ratkaistiin:Integroitavuus
Vaadittiin dokumentoitu (wsdl) rajapinta eri hankelähteiden integroimiseen palveluun. Hankkeiden tuonnissa integraation kautta pitää, samoin kuin käyttöliittymän kautta uusia luotaessa, luoda yhteisö ja sivusto sekä antaa oikeuksia.
Ratkaisu
Toteutamme nykyään omat portletit Liferayn Service Builder -koodin generointityökalua hyödyntäen, jolloin web servicet saadaan luotua helposti. Toteutustapana on palvelukerroksen etärajapinnan paljastaminen.
13.9.2012 www.ambientia.fi 30
Haasteita ja miten ne ratkaistiin:Yhdenaikaisten muokkausten hallinta
Palvelun tulee tarjota tieto siitä, mikäli toinen käyttäjä muokkaa samaa tietosisältöä.
Ratkaisu
Tutkimisen jälkeen löysimme Liferaysta dokumentoimattoman poller-toiminnallisuuden. Tämä mahdollistaa hyvin monipuolisten tilantarkastelu-toiminnallisuuksien toteuttaminen. Ominaisuuden avulla toteuteltiin pollaus, jolla tarkastellaan käsiteltävän aineiston tilaa ja varoitetaan käyttäjää mahdollisesta päällekkäisestä muokkauksesta.13.9.2012 www.ambientia.fi 31
Yhteenveto
• Mitä tehtiin hyvin• Arkkitehtuuri (uudelleenkäytettävyys, kehysten valmiit
ominaisuudet)• Käyttöoikeudet ja tietoturvan taso (haavoittuvuuksia
skannattu)• Koodin laatu (kolmannen osapuolen audiotoima)
• Mitä tehtäisiin toisin• Yksinkertaisempaa Asset Framework:n käyttöä
(suositaan enemmän AssetRenderer:ia)• Ohitetaan Liferayn oman hakutoteutuksen rajoitukset
esim. suoralla SOLR hakumoottorin käytöllä• Core+näytöt vs. ketjutetut portlet-app:t
13.9.2012 www.ambientia.fi 32
Mitä tehtiin hyvin: Tietoturva
13.9.2012 www.ambientia.fi 33
Mitä tehtiin hyvin:Koodin laatu
Ohjelmakoodi auditoitiin kolmannen tahon toimesta jokaisen sprintin päätteeksi. Emme tiedä kuka tämä kolmasosapuoli oli, mutta koodimme todettiin olevan parasta THL:lle ikinä toimitettua ohjelmakoodia.
13.9.2012 www.ambientia.fi 34