Första veckan Den här veckan har hela gruppen suttit inne på Nordicstations kontor och arbetat. Vi experimenterar fortfarande med programmering i Silverlight och undersöker möjligheterna hos Windows Phones. Det finns en hel del häftiga funktioner att leka med, som exempelvis touchscreenen som kan uppfatta flera, simultana händelser, lutningsfunktionen som växlar vyn beroende på hur man håller telefonen och mycket mer. Samtidigt var vi uppmärksammat potentiella problem vi bör tänka på framöver. Telefonen har relativt lite minne och kraft i jämförelse med en riktig dator - det som emuleras på datorn kanske inte alls är som det kommer vara på telefonen. Vi har också fått igång en WCF webservice. Telefonen kan genom den kommunicera mot en server på en dator. Det är genom en sådan service som vi senare ska kunna hämta resultat från databaser till telefonen. Under nästa vecka ska vi försöka bestämma hur gränssnittet ska se ut och titta lite på kuber (flerdimensionella databaser). Andra veckan Under veckan har vi experimenterat med SQL Server Analysis Services (SSAS). Vi lyckades kommunicera mot en sådan server och hämta data från en av kuberna till vår webservice. Queryspråket MDX (MultiDimensional expressions) är ganska likt SQL, men om man vill ta ut mer specifik data kan det snabbt leda till en lång och avancerad query. Detta blir något vi kommer behöva studera lite djupare om vi ska skriva en query-byggare till Windows Phoneklienten. Olika alternativ kring hur webservicen ska publiceras, bl.a. Microsoft IIS (Internet Information Services) och Cassini. I nuläget använder vi oss av Cassini eftersom den är inbyggd i visual studio och är bäst lämpad för debugging, men med IIS blir det mycket lättare att senare administrera över servicen. Utöver dessa finns många andra alternativ. Därför kommer webservicen att struktureras efter en tjänsteorienterad (service-oriented) arkitektur, för att göra det väldigt lätt att publicera servicen på olika sätt utan att ändra något i koden. På klientsidan har vi byggt ett stiligt användargränssnitt där användaren kan välja vilka dimensioner och mått (dimensions och measures) som ska hämtas från kuben via servicen. Vad gäller själva presentationen av data har vi fortfarande lite problem. Ursprungligen ville vi ha ett dynamiskt rutnät som utvidgas och anpassas efter användarens vy (likt excel). Dock har det visat sig vara svårt att ta fram exakta koordinater hos enstaka komponenter i detta rutnät för de som befinner sig utanför vyn, för att ta bort dessa.vi har alltså ett rutnät som bara kan växa och till slut slöar ner telefonen oerhört. Vi ska utforska möjligheten att begränsa rutnätets storlek och istället presentera data på flera blad, om så behövs. Tredje veckan Under veckan som gått har vi studerat queryspråket MDX och undersökt möjligheterna för att göra en querybyggare till Windows Phone-klienten. Vi har lyckats hitta några mönster som queries kan byggas upp efter utan att man behöver oroa sig för errors. Om användaren ska kunna ställa väldigt avancerade frågor kommer querybyggaren att bli oerhört rörig, så vi har tänkt att det ska finnas ett antal fördefinerade queries istället. 1 KTH Haninge
Gridsystemet i Windows Phone-klienten som vi tidigare hade lite problem med fungerar nu väldigt bra. Nästa steg är att skriva ut resultaten från queryn i gridens celler. Webservicen kan nu ta emot MDX-queries från en klient och skicka den vidare mot SSASdatabasen. Dock uppstod ett problem när vi skulle returnera resultatet till klienten. De resultat man som returneras kommer i form av CellSet-objekt som finns definerade i ADOMD.NETbiblioteket. Vi hade ursprungligen tänkt att det skulle räcka med att skicka ett sådant objekt till klienten. Det vi inte hade tänkt på är att Silverlight (som vår klient är uppbyggd i) inte använder samma runtime och är därför inte kompatibelt med ADOMD.NET-biblioteket. Istället får vi skriva ett antal serialiserbara klasser för att få med den information som krävs. En fördel med detta är att vi kan plocka bort det data klienten inte behöver. Nästa vecka ska vi försöka få ihop en simpel men fungerande klient och börja lite smått med rapporten. Fjärde veckan Statusrapport vecka 17 Grunderna för webbservicen är klara. Den kanske behöver någon liten extra funktion senare men för de mål vi har uppsatta just bör den klara det fint. Vi har inte hunnit stresstesta den ännu, men först och främst måste vi snickra ihop vår Windows Phoneklient!Windows Phone-klienten kommer att bli vår prioritet under resten av projektet. Än så länge har den ett gridsystem för att kunna visa data tabulärt, en inloggningsskärm samt en huvudmeny. Dock är dessa komponenter inte sammankopplade än. För övrigt har veckans arbete flutit på. Som vanligt uppenbarade sig ytterligare ett problem med Silverlight i kombination med WCF. Vi använder oss av så kallade Fault Contracts för att meddela klienten, från service-sidan, om exempelvis fel lösenord vid inloggning. Dessa meddelanden får responskoden 500 i http-headern. Av någon anledning så kommer Silverlight att ignorera dessa meddelanden. För att lösa detta är vi tvungna att ändra responskoden i samtliga felmeddelanden. Bilden visar hur data kan presenteras i vårt gridsystem. Tanken är att man också ska kunna drilla upp och ner i resultatseten man får. Logiken för detta är i stort sett klar. Det som återstår är att kunna markera rader (även kolumner senare om vi hinner) och se mer detaljerad data. 2 KTH Haninge
Bilden ovan visar hur man kan drilla i data i SQL Server Management Studio. I Torsdags fick vi nya direktiv om hur Windows Phone-klienten ska kunna presentera data. Vår handledare på Nordicstation, Niklas Arbin vill att data ska presenteras i form av Pie Charts och eventuellt andra slags grafer. För att åstadkomma detta kommer vi använda ComponentArts Windows Phone-komponenter. ComponentArt är ett företag som erbjuder grafiska komponenter till bl.a. Windows Phone. Paketet kostar ca $3000 så vi kommer än så länge köra med deras testpaket som är gratis i 30 dagar. Komponenterna är hyfsat enkla att använda, det är dokumentation som är usel. Vi kommer inte behöva ändra något på service-sidan utan graferna kommer hantera data på samma sätt som vårt gridsystem. Vår tanke är att man ska kunna byta mellan olika presentationssätt, vi får se hur mycket vi har tid med. Femte veckan. Vi har fått ännu mer specifika instruktioner kring hur klienten ska se ut samt ett use case. Detta har resulterat i att vi har skrivit om klienten totalt. Data kommer inte längre att presenteras tabulärt utan med komponenter från ComponentArt-paketet. WCF-servicen kommer nu att autentisera användare mot en av Nordicstations SQL-databaser. I databasen finns ett stort antal användare samt information om de rättigheter de har. Dessa rättigheter reglerar vilken information de får hämta från kuben. Vad gäller kuben har vi fått en helt ny. 3 KTH Haninge
Den nya kuben har mätvärden för NKI (Nöjd KundIndex) och NMI (Nöjd MedarbetarIndex). Dessa värden kan presenteras ur olika hierarkiska vyer, vi använder organisationshierarkin med nivåerna : Företag - Enhet - Grupp - Person. Här kommer rättigheterna in. En användare kan antingen vara företagschef, enhetschef, gruppchef eller agent. Företagschef - Kan se samtliga nivåer men är begränsad till sitt eget företag. Enhetschef - Kan se samtliga grupper i sin enhet samt nivåerna under grupper. Gruppchef - Kan se samtliga personer i sin egen grupp. Agent - ej definerat ännu. Vi arbetade väldigt hårt den här veckan och lyckades faktiskt få till allt det här och dessutom drillnings-funktionen som nämndes i den förra rapporten. Det som återstår att göra på klienten just nu är att kunna ställa in ett tidsfilter med hjälp av en tidslinje från ComponentArt samt att kunna få ut äctionsfrån kuben som eventuellt kan finnas på ett cellvärde. Vad gäller kravspecifikationen har uppgiften utvecklats så pass mycket att den inte är särskilt aktuell längre. Tyvärr glömde vi att ta screenshots av den nya klienten, det får bli till nästa rapport. Sjätte veckan Klienten är i stort sett helt klar. Under veckan som gått har vi fixat några buggar och rensat koden. Det som återstår är att göra en fin och färgglad vy för presentation på individnivå. På servicesidan upptäcktes ett logiskt fel som ledde till att klienten ibland fick fel resultatset från kuben. För att lösa detta var vi tvungna att gå en rejäl omväg. När man skriver MDX queries kan man hänvisa till en medlem på olika sätt, antingen med namnet eller med ett unikt ID-nummer. Eftersom klienten inte har tillgång till de unika ID-numren måste servicen läsa av queryn med hjälp av RegEx och översätta namnet till det riktiga ID-numret. Tyvärr glömde vi att ta screenshots igen. Det får dröja till nästa rapport (eller redovisningen om vi glömmer igen). Nu är det bara att avsluta rapporten, förbereda redovisningen och kanske plugga lite arbetsmiljö. Sjunde veckan I början av veckan bestämde vi oss för att ändra hostingmetod. Från en konsolapplikation till IIS, en ganska radikal förändring. Som tur var så hann vi precis publicera vår service idag (fredag 20/5). Det var relativt lätt att få servicen att funka med IIS lokalt, men när vi sedan skulle lägga över den på en serverdator ute i Lidingö uppstod en massa strul. Efter flera timmar lyckades vi dock lösa problemet och nu är det möjligt att nå web servicen utanför det lokala nätverket, vilket också innebär att vi troligtvis kan visa den live på redovisningen. För övrigt har vi slitit med att göra vårt gridsystem flashigtöch färgglatt. Till en början använde vi ComponentArts egna gridsystem, men den var otroligt seg så vi gjorde vår egen istället. Under utvecklingen att vårt egna gridsystem har diverse synvillor och dumma avrundningar i Silverlight satt käppar i hjulet för oss. 4 KTH Haninge
På onsdagen efter redovisningen i nästa vecka ska vi också visa upp vår applikation på Nordicstations månadsmöte. Kursutvärdering. Kursen som helhet har, precis som projektet i årskurs 1, varit den mest givande kursen på hela året. Den här gången slapp vi mycket av den, enligt oss, onödiga formalian som veckovis tidsrapportering med mera. Nu fick vi helt lösa tyglar från skolans sida, så när som på statusrapporter och projektrapport, och fick anpassa oss efter företagets krav istället. Att komma i kontakt med företag har nog varit den bästa delen med projektet. Dels har man chansen att skapa nya kontakter och dessutom ett smakprov på hur arbetslivet kan se ut efter utbildningen. Vi kan inte komma på något negativt som varit anknutet till själva kursen. Fast det kunde ha varit bra med lite fler påminnelser att man ska söka projektuppgift i god tid. Visserligen nämnde Håkan detta men det kunde ha arrangerats några extra möten innan projektkursen startade för att se till att alla har en uppgift innan projektet startar. 5 KTH Haninge