LEDNINGSÄGARMODUL. Systemgränssnitt

Relevanta dokument
LEDNINGSÄGARMODUL. Systemkrav 1(6)

LEDNINGSÄGARMODUL. Användarhandledning

Är du ledningsägare med ett stort eller nationellt nät? Då får du säkert många

Manual Ledningskollen i mobilen

Generiska konstruktioner. Kursbokens kapitel 13

Komponenter med COM (och COM+/VC++ 7.0)

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Objektsamlingar i Java

Tentamen, EDA501 Programmering M L TM W K V

Repetition av OOP- och Javabegrepp

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Repetition av OOP- och Javabegrepp

Tentamen FYTA11 Javaprogrammering

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Grundläggande programmering med C# 7,5 högskolepoäng

Lab 6: ASP.NET 2.0 Providermodellen

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Webbtjänster med API er

Vad är Ledningskollen?

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Polymorfi. Objektorienterad och komponentbaserad programmering

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Mål med lektionen! Repetera och befästa kunskaperna.

Snabbguide Visma Compact API Copyright Visma Spcs AB

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

DAT043 - Föreläsning 7

Metoder (funktioner) Murach s: kap Winstrand Development

Laboration 1: Figurer i hierarki

Att använda Java SE JDK 6

Instruktioner för att skapa bevakningsområden

Objektorienterad Programmering (OOP) Murach s: kap 12-16

LEDNINGSÄGARMODUL. Översikt 1(9)

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

Stackar, köer, iteratorer och paket

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Att skriva till och läsa från terminalfönstret

DB, DATA, LOGIC, EXPOSURE (WEB)

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015

Malmö högskola 2007/2008 Teknik och samhälle

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Institutionen för datavetenskap HT /2008. Testning med JUnit

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

Laboration 3, uppgift En klass för en räknare

2. Palindrom. Exempel: 1,2,3,2,1 är ett palindrom, och även 0, men inte 1,2,3,1,2,3.

Tentamen ID1004 Objektorienterad programmering May 29, 2012

tentaplugg.nu av studenter för studenter

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

1 Comparator & Comparable

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

public class BoundedCounter {

Tjoho. Applikationsutvecklarens handledning. Maj 2003

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

STADSLEDNINGSKONTORET SOA SDK IT-AVDELNINGEN VERSION 2.1. Läs mig först. Stockholms stad SOA-plattform. Sida 1 (5)

Författare Version Datum. Visi System AB

Enkla variabler kontra referensvariabel

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

PROGRAMMERINGSTEKNIK TIN212

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Pyramid Business Intelligence. Affärsinformation från din Pyramid till din iphone eller ipod (100913)

Classes och Interfaces, Objects och References, Initialization

Language Integrated Query, LINQ, och databaser

Klientprogrammering mot databaser

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

DAT043 - föreläsning 8

Vad är Ledningskollen?

ID1004 Laboration 4, November 2012

Generic type declarations. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Laboration 2: Designmönster

Övningar Dag 2 En första klass

Övning: Arbeta med Azure Explorer

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

TUTORIAL: KLASSER & OBJEKT

Mer om metoder och abstraktioner

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Tentamen i TDP004 Objektorienterad Programmering Teoretisk del

Inledande programmering med C# (1DV402) Tärningarna ska kastas

12 juni 2009 Projektplan Webb-baserat bokningssystem för flyg Kurs: Applikationsutveckling för internet, TFE

Laboration 2: Designmönster

TDDC74 Lab 04 Muterbara strukturer, omgivningar

Transkript:

Manualer Peter Thorin Öppen 2015 02 04 B1 1(8) LEDNINGSÄGARMODUL Systemgränssnitt 1(8)

Manualer Peter Thorin Öppen 2015 02 04 B1 2(8) 1. Distributionslista Dokumentet ska distribueras som leverans till PTS. Ska vara tillgängligt för PTS samt projektmedlemmar. 2. Revisionsinformation Rev. Datum Av Kommentar B 2015 02 11 Peter Thorin Nytt dokument id 2006, tidigare 8503. Pappersstorlek satt till A4. Informationsklassad som öppen. Revisionsinformation tillagd. B1 2015 04 13 Daniel Garcia Added a quick start guide to show the steps needed in order to start using the API and how to deploy it. 2(8)

Manualer Peter Thorin Öppen 2015 02 04 B1 3(8) 3. Innehåll 1. Distributionslista 2. Revisionsinformation 3. Innehåll 4. Inledning 4.1. Bakgrund 5. Gränssnitt 5.1. Livscykel 5.1.1. Exempel på livscykel 5.2. ICustomDataAccess 5.2.1. BeginTransaction 5.2.2. EndTransaction 5.2.3. GetAreasOfInterest 5.2.4. GetGeometries 5.3. IExternalAreaOfInterest 5.3.1. UniqueName 5.3.2. Wkt 5.4. AreaOfInterestsBadStateException 6. Getting Started 7. Relaterade dokument 3(8)

Manualer Peter Thorin Öppen 2015 02 04 B1 4(8) 4. Inledning Dokumentet beskriver hur gränssnittet mellan Ledningsägarmodulen och ledningsägarens databas skall se ut. Det ger underlag för hur ledningsägaren själv implementerar ett gränssnitt mot sin geografiska databas för integration med Ledningsägarmodulen. 4.1. Bakgrund De flesta användare av Ledningsägarmodulen kommer att exportera den geografiska informationen om sina ledningsnät från sin egen databas till filer. Filerna omformas sedan av Ledningsägarmodulen till intresseområden, som exporteras till Ledningskollen. Några ledningsägare har dock så pass omfattande ledningsnät att det inte är praktiskt att regelbundet exportera den geografiska informationen till fil. Då finns istället alternativet att själva implementera ett gränssnitt mellan Ledningsägarmodulen och sin databas. Därmed kan Ledningsägarmodulen arbeta direkt mot ledningsägarens databas istället för att gå via exporterade filer. 5. Gränssnitt Det gränssnitt som ledningägaren skapar för kommunikation mellan Ledningsägarmodulen och ledningägarens databas görs tekniskt genom att implementera två stycken s.k. interface i Microsofts.NET plattform. Ledningsägarmodulen använder sig av version 3.5 av Microsoft.NET. Den huvudsakliga delen av gränssnittet utgörs av interfacet ICustomDataAccess, som Ledningsägarmodulen använder för att ställa alla frågor mot ledningsägarens databas. Utöver detta behöver ledningsägaren även implementera hjälp interfacet IExternalAreaOfInterest, som är en enkel representation av ett intresseområde. För felhantering innehåller gränsnittet även en Exception klass, AreaOfInterestsBadStateException. 5.1. Livscykel Då Ledningsägarmodulen startas instansierar den ledningsägarens implementation av ICustomDataAccess. Denna instans återanvänds sedan fram till dess att ledningsägarmodulen avslutas, då implementationens Dispose metod anropas. Livslängden för en instans av ICustomDataAccess är således mycket lång potentiellt dagar, veckor eller till och med månader. Alla frågor som ställs mot ledningsägarens databas via ICustomDataAccess görs i transaktioner. En transaktion kan bestå av en eller flera frågor mot databasen. En transaktion inleds med att metoden BeginTransaction anropas, och avslutas med ett motsvarande anrop till EndTransaction. 4(8)

Manualer Peter Thorin Öppen 2015 02 04 B1 5(8) Eftersom gränssnittet enbart används för att läsa data ur databasen har de vanliga transaktionsbegreppen commit och rollback ingen mening i detta sammanhang och ersätts helt av EndTransaction. Medan instansen av ICustomDataAccess har mycket lång livslängd, har en transaktion kort livslängd; från en enstaka fråga till ett tiotal, i normala fall. Tanken är att ledningsägarens implementation genom transaktionernas avgränsning kan avgöra när den skall allokera respektive frigöra begränsade resurser, t ex databasanslutningar. Samtidigt finns då möjligheten att slippa hantera resurserna för varje enskild fråga till databasen. Exakt hur transaktionsgränserna utnyttjas avgörs i varje implementation. De skall endast betraktas som rådgivande information från ledningsägarmodulen. 5.1.1. Exempel på livscykel Nedan följer ett exempel på hur en sekvens anrop till ICustomDataAccess kan se ut under komponentens livslängd. 1. Konstruktorn anropas 2. BeginTransaction() 3. GetAreasOfInterest() 4. EndTransaction() 5. BeginTransaction() 6. GetGeometries(...) 7. GetGeometries(...) 8. EndTransaction() 9. Dispose() 5.2. ICustomDataAccess Interfacet ICustomDataAccess är den huvudsakliga delen av det gränssnitt som behöver implementeras av ledningsägaren. Interfacet har följande utseende: public interface ICustomDataAccess : IDisposable { /// <summary> /// This method will be called as a transaction starts. /// No transaction calls will be made before this has returned. void BeginTransaction (); /// <summary> /// This method will be called as a transaction ends. /// No transaction calls will be made after this. void EndTransaction (); /// <summary> /// Get all external area of interest to be updated. 5(8)

Manualer Peter Thorin Öppen 2015 02 04 B1 6(8) /// <returns>a list of IExternalAreaOfInterest to be updated</returns> IEnumerable<IExternalAreaOfInterest> GetAreasOfInterest (); } /// <summary> /// Returns all geometries of interest in the given bounding box /// <param name="srid">spatial Reference System Identifier</param> /// <param name="x1">x value for coordinate 1 of bounding box</param> /// <param name="y1">y value for coordinate 1 of bounding box</param> /// <param name="x2">x value for coordinate 2 of bounding box</param> /// <param name="y2">y value for coordinate 2 of bounding box</param> /// <returns> /// Wkt for all geometries of interest within the given bounding /// box /// </returns> string GetGeometries ( int srid, double x1, double y1, double x2, double y2); 5.2.1. BeginTransaction Metoden BeginTransaction markerar att ledningskollen påbörjar en sekvens av en eller flera frågor till ledningsägarens databas. Ett anrop till BeginTransaction följs alltid av ett anrop till EndTransaction innan en ny transaktion påbörjas. 5.2.2. EndTransaction Metoden EndTransaction markerar att ledningsägarmodulen nu avslutar en sekvens av frågor till ledningsägarens databas. Ett anrop till EndTransaction har alltid föregåtts av ett anrop till BeginTransaction. 5.2.3. GetAreasOfInterest Metoden GetAreasOfInterest returnerar inom vilket eller vilka områden ledningsägaren har ledningsnät som Ledningskollen och Ledningsägarmodulen skall ta hänsyn till. De returnerade områdena behöver inte vara detaljerade, eftersom de enbart används för att avgöra när ledningsägarmodulen behöver ställa mer detaljerade frågor till ledningsägarens databas med metoden GetGeometries. De returnerade geometerierna används för att generera ledningsägarens intresseområden i Ledningskollen, efter att geometrierna omvandlats till s.k. kilometerrutor. Returvärdet är en uppräkning av IExternalAreaOfInterest instanser (se 3.3), där varje instans beskriver ett intresseområde. 5.2.4. GetGeometries Metoden GetGeometries returnerar geometrierna för de ledningsnät som ledningsägaren har inom den av argumenten angivna begränsningsrektangeln. De returnerade geometrierna skall vara formatterade enligt OGC WKT. Begränsningsrektangeln anges i det koordinatsystem som ges från parametern srid (Spatial Reference ID), t.ex. 4326 för WGS84, 3006 för SWEREF99 TM, o.s.v. De frågor som ställs via denna metod kommer ha en begränsad geografisk utbredning, d.v.s. begränsningsrektangelns yta kommer vanligtvis vara högst ett fåtal kvadratkilometer. 6(8)

Manualer Peter Thorin Öppen 2015 02 04 B1 7(8) 5.3. IExternalAreaOfInterest Ledningsägaren implementerar detta interface och returnerar instanser av detta då metoden GetAreasOfInterest i ICustomDataAccess anropas. Detta interface används för att förmedla information om ledningsägarens intresseområden till Ledningsägarmodulen. Ledningägarmodulen behöver både den geografiska informationen och ett namn för varje intresseområde, och denna information grupperas i IExternalAreaOfInterest. public interface IExternalAreaOfInterest { /// <summary> /// Unique name of the area of interest. string UniqueName { get ; } } /// <summary> /// Wkt representation of all geometries belonging to the area of interest string Wkt { get ; } 5.3.1. UniqueName Metoden UniqueName innehåller intresseområdets namn, som både fungerar för att identifiera området för Ledningskollens och ledningsägarmodulens användare, samt internt för systemet. Som namnet säger måste namnet vara unikt för ledningsägaren, d.v.s. om ledningsägaren har flera intresseområden måste samtliga ha olika namn. 5.3.2. Wkt Metoden Wkt innehåller områdets geometrier, formatterade som OGC WKT. 5.4. AreaOfInterestsBadStateException Om den geometriska informationen befinner sig i ett sådant tillstånd att några anrop ej kan accepteras eller om något annat oförutsätt går snett så bör ett Exception av typen AreaOfInterestsBadStateException kastas. Detta kommer omedelbart avsluta transaktionen utan att genomföra den. 6. Komma igång Nedan följer ett par tips som kan komma till användning när du skapar ditt tillägg för Ledningsägar modulen. 1. Ditt projekt a. Måste vara ett Visual Studio, Class Library (dll) project b. Kan döpas till vad som helst. c. För att du ska kunna använda gränsnittet (interfacet), som beskrivs i kapitel 5, behöver du använda biblioteket ICustomDataAccess.dll. Detta hittar du i lib katalogen i Ledningsägarmodul installationen. d. Dina klasser som ärver från gränssnittet får inte ha några restriktioner vad gäller namngivning. 7(8)

Manualer Peter Thorin Öppen 2015 02 04 B1 8(8) 2. Driftsätta din implementation a. Skapa en ny mapp i Ledningsägarmodul installationen (döp den förslagsvis till addons ). b. I mappen (addons), lägg till biblioteket som ditt projekt skapat (dll). c. Nu måste du ändra web.config filen för Ledningsägarmodulprojektet. d. Två nya entiteter skall läggas till under appsettings. e. Lägg till CustomDataAccess sätt värdet till true f. Lägg till PluginPath värdet är pathen till den mapp där dll filen ligger (.../addons). g. Starta om app poolen och gå till Ledningsägarmodulsiten. Du behöver inte logga in, vänta till login sidan har laddats in och kolla sedan på filen Lemmy.log. Du skall se följande rad: Lemmy.Service.Impl.PluginService Create Plugin Kernel, plugin to load: Lemmy.Service.ICustomDataAccess >LemmyAddon.YOUR_CLASS_NAME 7. Relaterade dokument Dokumentnamn Beskrivning Utgåv a Ledningsägarmodulen Installation och drift Beskriver installation samt rutiner kring driften. Ledningsägarmodulen Användarhandledning Beskriver Ledningsägarmodulens funktioner och användargränssnitt. Ledningsägarmodulen Systemkrav Beskriver krav på systemmiljön. Ledningsägarmodulen Översikt Beskriver Ledningsägarmodulen översiktligt 8(8)