Liferay Road Show Helsinki, Case Innokylä, 2012-09-13

Preview:

DESCRIPTION

Henri Leisma, Ambientia, Liferay Road Show Helsinki 13.09.2012, Case Innokylä

Citation preview

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

Puhelin: 0290 010 500

Sähköposti: henri.leisma@ambientia.fi

Twitter: @ambientia

Henri Leisma