2013-5-26-모바일인지-sequenceDiagram(MDS기준 비동기적방식).svg source
Retired DISLab
Title : MDS가 사용하는 경우 (비동기적 방식 사용) participant CardProgram participant AgentMonitorApplication participant AgentMonitor participant AgentMonitorReceiver participant Weather participant WeatherThread participant BlackboardMonitorApplication participant BlackboardMonitor participant BlackboardReceiver participant ServiceInterface participant BlackboardService participant BlackBoard participant WebService participant WeatherCenter participant AnotherClients AgentMonitorApplication -> AgentMonitorApplication : (Auto Generated) AgentMonitorApplication -> AgentMonitor : getInstance() AgentMonitor -> AgentMonitorReceiver : registerReceiver() AgentMonitor --> AgentMonitorApplication : AgentMonitor Instance BlackboardMonitorApplication -> BlackboardMonitorApplication : (Auto Generated) BlackboardMonitorApplication -> BlackboardMonitor : getInstance() BlackboardMonitor -> BlackboardReceiver : registerReceiver() BlackboardMonitor -> BlackboardService : bindService() BlackboardMonitor -> Weather : <<create>> Weather -> BlackboardMonitor : registerAgent(this:Agent) BlackboardMonitor --> BlackboardMonitorApplication : BlackboardMonitor Instance Note right of CardProgram : <- Start Here CardProgram -> AgentMonitor : getInstance() AgentMonitor --> CardProgram : AgentMonitor Instance CardProgram -> AgentMonitor : createCard("weather":String, wantedData:ContentValues):String AgentMonitor -> AgentMonitor : registerUID(“weather”:String) AgentMonitor -> BlackboardReceiver : sendBroadcast()[A] AgentMonitor --> CardProgram : return():void (CardProgram은 다른 일 수행 가능) BlackboardReceiver -> BlackboardMonitor : Agents.Iterator():Iterator BlackboardMonitor --> BlackboardReceiver : Agents Array List Iterator BlackboardReceiver -> Weather : run(wantedData:String)[B] Weather -> WeatherThread : new WeatherThread.excute(wantedData:String)[C] WeatherThread -> BlackboardMonitor : getInstance() BlackboardMonitor --> WeatherThread : BlackboardMonitor Instance WeatherThread -> BlackboardMonitor : get(“current context”:String, “GPS”:String):String BlackboardMonitor -> BlackboardService : get(“current context”:String, “GPS”:String):String BlackboardService -> BlackBoard : getData(dataName:String):String BlackBoard --> BlackboardService : 현재 좌표 BlackboardService --> BlackboardMonitor : 현재 좌표 BlackboardMonitor --> WeatherThread : 현재 좌표 WeatherThread -> BlackboardMonitor : get("User Behavior Model":String, "Static Temporal POI Prob":String):String BlackboardMonitor -> BlackboardService : get("User Behavior Model":String, "Static Temporal POI Prob":String):String BlackboardService -> BlackBoard : getData(dataName:String):String BlackBoard --> BlackboardService : 5시간 뒤 예상좌표 BlackboardService --> BlackboardMonitor : 5시간 뒤 예상좌표 BlackboardMonitor --> WeatherThread : 5시간 뒤 예상좌표 WeatherThread -> ServiceInterface : get("weather":String, {"현재 좌표":String, "현재 시간":String, "5시간 뒤 예상 좌표":String, "5시간 뒤 시간":String} ServiceInterface -> WebService : URL WebService -> WeatherCenter : 기상 정보 얻기 WeatherCenter --> WebService : 기상 정보 WebService --> ServiceInterface : 기상 정보(JSON) ServiceInterface --> WeatherThread : 기상 정보:String WeatherThread -> BlackboardMonitor : sendResult(weatherData:String) BlackboardMonitor -> AgentMonitorReceiver : sendBroadcast[D] BlackboardMonitor -> AnotherClients : sendBroadcast[D] AgentMonitorReceiver -> AgentMonitor : getUIDiterator() AgentMonitor --> AgentMonitorReceiver : UID List Iterator AgentMonitorReceiver -> AgentMonitor : completed(weatherData:String) [E]