Systembeskrivning Kommunikation i ett intelligent hem 2D1954 Programutvecklingsprojekt Projektgrupp B1 ([email protected]) Göran Helmers ([email protected]) Andreas Bigner ([email protected]) Mandus Engman ([email protected]) Martin Johannesson ([email protected]) Innehåll Systemskiss 3 3 4 5 5 5 6 6 Moduler Meddelandediagram Dialogbeskrivning Klasser Allmänt Standardoperationer Referenser 2 Systemskiss Moduler Systemet består av en Jini-server, ett agentprogram och ett resursprogram. Jini-serverns uppgift är att förmedla kontakter mellan agenter och resurser. När en resurs startar, registrerar den sig på Jiniservern och talar om att den är tillgänglig för användning av agenter. När en agent vill kontakta en resurs, skickar den en förfrågan till Jini-servern. Om den eftersökta resursen är registrerad, returnerar Jini-servern resursens gränssnitt till agenten. Därefter kan agenten anropa resursen som ett vanligt lokalt Java-objekt. Jini tar automatiskt hand om själva nätverkskommunikationen och därför behövs inte något protokoll för agent/resurs-kommunikationen konstrueras. Alla resurser har samma gränssnitt. Agenten använder sig av resursen genom att ta emot en lista med standardiserade operationer, som agenten måste kunna utföra för att kunna använda sig av resursen. Till exempel är förflyttning en standardiserad operation. När agenten har tagit emot listan går den igenom listan och undersöker varje operation för att se om den kan utföras av agenten. Exempel: en robot kan förflytta sig, men det kan inte ett kylskåp. Om agenten kan utföra alla operationerna, talar den om detta för resursen och börjar sedan utföra dem i tur och ordning. Om inte, avbryter agenten kommunikationen och återupptar aktiviteter på annat håll. När agenten har utfört operationerna, meddelas resursen och kommunikationen avslutas. Roboten i projektet kontrolleras av ett befintligt styrsystem, som kallas Planner. För att roboten ska kunna kommunicera med postfacket behöver ett agentprogram implementeras för roboten. Agentprogrammet styr sedan roboten genom att i sin tur kommunicera med Planner. 3 Meddelandediagram 4 Dialogbeskrivning Här följer en steg för steg förklaring av agent/resurs-dialogen som meddelandediagrammet ovan illustrerar: Meddelande GetInformation(args) Innebörd Agenten inleder med att fråga efter information om resursen och skickar med eventuella parametrar som resursen kräver. Resursen returnerar ett informationsobjekt, som talar om resursens geografiska placering. Agenten frågar om resursen är upptagen. Agenten försöker reservera resursen och får en biljett om det lyckas. Biljetten används i alla efterföljande meddelanden för att kontrollera att rätt agent gör rätt saker. Agenten beordrar resursen att skapa en lista av operationer, som behövs för att använda resursen. Listan kan bero på argumenten, som därför skickas med en gång till. Agenten frågar om det finns fler operationer i listan. Agenten efterfrågar nästa operation i listan. Agenten meddelar resursen att operationerna kan utföras. Agenten frågar om resursen är redo, för att ge resursen tid att förbereda sig. Agenten meddelar att den har för avsikt att utföra operationerna. Agenten meddelar att den har utfört alla operationer. Agenten frigör resursen och lämnar tillbaka biljetten. IsOccupied() allocate() initiateActions(ticket,args) hasMoreActions(ticket) nextAction(ticket) actionsMatch(ticket,true) isReady(ticket) begin(ticket) end(ticket) free(ticket) Klasser Allmänt Den klass som är viktigast är resursgränssnittet ResourceInterface. Gränssnittet definierar alla de metoder, som agenten anropar i dialogen mellan agenten och resursen. Övriga klasser beskrivs bäst i den automatgenererade API-dokumentationen. 5 Standardoperationer Varje standardoperation har en unik typidentifierare. Typidentifierarna består av en typ och en undertyp. På detta sätt kan typidentifierarna ordnas hierarkiskt i två nivåer och därmed kan flera alternativa subtyper av operationer användas för att utföra typoperationen. Type Subtype NoAction GoTo Lift (Tom) General2D Fork Claw Referenser The Community Resource for Jini Technology, 2000-04-20, http://www.jini.org Jini Connection Technology, 2000-04-20, http://www.sun.com/jini 6