Informatyka Systemów Autonomicznych

Podobne dokumenty
Informatyka Systemów Autonomicznych Bot informacyjny w sieci IM jako agent - opis i zastosowanie

Tips & Tricks. Czy wiesz że. wersja Aktualizacja dokumentu: Copyright COMARCH S.A.

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

wersja dokumentu 1.0 data wydania

Alians AMReminder. Przypomnij kontrahentom o nierozliczonych płatnościach

Deduplikacja danych. Zarządzanie jakością danych podstawowych

Bazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Rozpoczęcie pracy z programem.

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Kurier DPD dla Subiekt GT

Podręcznik użytkownika AgentOptimed24

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Szpieg 2.0 Instrukcja użytkownika

Instrukcja instalacji i obsługi programu Szpieg 3

Projektowanie bazy danych przykład

SYSTEM INFORMATYCZNY KS-SEW

Bazy danych 2. Wykład 1

Podręcznik użytkownika

Definiowanie szablonów przypomnień o braku płatności

System archiwizacji i konserwacji baz danych MS SQL

System automatycznego wysyłania SMSów SaldoSMS

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

STWORZENIE BIBLIOTEKI SŁUŻĄCEJ DO WCZYTYWANIA

ActiveXperts SMS Messaging Server

Dokumentacja projektu QUAIKE Architektura oprogramowania

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Wystawianie faktur sprzedaży na rachunek faktora

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

INSTRUKCJA AKTYWACJI I OBSŁUGI BRAMKI SMS DLA FIRM. (Bramka SMS dla małych Firm, Bramka SMS Pro)

KS-APTEKA Windows. KAMSOFT S.A. Katowice 2013 KS-AOW. (Wielomagazynowość) Instrukcja WIELOMAGAZYNOWOŚĆ Dokument: Wydanie: 1 Waga: 90

Podstawowe możliwości programu Spectro Market Faktura

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Plan lekcji Optivum. Jak przypisywać do przydziałów preferencje dotyczące sal?

Nowy interfejs w wersji 11.0 C8 BETA

Wprowadzenie do Doctrine ORM

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

INSTRUKCJA OBSŁUGI Wersja: 1.8

Instrukcja wdrożenia zmian w programie ProLider. ( Zmiany wprowadzone w wersji )

Wymagane jest podłączenie serwera do Internetu (konieczne do zdalnego dostępu).

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Jak uruchomić automatyczną synchronizacje z Optima

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

Opis zmian funkcjonalności platformy E-GIODO wprowadzających możliwość podpisania wniosku bezpośrednio w oknie przeglądarki.

Część I Tworzenie baz danych SQL Server na potrzeby przechowywania danych

Bazy danych i strony WWW

Wypożyczalnia by CTI. Instrukcja

PRZYKŁAD. Prosta uczelnia. Autor: Jan Kowalski nr indeksu: (przykładowy projekt)

SYSTEM INFORMATYCZNY KS-SEW

Tworzenie aplikacji bazodanowych

Opracowanie protokołu komunikacyjnego na potrzeby wymiany informacji w organizacji

Komunikator internetowy w C#

Instrukcja konfiguracji powiadomień

Monitoring procesów z wykorzystaniem systemu ADONIS. Krok po kroku

INSTRUKCJA OBSŁUGI Wersja: 2.5

Finanse. Jak wykonać import listy płac z programu Płace Optivum do aplikacji Finanse?

REFERAT O PRACY DYPLOMOWEJ

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Nowe funkcje w programie Forte Finanse i Księgowość

e-biuro-fakturowanie

Zamówienia. Dokumentacja eksploatacyjna

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

Wersja dokumentacji: 1.2. Ostatnia aktualizacja: SETUP XL

FUNKCJONALNOŚ C PORTAL B2B KAMELEON.ŚQL

Instrukcja użytkownika

Spis treści. Przedmowa

SysLoger. Instrukcja obsługi. maj 2018 dla wersji aplikacji (wersja dokumentu 2.5)

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Wypożyczalnia VIDEO. Technologie obiektowe

PekaoBiznes24 nowe spojrzenie na bankowość internetową

Instrukcja integratora - obsługa dużych plików w epuap2

DOTYCZY KLIENTA PKO BIURO OBSŁUGI LEASING ZAPYTANIE O INFORMACJĘ OTYCZY: DOSTAWY PLATFORMY ELEKTRONICZNE DLA PKO

PL B1. ABB Sp. z o.o.,warszawa,pl BUP 26/01. Michał Orkisz,Kraków,PL Mirosław Bistroń,Jarosław,PL

nr sprawy: BZP ML Wrocław, dn. 20 lutego 2014 r. SPROSTOWANIE DO INFORMACJI DLA WYKONAWCÓW NR 13

Zmiany funkcjonalne i lista obsłużonych zgłoszeń Comarch DMS

Obok mamy przycisk Edytuj który umożliwia edycję danych już istniejącego użytkownika.

Autor: Joanna Karwowska

Technologie Internetowe Raport z wykonanego projektu Temat: Internetowy sklep elektroniczny

INSIGNUM Sprzedaż Detaliczna

Nowe funkcje w programie SYMFONIA Środki Trwałe Forte w wersji 2008

Jednolity Plik Kontrolny JPK_VAT

Język Java część 2 (przykładowa aplikacja)

Win Admin Replikator Instrukcja Obsługi

Konwerter XML Dla Programów Symfonia Kadry i Płace oraz Forte Kadry i Płace

1 Moduł Konwertera. 1.1 Konfigurowanie Modułu Konwertera

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Połączenie AutoCad'a z bazą danych

Wybrane zmiany wprowadzone w pakiecie

Opracowanie systemu monitorowania zmian cen na rynku nieruchomości

System zarządzający grami programistycznymi Meridius

czerwony PLUS dla InsERT GT to specjalny pakiet rozszerzeń funkcjonalnych dla systemów z linii InsERT GT.

Projektowanie baz danych za pomocą narzędzi CASE

REFERAT O PRACY DYPLOMOWEJ

Transkrypt:

Rafał Jagielnicki, 133259 Wrocław, 2.06.2007 Informatyka Systemów Autonomicznych Bot informacyjny w sieci IM jako agent realizacja 1. Wstęp Celem pracy jest zaprezentowanie przykładowej realizacji funkcjonalności agenta programowego na podstawie istniejącego oprogramowania bota informacyjnego dla sieci IM (Instant Messaging), który został napisany na potrzeby pewnej istniejącej firmy. 2. Bot informacyjny Głównym motywem do stworzenia bota była chęć udostępnienia użytkownikom istniejącego już systemu bazodanowego tej firmy, dostępu do zgromadzonych w nim informacji za pośrednictwem rozmów w sieciach IM. Funkcjonalność bota obejmuje: automatyczne powiadamianie użytkownika o wystąpieniu wybranych zdarzeń (zdarzenie to określona zmiana w bazie danych, np. modyfikacja tabeli); każdy użytkownik sam decyduje o czym i kiedy chce być powiadamiany możliwość rozmowy z botem, podczas której, użytkownik może zapytać się o pewne informacje, które są pobierane z bazy danych systemu 3. Bot informacyjny jako agent Opisywane oprogramowanie posiada kilka cech agenta: obserwuje swoje otoczenie (otoczenie jakim jest baza danych i sieci komunikatorów internetowych) i pobiera z niego wybrane informacje reaguje na zmiany w otoczeniu i oddziaływuje na nie działa przez bardzo długi okres czasu (w pewnym sensie żyje) i jest ciągle aktywny (nawet jeżeli nic nie robi z punktu widzenia użytkownika) jest w pewnym stopniu autonomiczny i adaptacyjny

Wymienione cechy bota agenta są opisane dokładniej w pracy Bartosza Owczarka. 4. Realizacja funkcjonalności agenta Język implementacji to C# (środowisko.net), jednak przedstawione tutaj rozwiązania można zaprogramować w praktycznie dowolnym innym języku. Rys. 2. Schemat wielowątkowości programu Najbardziej istotną cechą jest tutaj silna wielowątkowość. Na powyższym schemacie widać, że główne wątki odpowiadające za ciągłe działanie bota (za jego życie i aktywność) to: wątek nasłuchujący sieci IM wątek monitorujący bazę danych Obydwa działają na zasadzie nieskończonej pętli, w której w każdym kroku są usypiane na pewien krótki okres czasu. Wykrywanie zmian otoczenia jest zrealizowane w każdym z nich inaczej: w wątku obsługi sieci IM użyte są mechanizmy języka C# (Events), które pozwalają wykonywać dowolne funkcje w momencie wystąpienia zdefiniowanego przez użytkownika zdarzenia; w tym przypadku zdarzenia pochodzą z bibliotek obsługujących poszczególne protokoły IM (Gadu Gadu, Skype itd.) i są to: nadeszła nowa wiadomośc, wysłano wiadomość, rozłączono itp.

w wątku obsługi bazy danych tutaj wątek sam monitoruje tabele, które zostały wybrane przez użytkownika i sprawdza, czy zmieniła się liczba wierszy lub ich zawartość; sprawdzanie zmian jest zrealizowane przez proste buforowanie poprzedniego stanu monitorowanej tabeli (niekoniecznie całej); alternatywne rozwiązanie, to użycie mechanizmu dostępnego w Microsoft SQL Server (tzw. Query Notifications), który pozwala automatycznie powiadomiać aplikację w momencie wystąpienia określonych zmian w bazie danych Oddziaływanie na otoczenie odbywa się w wątkach tworzonych w momencie wystąpienia określonych zdarzeń (na rysunku: wątki rozmów i wątki obsługi zmian w bazie danych). Można wyróżnić kilka reakcji: rozpoczęcie nowej rozmowy stworzenie nowej Sesji (obiektu, który opisuje trwającą rozmowę i jest jej identyfikatorem) obsługa trwającej rozmowy do wysyłania wiadomości używane są standardowe funkcje z biblioteki danego protokołu IM zakończenie rozmowy jeżeli użytkownik wyrazi taką chęć, wysyłając słowo koniec lub jeżeli zostanie przekroczony ustalony czas, jaki minął od momentu otrzymaina ostatniej wiadomości użytkownika; usunięcie obiektu Sesja dla danej rozmowy powiadomienie o zmianie w bazie danych wysłanie pojedyńczej wiadomości do użytkownika, z czytelnym opisem zmiany, jaka zaszła (np. Dodano nową fakturę. Jej wartość to... ); jest to niezależne od tego, czy użytkownik rozmawia z botem, czy nie Następne dwie cechy agentowości: adaptacyjność i autonomiczność zostały tutaj zaimplementowane tylko częściowo. O szczątkowej adaptacyjności (czyli umiejętności dostosowania się do zmieniających się warunków) może być tutaj mowa w kontekście sposobu prowadzenia przez bota rozmowy z użytkownikiem. Cała rozmowa ma postać menu i funkcji, które użytkownik może z niego wybierać. Funkcje mogą posiadać parametry, które albo podawane są przez użytkownika, albo pobierane z aktualnego kontekstu rozmowy. Przykład: menu kontrahenci Kategoria 'Kontrahenci': 1. Lista kontrahentów mających stronę WWW (kontrahenci www) 2. Lista kontrahentów mających adres email (kontrahenci email) 2 Kontrahenci posiadający adres email: 1. POLCARD info@polcard.com.pl 2. LUKAS BANK info@lukas.com.pl 3. ABC info@abc.com.pl 4. TABIS office@tabis.pl

operacje 1. Pełna nazwa i adres kontrahenta (adres kontrahenta) adres kontrahenta 3 Adres kontrahenta: ABC Wrocław Polanka 12/6 Jak widać powyżej, użytkownik za pierwszym razem wybrał funkcję bez parametrów (podając jej numer z listy menu, czyli 2), za drugim razem wybrał funkcję podając jako parametr numer wiersza danych z aktualnego kontekstu (wybrał funkcję adres kontrahenta z parametrem 3, czyli trzecim elementem na liście kontrahentów (ABC) uzyskanej w wyniku wcześniej wybranej funkcji). Adaptacyjność bota polega tutaj na tym, że wszystkie możliwe do wykonania operacje (czyli funkcje do wyboru), dostepne dla nich parametry i kontekst danych za każdym razem mogą być inne. Bot w trakcie rozmowy dostosowuje się do użytkownika i pozwala mu wykonywać tylko takie operacje, które mają sens w danej chwili na bieżącym kontekście danych. Zostało to zrealizowane, poprzez definiowanie funkcji menu w plikach XML w takiej postaci, aby jasne było, jakiego typu wartości wejściowe i wyjściowe posiada dana funkcja. Dzięki temu można dynamicznie dopasowywać do siebie funkcje i dane (dane są określonego typu) w trakcie rozmowy, na podstawie właśnie tych typów. Przykładowy plik z definicją jednej z dostępnych funkcji (type wejściowe i wyjściowe zdefiniowane są w obrębie znaczników inputparameters i outputparameters, pozostałe znaczniki nie są istotne z punktu widzenia agentowości): <menuitem category="kontrahenci"> <name>nazwa_adres_kontrahent</name> <description>pełna nazwa i adres kontrahenta</description> <alias>adres kontrahenta</alias> <text>adres kontrahenta:</text> <query>select kh_symbol, adr_miejscowosc, adr_adres from kh Kontrahent inner join adr Ewid on kh_id = adr_idobiektu where adr_typadresu = 1 and kh_symbol = '${1}'</query> <helpmessage>wyświetla nazwę i adres wybranego kontrahenta. Należy podać symbol kontrahenta.</helpmessage> <inputparameters> <inputparameter index="1">kh_symbol</inputparameter> </inputparameters> <outputparameters> <outputparameter column="1">kh_symbol</outputparameter> <outputparameter column="2">adr_miejscowosc</outputparameter> </outputparameters> <permissions>1312 1315</permissions> </menuitem>

Kolejna cecha, autonomiczność, pozwala agentowi na samodzielne inicjowanie działań. Jest ona obecna w opisywanym bocie również tylko częściowo i dotyczy powiadomień wysyłanych do użytkowników o zmianach w bazie danych. Bot przyjmuje od użytkowników informacje o czym i kiedy chcą być powiadamiani (realizują to odpowiednie funkcje w trakcie rozmowy, zapisywane podobnie jak w wyżej zamieszczonym pliku XML). Krótki przykład: powiadomienia Dostępne powiadomienia: 1. Adresy email kontrahentów (wyłączone) 2. Aktualna lista towarów (wyłączone, ustaw parametry) włącz powiadomienie 2 Włączono powiadomienie o numerze 2 ustaw powiadomienie 2... ; następuje kilka pytań na temat żądanej ; częstotliwości otrzymywania informacji... ; i ewentualnych dodatkowych parametrów (tutaj np. ; maksymalna ilość towaru, typ towaru itd.) Od tej pory bot sprawdza co jakiś czas bazę danych dla użytkownika i ewentualnie wysyła mu wiadomość (tutaj z aktualną listą towarów). Można więc powiedzieć, że użytkownik deleguje bota agenta do przeglądania określonych tabel i przysyłania co jakiś czas informacji, które spełniają warunki podane przez użytkownika. Bot jednak sam uznaje, kiedy należy wysłać powiadomienie i robi to niezależnie od tego, czy trwa rozmowa z danym użytkownikiem, czy nie (wszystko wykonuje się w opisanym wcześniej wątku monitorującym bazę danych). 5. Wnioski Opisany bot informacyjny nie był projektowany z myślą o byciu agentem. To, że posiada on jednak kilka cech, które w mniejszym lub większym stopniu pozwalają określić go jako agenta programowego, osiągnięte zostało raczej nieświadomie. Opisana realizacja funkcjonalności tych cech powinna być traktowana jako przykład i z pewnością mogłaby być zaimplementowana inaczej/lepiej. Najbardziej oczywistym elementem do przyszłego udoskonalania jest sama rozmowa z botem, która ma postać funkcji wybieranych z menu. Można by pokusić się o próbę wprowadzanie rozmowy w języku naturalnym (albo chociaż zbliżonym do naturalnego), jednak jest to złożone zagadnienie (zwłaszcza dla języka polskiego), którego realizacja prawdopodobnie byłaby trudniejsza niż realizacja pozostałej funkcjonalności bota. Inną istotną cechą agenta, która

jest tutaj nieobecna, jest umiejętność zdobywania doświadczenia i wykorzystywania go w interakcji z użytkownikiem. W tym przypadku doświadczeniem mogłoby być zapamiętywanie najczęściej używanych przez każdego użytkownika funkcji i proponowanie mu skrótów, argumentów itd. Agent może też komunikować się z innym agentem. W przypadku bota informacyjnego polegałoby to na wymianie informacji z innym botem, za pośrednistwem sieci IM. W praktyce byłoby to po prostu wysyłanie wiadomości tekstowych przez dwa takie automaty (zamiast tekstu można wysyłać np. bardziej złożone obiekty, które zostały poddane serializacji, jednak medium to po prostu sieć danego komuniakatora). Przykładowe zastosowanie to np. wymiana informacji handlowych, zgromadzonych w dwóch różnych bazach danych, przez dwa różne boty, które znają wspólny protokół komunikacji. Inne cechy agenta wydają się nie mieć tutaj praktycznego zastosowania (mobilność, osobowość jedynie w przypadku rozmowy w języku naturalnym). Literatura [1] Kod źródłowy opisywanego oprogramowania [2] Materiały do wykładu (m.in. http://www.msci.memphis.edu/~franklin/agentprog.html) [3] http://msdn.microsoft.com [4] http://pl.wikipedia.org