Facit Tentamen 17/3 Informationsinfrastruktur Teoridel (30 p) 1) Svar Application infrastructure innehåller system och tjänster som tillhandahåller funktionalitet och information till olika verksamheter. Service infrastructure innehåller tjänster för säkerhet och identifiering. Data transport infrastructure erbjuder transport av data från olika system och tjänster på applikationsnivån. Serviceinfranstrukturen tillsammans med transportinfrastrukturen understödjer applikationsinfrastrukturen med sina tjänster. Applikationsinfrastruktur: Exempel från uppgiften är den gateway som ni utvecklade och de tjänster som ni anropade för att få information om fordon och platser och den klient ni utvecklade. Serviceinfrastruktur: Exempel från uppgiften är t.ex. de identifierare GIAI och EVN som ni använde er av och t.ex. UDDI and WSDL protokollen som används i webservices. Transportinfrastrukturen: Exempel på detta är TCP/IP och SOAP-potokollets beskrivning av hur XML-filer ska skickas och tas emot. Andra exempel är den tekniska infrastrukturen av RFID-läsare och RFID-taggar på vagnar. 2) Svar En identifierare är en språklig konstruktion som används för att unikt referera till objekt utan att man behöver beskriva objektet. 1 p Genom att identifierare används till att unikt referera till viktiga informationsobjekt och att viktig information kan sökas ut med hjälp av dessa identifierare så måste dessa identifierare och register med sådana identifierare vara lätttillgängliga för de som använder e-infrastrukturen. Detta kan exemplifieras med EVN-numret som användes för att hämta information från fordonsregistret. 3 p c) Problem 1 innebär att man lägger in beskrivande information i identifieraren vilket gör den instabil. Problem 2 betyder att man väljer fel identifierare till fel objekt vilket leder till att man identifiera alla objekt som man vill identifera med hjälp av identifieraren. Problem 3 handlar om att man inte har tillräckligt bra rutiner för att skapa och ta bort identifierare vilket kan leda till att samma identifierare används för att identifiera flera ting eller att ett ting felaktigt får flera identifierare. 3 p 3) Svar
Standarder är en av de mest effektiva medlen för att koordinera den distribuerade designen av e-infrastrukturer. De spelar en dominerade roll när det gäller att koordinera och implementera, IT komponenter på ett distribuerat sätt. c) Tekniska standards (horisontella standards) är standarder som används för att koppla samman IT komponenter i den understödjande strukturen samt komponenter i den understödjande strukturen med IT komponenter i applikationsinfrastrukturen, t.ex. Internet standarder som (TCP/IP, XML) Semantiska standarder (vertikala standards). Standarder för olika verksamhetsområden som definerar hur IT komponenter kan kopplas samman på applikationsnivå. Exempel på tekniska standarder som användes i projektet var TCP/IP och XML. Exempel på verksamhetsmässiga standarder är t.ex. EPCIS meddelandet. 4) Svar Legala förutsättningar (Legal pre-conditions) Det är lagen som möjliggör informationsutbytet. De är mycket viktigare än standarder p.g.a. att standarder är frivilliga lagen är obligatorisk. Lagarna motverkar dock informationsutbyte genom att de ofta inte är i harmoni med och med modern e-förvaltning. Den är ett hinder när den inte är för vag och utelämnar för mycket tolkning eller för detaljerad som omöjliggör god IT design. Den motverkar ett modernt informationsutbyte genom t.ex. en otydlig definition av direkt-access. 5) Svar Gateways Gateways permit information and functionality from multiple applications to be integrated, through rough patches often remain that must be smoothed over by user action. At the user level gateways can be described as IT-capabilities connecting various dispersed applications and work practices. SOA SOA definerar standardiserade system-till-system tjänster som är löst sammanbundna genom att binding sker vid runtime och att de kommunicerar med hjälp av standardiserade XML-meddelanden. Detta gör att man kan koppla samman olika heterogena IT komponenter.
Adapter En adapter är en översättare av olika format och utgör ett interface mellan olika protokoll och standarder. I samband med e-infrastrukturer används adaptrar för att översätta data med olika format i den installerade basen till ett standardiserat format t.ex. XML. Programmerings- och modelleringsdel (25 p) Det finns fyra tydliga identifierade objekt i meddelandet RapportOmUtlastningFrånLager: Transport Identitet på transportfordonet samt ansvarigt företag med kontaktperson Transportlista Definierar lasten av transporten genom en lista av kollin Kolli Ingår i en transportlista och innehåller en produkt vid transport Produkt identifieras med en EPC-kod
En transport har en last som beskrivs i transportlistan. En transportlista beskriver flera kollin och till varje kolli hör till en produkt. XElement HämtaRapportOmUtlastningFrånLager() { XElement aggevent = HämtaAggregationEvent().Element("AggregationEvent"); DateTime eventtid = (DateTime)aggEvent.Element("eventTime"); String parentid = (String)aggEvent.Element("parentID"); XElement fordonregister = HämtaTransportregister(); XElement fordoninfo = fordonregister.elements("transport"). Single(xml => (String)xml.Element("Id") == parentid); var rapport = new XElement("RapportOmUtlastningFrånLager", new XElement("RapportId", Guid.NewGuid()), new XElement("LastTid", eventtid.tostring("dd/mm/yyyy HH:mm")), new XElement("Transport", new XElement("TransportId", Guid.NewGuid()), new XElement("FordonId", parentid), new XElement("AnsvarigtFöretag", fordoninfo.element("företag"), fordoninfo.element("kontaktperson"))), new XElement("TransportLista", new XElement("AntalKollin", aggevent.element("childepcs").elements("epc").count()), new XElement("Kollin", from epc in aggevent.element("childepcs").elements("epc") let produktsvar = HämtaProduktInformation((String)epc) let produktinfo = produktsvar.element("produktinformation") let pföretag = (String)produktSvar.Element("Företag") let pid = (String)produktInfo.Element("Id") let pnamn = (String)produktInfo.Element("Namn") select new XElement("Kolli", new XElement("KolliId", Guid.NewGuid()), new XElement("Produkt", new XElement("Id", pid), new XElement("Namn", pnamn), new XElement("Företag", pföretag)))))); } return rapport;
Exempel XML: <RapportOmUtlastningFrånLager> <RapportId>83b5471c-2ada-409c-ae59-121bc9cac5e3</RapportId> <LastTid>21-06-2011 09:37</LastTid> <Transport> <TransportId>d143fdf6-b882-4a5f-8bfb-aae52f7afc57</TransportId> <FordonId>bcb54b67-d47c-44b2-9246-d57f9f5f6257</FordonId> <AnsvarigtFöretag> <Företag>Rullande transporter AB</Företag> <Kontaktperson> <Namn>Kalle Svensson</Namn> <Telefonnummer>555-555-555</Telefonnummer> </Kontaktperson> </AnsvarigtFöretag> </Transport> <TransportLista> <AntalKollin>2</AntalKollin> <Kollin> <Kolli> <KolliId>c5572bff-992c-4437-958e-9994bfc47884</KolliId> <Produkt> <Id>urn:epc:id:giai:735003433.1317445522194</Id> <Namn>Tandborste</Namn> <Företag>Tandborstar AB</Företag> </Produkt> </Kolli> <Kolli> <KolliId>572ea4a0-b472-4440-82b7-31bc7a96eab3</KolliId> <Produkt> <Id>urn:epc:id:giai:120065575.1317445522192</Id> <Namn>Mjölk</Namn> <Företag>Arla AB</Företag> </Produkt> </Kolli> </Kollin> </TransportLista> </RapportOmUtlastningFrånLager>