UNlVERSlDADE GUILHERME TUlUTl DO PARANA JOSE DE SOUZA BOING INTERA<;:AO ENTRE AGENTES USANDO KQML SETOlllAl BARIGUI Curitiba 2006 CONSULTA INTERNA GUILHERME INTERA(AO JOSE DE SOUZA BOING ENTRE AGENTES USANDO KQML Tr.llulho de g.r3d\l(\~;\o :lPrelelllOldo no Curso de Tccnologin em Procesumcnlo de Dldos tb Universidade Tuiuti do PJ",m\, COIllO requisito fimll pJfol obtcm;:lo Tccn61ogo em ProccsullK'nto de 0,,1.101. Oritnl:ldunl: Curitiba 2006 Pror El:1.iniSimoni :\n!;.cloni. do titulo de TERMO Guilhcrme INTERAC;:AO DE APROV AC;:AO .Iosc de Souzn Boing ENTRE AGENTES USANDO Estn monogrJfia roi julgada e nprov;;ld.1 pam obten911o do Grow de Proccssamento de Dados da Universidade Tuiuti do Parami Curitiba. 28 de ,gosto T<."Cnologia de 2006. de Dildos do Pararni. em ProccsS3mcnto Universidndc Tuiuti Prof. Marcos Antonio Canalli Univcrsidade Tu.iuti do Parona Profn Angela Helena Zaui Universidadc Tuiuti do Parana KQML Tocn61ogo em DEDlCATO\UA Dedico este trabalho a todos que dejorma tiirctn 011 illdire/a cOllt,.ibui,.ClIn realizllI;iio. para $ua AGRADECIMENTOS Ainda qu~ uma obm cientificn exija de seu autar um considcrovcl dispendio de tempo, persistt-l1cia e vontadc detenninada h<1a nccessidade de contribuicyOes t'llheias a obm, mas que represcntam participa<;fio efetiva na mesma. Este tmbalho nno fage il regra, motivo pelo qual hn a necessidade de preslar a justa homenagem its illume-ras pessoas que viabilizaram sua rC3Iiz3C;uo. Nao mencionii~ las seria como que desconsiderar a importancia cia atenr;30 recebida. N;1o poderia deb~3r de ressaitaf. por exemplo. orientaciofJ., ProF. Mestre Elaini Simoni Angelotti, a figurn impar de minha a qual me forneccu prcciosas sugestocs ao lango deste trabalho, e com alenr;i.1oinestimavel relcu inlnTIcras vezes as p{lginas que 0 compoem. Agrade~o a meus pais por terem me apoiado nas varias madrugadas passei cm claro traduzindo artigos cientificos Oll buscando novas fontes na Em momento algllm eles me desmotivaram, mesmo quando prosseguir, ja desgastado ell que i"/t!rlIel. me julgava incapaz de pelas intllneras tentaliv3S de desenvolver um trabnlho satisrJtorio, sem obter grandes exitos. A estas pessoas eu agrnde~o de forma l11uitoespecial, po is estiveram presentes do inicio ao fim desta monografia. Ha muitas QulraS, porem que participaram de forma indirela, merect!doras de igual reconhecimento, agrade~o a todas elas. RESUMO A intcligencia 311ificial inteligencia mccanicista e umn. abordagcm el11 informatica que procura associar a das maquinas il intelig~ncia humana e a lAD. Inserida no contexto de Inteligcncia artificial tem por objeto de cstudos a dislribui4Yao de infonna~oes no sistema com vistas a resolu~f1o de problemas. seja por meia da resolw;uo distribuida de problemas au na abordagem de sistema Illulti-agente. Urn sistema l11ulti-agentes e composto de agentes que coopcram e,ntre si para a resolu~ao de lim problema complcxo que estit alt~m das suns cnpacidades individuais. 0 KQML, agregado :10 ccnceito de sistemas mu!ti-agentes, dispoe de rccursos favonlveis 0.0 e desenvolvimento de lim sistema de controladorcs de VQO, raz50 pela qual se considerado uma linguagcm universal que possibilitn a cad::t agcntc interpretar mensagens de forma ide.ntica, evitando possivcis quebras de cOlTIunicac;J.o entre os A Iinguagem lItilizada para 0 possibilila a mobilidade e a de construyao de agentes, provendo podcrosos reclirsos ao aperfcic;oJmcnto do sistema, j;i que e crientada a objelos. AI6n disso, 0 JAVATM nilo depende de sistema operacional especffico. Assim agregados, estes instrumentos na abordagem de Sistemas Mliiti-Agentes. contribuem para 0 funcionamento hannonioso de um sistema de control adores de v60. con forme pode scr agentes durante dcsenvolvimcnto intcgrac;ao 0 do facilitada comprovado Palavrus-chavc: A1oniplilafiol1 [mOVeS proccsso de prot6tipo com e compartilhamcnto. JAVA TP.t, pOrqllC ambientes do prot6tipo. Sistemas Multi-Agentes; KQML - knowledge QUeJyand Language; Linguagcm de Implemcnt3c;30, Java. SUMARIO 1 INTRODUCAO I.IOBJETIVO 2 REFERENCIAL 2.1 . .... .. 10 . 12 TE6ruco ... . ... 13 INTELIGENCIA ARTIFICIAL E fNTELlGr,;NCIA ARTIFICfAL DISTRIBUiDA 13 2.2 DIVISAO DE SOLUCCES EM lAD: PRlNCIPA.lS DlFERENCAS ENTRE RDP E S~IA 17 . .2.1 ResolLH;aoDistribuidn de Problemas (RDP) ... 2.2.2 Sistem:as Multi-Agentes 17 ................................................ S!\'fA) _._.3 Diferenlj:us entre S1\/fAe RDP 22 29 COMPORTA~!ENTO AUTCNOMO DO, AGENTES EM SISTEMAS MULTIAGENTES.... . 2.4 0 2..1..1 Agcnte.s Reutivos e AgentC's Cogl1itivos .. . 39 . 39 2A.I.1 Age-ntesReativos .. 2.-1-.1.2Agentes Cog)litivos ... 2.5 3c . 30 COOPER-A, Ao E COMPARTILHAMENTO ENTRE 0, AGENTES 'OGNITIVOS .............................•.........•................................................ H!S~IA ..... -17 2.6 COMUNICA<;'Ao ENTRE OS AGENTES EM SMA 50 2.6.1 KIF: Lingungem de Represent \-50 51 . 2.6.2 Ontologia .. 2.6.3 A L: Agent Communication Lnngunge..... 2.7LINGUAGE~1 DE C MUNI At;AO-KQML 2,7.1 As Cnmnd., do KQML .. 2.7.1.1 2.7.1.2 53 . 58 . ... 59 . 64 .:un:lda de Contclld 6-\. Cnm"dnde r"knsage.m.. .. 2.7.1.3 Call1rl.dt1de C nll.lllicn~·i\o.. 66 67 . 2.7.2 Atos C'{lJlHmicnti\'os.. 2.7.3 PerfornHltiv:ts do KQt>.'lL.. ... 68 . 69 2.7.3.1 Performrttivns de Infornla~u 2.7.3.2 Perfornmtiyns de Consultn.. 70 . 70 2.7.3.3 Resposttl.5.. _.7.3.4 Perfonllilt!vl1S ....70 de Bnse de Dudos .. .. 71 2.7.3.5 Defini~:io de Cnpacid~lde ... . ..71 2.7.3.6 Perfornunivas. de Efetm\9uo ...71 2.7.3.7 Perfonnntivns de Facilitt\(;:ao.. 2.7.3.8 Perfonnativa!lide Discurso . 72 72 2.7.3.9 Perfonn<ltivn!lide Intervcn<;:iioMecunica e de Conversa<;:~o 2.7.3.10 74 Pcrfonnativas de Rede DO RADAR 75 2.80 EMPREGO 2.8.1 Sistelna Receptor da Acron<lve 3 PROCEDIMENTOS 3.1 LINGUAGEM NOS SERVI<;:OS DE TRAFEGO AEREO 78 METODOLOGICOS E PLATAFORMA.. 79 .. 79 3.2 SELE<;:AO DA APLICA<;:Ao 3.3 DESCRI<;:Ao DA APLICA<;:Ao 3.4 ARQUITETURA 82 . 84 DO SISTEMA 3.4.1 De5cri9ilo dos Agente.s.. .. 3.4.2 Antologia Utilizada 77 85 . 85 89 3.4.2.1 Perfonnativas Utilizndas nos Agcntcs: Torre de Contrale e Facilitador 3.4.2.2 Performativns Utiliz.,d<ls nos Agentes: Fncilitndor e Torre de Controle 91 3.4.2.3 Perfonnativas Utilizadas nos Agcnte: Torre de Controle e Annlisador.. ..91 3.4.2.4 Perfonnativas Uti Iizndas nos Agentes: Analisador e Torre de Controle 92 ~ CONCLUSAO.. . 90 93 REFERENCIAS 96 APENDICE 99 LISTA DE SIGLAS lAD Inteligcncia Artificial Distribuida ACC Centro de Controle de Area ACL Agent Communication Lnnguage ATP Agent Transfer Protocol (APP) 6rgao de Controle de Aproxill1n~no KIF KSE Knowledge Interchange Effort Knowledge Sharing Effort KQML knowledge JKQML SMA Java knowledge QuelY and Manipulation Language Sistema Multi-Agente (TWR) RDP Torre de Controle Aer6dromo Resollll;ao Distribuida de Problemas Query and Manipulation Langu~gc LISTA DE FIGURAS FIGURA I CA TEGORlAS DE AGENTES lNTELlGENTES ... FIGURA 2 RAMIFICAc;:OES DA lAD 16 FIGURA 3 ABORDAGEM RDP 21 FIGURA 4 ABORDAGEM SMA FIGURA 5 CARACTERiSTICAS 14 . 29 DOS AGENTES E ATRlBUTOS NECESsA NA lNTEGRAC;:AO AGENTE-AMBIENTE . FIGURA 6 AREAS DO CONHECIMENTO ENVOLVIDAS FIGURA 7 ARQUITETURA DE AGENTES REATIVOS............ FIGURA 8 MODELOS SISTEMAS MULTI-AGENTES MENTAIS 9 FIGURA 10 QUE DE CONSTITUEM 38 40 OS AGENTES . 43 ARQUITETURA DE UM AGENTE COGNlTlVO 45 MODELO DE lNTEROPERAC;:AO EM SOFTWARES AGENTES FUNC;:AO DO AGENTE FACIUTADOR FIGURA 12 CAMADAS EM QUE SAO DlVIDIDAS AS MENSAGENS FIGURA 13 ARQUITETURA DO SISTEMA DE CONTROLADORES v60... BASEADOS . FIGURA II FIGURA 14 37 NA CONSTITUI<;AO . COGNlTlVOS FIGU~ RlOS . 50 . . DlAGRAMA DE lNTERAC;:AO ENTRE OS AGENTES .... EM KQML 62 67 DE 88 90 10 INTRODU<;AO A Inleligencia ArLindai Distribuida (lAD) vem reccbendo especial atenc;:fio dos pesquisadores nos iIllimos para 0 cresccnte interesse anos. Confonne Jennings et a/. (1998) algumas nlzOes em SMA (Sistema Multi-AgenLe) recaem sabre capacidade de prom over rohustez e eficienciu, e rcsoluc;:ao de problemas rcfcrentcs a a distribui~ao SlI<l sua capacidade de promover a de experiencins Oll cant roles (I-IARMON & KING, 1998). Desta sorte, dcscrcver, adequando linguagem comportamento coerente e decompor c aloear tarefns, viabilizar a imcrac;:ao, comunicac;:ilo. cGardenar, dos agentes. amenizar ccntralar conflito e promovc.r e incerteza. 0 adequnr Iinguagens c ambientes de programac;:ao. S,,10atividades que representam problemas pnm a lAD, e par", as quais t2m buscado solu~Cies. Agcntes aut6nolllos e sistemas multi-agentes representn.ITIum novo cmninho de an{liise, descnvolvcndo a implementa<rao de complexos sistemas de programas. Os agentes oferecem um podcroso rcpert6rio de ferramentas e tccnicas potencial mente prepJradas para aperfei90ar a forma de implemcnta9ao de muitos progrmnas. Con forme Singh (1998), 0 problema principal observado na implcmentac;J.o de um sistema bascado em agentes recai sobre a dificuldade em realizar cOlllunicac;i)es efetivas, principalmcnte dificuitam 0 em associa90es em rci3cionamcntos negativos, ou seja, que plano dos agcntes, au positivo, isto problcITI<1s que possam advir. e, que beneficiJm a resolw;Jo dos II Nas situa\=oes retromcncionadns, as infonnayoes sc dispersam a cvasao da mcnsagcm por todo 0 dinculdades cOll'lunic;]tivas entre agentes. Para sanar 0 problema lim c inevitavcl, c6digo de programas, porque e ocasionam ha a ncccssidade de protocolo de intern,ito (SINGH, 1998). Neste senti do, 0 KQML (knowledge Query and A.falliplilatioll Language) descmpenhn um importante papel, principalmente por gerar compatibilidade nrt troea de mensagens, 0 que pcnnite a integra~,ao eficaz dos agcntes. Assim, a linguagcm de comunicfltyao KQML passa a ser responsiivei pela objctividade e c1nrezn do proce.ssa comunicativo, pcnnilindo modelar a inlCrayllOem Sistema Mulli-Agenlcs. A op,ilo por usar a abordagem de SMA neste lrnbalho lem finalidade de dcmonslrar em que medida a aniculat;ao de um Sistema Multi-Agcnte com a linguagem de cOI11unicat;aoKQML pode contribuir para a eficacia de control adores de v60, Ihto que o e demonstrado na pratica. atmYes do prot6tipo. me.canismo para que ocorra 0 ato comunicutivo e a Iinguagcm de cOl11unicat;aoentre agentes. Teoricamenle a linguagem de cOlTIunicac;aodos agentes devc permitir que a interac;ao se concretize mcsmo entre agentes heterog~neos. A ulilizn~ao do KQ!vfL neccssarimnente prcssupl3e a aceit8c;:ao de suns lill1itac;:~es,qunisquer que sejam, principaimente no que se rcfere a padronizac;:ao dos dialclOs dos agenles. desej£\vel pura assegurar que a Iinguagem de imcrac;ao concorde com lim protocolo em especial. Interessante ressaltnr que as problemas com a intcrac;ao entre agentes estilo longe de ser resolyidos, mas atrnYes de experiencias e pesquisas. muitos 12 questionamcntos referentes a estc assunto estao em vias de esclarccimento, COnfOtlllC alirma SINGH (1998). o modele cognitivQ e utiliudo em oposi9ao ao modelo reativo, pais interopera alravcs dos agelltes independentes utilizados pelo sistema, a saber: Agente Emissor, Agcnte Receptor, Agcnte Facititador e Agente Analisador. Estes agentes slio 3ut6nomos, capazes cunhecimento, de raciocinar pais dest!'ll1penham e agregar novas conhecimentos {l base de suas turefns com base no comparlilhamCJ1lO de cxperii:l1cias, Oll seja, cstfio aptos a C0I111lllicarcIIl-se uns com os Qutros, decidir que informJ90CS recupernr ou que 390es fisicas tomar. Par isso resolvem problemas complexos c desempenham tarefas especiflcas (SINGH, 1998). 1.1 OBJETIVO o objetivo deste trabalho dos inter-relacionamcntos e fornecer limn visao de conjunto, sucinta e objetiva, entre os elementos de organiz39ao de SiStC111tlS multi- ;lgcntes. atraves dos resu1t;ldos de implemcntn<rao de um sistema de controladores de voo de cartner prototipico. 2 REFERENCIAL TEORICO 2.1 INTELIGENCIA ARTIFICIAL E INTELIGENCIA ARTIFICIAL OISTRIBUioA Enl~sc da inteligcncia fundamcnta-se no comportamento humano individual, enfocando. de rOrIn3 muito especifica, a reprcsentaC;ilo de seu conhecimento e metodos de infer0nc.ia utilizados no processo normal de raciocfnio. A abordagcm passoll a ser aplicada com maior intensidade nos allOS 80, quando a cOlTIunidadc de lA, deslllolivada por slIccssivQS insucessos aD longo de 30 anos. tomou a iniciativa de explorar novas areas em que sistemas de lA pudesscm ter tim dominic mais dinamico. Desde entao, a Inteiigt!ncia Artificial (IA) passol! a represcntar nao apenas resultados simb6licos em mundos artificiais, mas intcra~oes complexas e cfetivas com o !nunda fisico. lan~nndo mao do conceito Concomitantemente de ogcntei. a esla cyolu~ao, constituia-se a com un idade de agentes de softwilre. cuja finalidade era explornf e mais con fiaveis, para que 0 0 descnvolvimento de partes de c6digo menores Illovimento entre dais 3mbientes distintos din:lmico. A partir de enti\o, Coi criada uma terminoiogia fosse bastantc especifica e sugcstiva, sugcrindo que a IA ganharia espj]~o e rcconhecimellto devidos nos anas subseqUentcs. Termos como agentes inteligcntes, inter races inteligentcs, adaptntivns, kl1owbol.J, softbots, lIurbots, faskbots, personal interfaces agenlf!$ c network 14 agt!11tes, passaral11 a ser utilizados com relativa. rreqi.iencia nas (Ireas !las comunidades de IA e softwares. Os agentes inteligentes que integrom a IA poderiam ser esqucmatizados e categorizados confom1c a seguir: FIGURA I - CATEGORIAS DE AGENTES INTEUGENTES - 2000 Fonte: SOBRAL, J0:10 8.M. Agi'11/~.J: Conceilos e Principios. Disponive\ em wW\lr'.inr.uf1C.br-bo5cololdy~£eJdownlo;\dslAgcntes A inteligf'ncin artificial subdivisfto da informatica, CIA) e, confonnc se obs~rva pelo esquema, que busea descnvolver sistemas de computador lima bascado em processos simiiares aos do raciocinio humano. H;i cerea de 15 anos, corporac;oes deduziram que pela aplicac;uo de IA na area comercial poderiam obler bCllcficios inestimaveis, de forma que 0 recllrs~ passol! a scr amplamente utilizndo e investigndo. 15 as custos desempenho tarcffls sc processava de as resultados para este tipo de aplicayao esperados. supl"ntados Tais nos computadores Confom1e artificial opera fac.uldades Charniack com mcntais base se no comportamcnto social, enlm dernasindamente sistemas 1998). & Mcdermott e Winston rt pcrcep<;:ao, e uma ::l conjuga<;:Ha, disponive,is em um sistema lAD ser pode (Sistelllas dividida Illulti-agentcs), sabre as coopcrnsoes, desta em forma, de distribui<;:Jo inteligentes Na em Resolu9~o ([ante: das como subareas a intelig2ncia de estudos a respcito dos quais da lAD, pois eslruturas Distribllida e r"ludo proporcionaJmcnte das alrnves de mais C 0 OUXQde conhecimento cresce sabre as de basear- informa<;:ocs nos sistemas e <l coordcna.;ao ils demais (Resolu9lio intern.;Oes serem a ra~10 e As atitudcs. RDP n "Inteligencia" (1992) c no conjullto decomposi.;iio distribuido allos, e 0 para ramificn<;:ao da lA, com a especificidade no proccsso <l (1985) na 16gica multi-agentes (SMAs) que se consliluem coopera<;:oes, complexos do epoco (HARMON, rclacionadas muito Ulna fanna muito lent a, alem de nao produzir de nn razilo, por sua vez, A lAD, entanlo, scmprc cram, no Problemas) adiante. entre dos infonna90es agentes. A e SMAs Sua enrase unidadcs ao n(l[l1ero valoriza as recai distintas, de "cntidades" http://www.infufsc.br). figura 2, e representada Distribuida a subdivis50 de Problemas da lnreiigencia c em SistemJs Artificial Nlulti-Agentcs. Distribuida e 16 FIGURA 2 - RAMIFICA<;:OES DA lAD - 2000 RESOLUC;AO DISTRIBUiDA DE PROBLEMA Paralell AI Fonte: SOBRAL, Jofto B.M. Agcntes: Conccitos e Principio~. DisponiveJ em www.inf.ufsc.br. ConfOTme 2000. Sabral, Nonnalmente, a lAD disp~e dus seguintes apJicac;oes: IBM Ag/e/s SDK, Mitsubishi's oncordia e General Magic and Te/escript NALAMAS: Natllral Langllage MIlIIi-Agent Systems Opcrac;ao descentralizada de sistemas hidrotem1icos em i;\mbicnte de mcrcado Modelagem de STI Multi-agente SimuhH;ao intcligcnte de mercados eletronicos Sistema de agentes disponibilizadores de servis;os de viagcns Sistema multi-agente pam marcac;~o automfttica de reunioes. 17 2.2 DIVISAo DE SOLU<;:OES EM lAD: PRINCIPAlS D1FEREN<;:AS ENTRE ROP E SMA 2.2.1 Resolu,ao Distribuida de Problemas CROP) RDI' (Resolu,ao Distribuida de ~roblemas) e SMAs (Sistemas multi-agentes) sao agendas de pesquisa complemenlares. Na verdade. RDP recebc ted a sua base de Slv1A.do qual e uma especic Confonne de subconjunto (www.comp.ufla.br/-llndersun/iu) brevemente mencionado Distribuida de Problemas (RDP) resoluyoes de problemas e nas Iinhas preccdentcs, a Resolw;ao uma ramificacaQ da lAD que se ocupa de especificos. 0 sistema RDP dcterminados de m6dulos Oll agentes que cOl11partilham 0 divide~se em numeros conhecimento dado problema, e consensualizam uma soluyilo efetiva para 0 meSIllO. sabre um Cada agenle aprescntu lima possibilidadc de resolw;ao de problema, ou seja, cada um contribuir6 a suas habilidades individuais (BOND, 1988). Em outras pn.lavras, no sistema RDP de agenles desenvolvidos especificamentt! 0 problema para aprescntando um comportamento decorrente de ullla e resolvido a rcsolu~ao par um conjunto desse problema, organiza9~0 pre-definida ja na rJse de dcsenvolvimcnto do sistema. Os agenlcs saO projctados especiticamcnte para resolver um problema au uma classe de problemas, e com esta finalidade coopcram uns com os olllros, dividindo e compartilhando conhecimento sabre 0 problema a tim de chegar 6tica, tllll a Ull1 consenso :.1cercada solw;ao mais viavcl. Analisnndo sob sistema RDP e considerado uma unidadc, pais lima pelo sistema, c as rccursos a serem aplicados nac t2m outras (mica tarefa fUI1yoes uma e outra prevista predeterminadas 18 e desejavel, para executor (SMITH & DAVIS, 1980). Isso signitica que a coopera,ao a relacionando·sc forma peln qual sistemas perfeitmnente prontos, numa ncomoda9ao reciproca, aluam durante a renliz..1c;Jo cfetiva do grupo em lennos de rcaiizr19iia de tarefns. A interac;ao entre csscs agcntes pode ocorrer de forma direta ou indireta: diretn quando baseada em trocas de mensagens; C0l111Ku1ilhnmento de dados comuns e entre os agentes indireta quando cnvolvidos. e ocorre por Para resoluyao do problema os agenles podem subdividi-Ios em subproblcmas. ou utilizar diferentes estrategias 0 sistema no senlido de realizar impicmclltado com lim a tare fa. Alem mediante pode seT port3nto, a solu~ao cooperativa de cmparelhamento de agentc ccntralizador ou de fanna distribuida. Rcsolw;:ao Distribuida de Problemas problemas disso, a desccntraliz:l~ao e. e de recursos conhecimento, locnlizndos cm in(IIllcros modulos (SMITH & DAVIS, dcscenlrllliz~H;ao entende-sc que tanto os dados como a contrale 1980). Por 16sica c gcogrJficamentc distribuidos. Segundo Rezendc (2003), isso pcrmite caracterizar sao il RDP (Reso!w;i1o Distribuida de Problemas) como lim cruzamento entre tecnicas de fA c de sistemas distribuidos. envolvcndo. por exemplo, a coordena~t1o e a sincronizm;:ao, resliitantes secund.irios. A de um modele Oll RDP componamento secundario pam intcgrar outros sistemas tambem seja, desenvolvidos com base num modele prim~\rio. preocupa-se COIll 0 desenvolvilnento cooperativo entre entidades prontJs. de eslruturns para c com a Outra preocupa~ao contcLldo da informayil.o a serem camunicndas entre as agentes C 0 usa da infonnayao par um agente para a resoluc;ilo de problemas cooperativos. 19 Em pOlleas palavras, a principal pl-eocuprH;:ao da Rcsolu~ao Distribuida de Problemas rccai sabre forma como um problema particular pode ser resolvido por lim nlnnero de modulos au agentes, os quais cooperam na divisuo de conhecimento respcito do problema c isso acarrcta solw;ocs. NUIl1 a Sistema RDP. tadas as estratt~gias de intemqffo saO incorporadas como partes integrnis do sistema. Is50 rCl11ctc investig"qao elas estrutums de interw;:fio dos os m6dulos que estabelecem cooperar;ao (JENNINGS e/ t\ al., 1998). A forma especffica pela qual a comunicar;no fisica do soluciona.dor de problemas, C lIm se efetlla, tal como a arquilctUnl clemento secunda rio nessa abordagem (SMITH & DAVIS. 1980). Os sistemas RDP oferecem como vantagcns extensibilidade, habilidade em lidar com aplicayoes a velocidade, confiabilidadc, com distribuic;ao natural de esp:tyo, e toier(lIlciu para aceitnr dados e conhecimentos incertos. Como estes sistemas sao altamente- modulares, podem oferecer c1:treza conceitual c simplicidade de projelo (SMITH & DA VIS, 1980). H:i um agente controlador, no qual 0 conhecimento do problema cuja finalidade e a distribuiyiio dos problemas interligados e completo, e em uma rede de cOl11plltador~s,e a subseqUente centraJiza9uo dos resultados parcinis obtidos pe\os demais agentes distribuidos em oulras maquinas: a interpretac;ao dos resultados nilo pre-dcfinida, mas criada no momenta em que surge a necessidade determinada tare fa. Desla forma a interac;ao entre os agcntes intercambio de mensagens (REZENDE, 2003). e de se realizar se restringe ao 20 De acorda com Davis & Smith (1980) um dos maiores problemas nilo- resolvidos em RDP refere-sc it diftculdadc que os agentes encantram em comunicar suas habilidades em um sistema de controle distribuido entre agentes aut6nomos. Quando 0 modules numero de tarefns ou resultados a serem processados exec de disponiveis, compnrlilhados entao disputam os m6dulos com tarefas Oll 0 numero de resultados a serem alcnr;ao e reCllfSOSdo grupe. Confomle Barone 2003), a abordagcm RDP nao permilc c0111unicac;oes !TIuito ofc-rccenda, rcstri<;:oes elaboradas, simbol6gico pr~-definido. 0 para sinais incompativeis que naa pcrmite senaa uma interpretac;ao da quanti dade e lipo de simbolos que SaO conjunto fha, por ocasiiio considerndas muito interessantes para os programadores de inteligcncia artificial (lA), pois e um participam do compartilhamento. Por isso, as aplicac;oes em RDP nilo abordagcm com 0 volume de infonnalYoes nessa quase scmpre processado num local central, atraves de processadorcs remotos que sc iimitam a dados basicos do conjunto, como ocorre, por exemplo, com canOes de croditos (SMITH & DAVIS, \980). Embora esse sistema seju adequado ;:i a distribuic;iio de dados, nao e conveniente distribuic;50 de controies, po is os proccssadores nao cooperam de fonna substancial, porque requercl11re-cursos mais sotisticados. De qunlquer forma, lIa mcdidn em que se cxpande a capacid3de de gcrenciamcnto externo da RDP, os problemas restritivos sao amenizados, !! isso :1mplitica seu espectro de ay.l0 e consequentemente sua aplicabilidade. A aplicac;ao de RDP corrobora para a resoluC;ao de problemas sllpcrficiais, rcquacndo, para tanto, que 0 tipo. de problema scja deJinido com precisao, que as tnrefas dos agentes sejam bem especificadas, e que a divis50 em subproblcmas elll'lri9~\ estes agentes seja estatica e otimizada. Atender a todas essas exig~ncias represenla um dl!safio quando os problemas sao mais complexos, porque a RDP niio dispeie de meios para a interconexuo de proccssadorcs de agentes nem compartilhamento de in[orma~ues sobre recursos, permit indo, em fun~ao disso, que muitos problemas pennane~al11insoillveis. FIGURA 3 - ABORDAGEM RDP - 1998 Fa.l/! tie COlicl'oeil o o o 0 o Fonlc: ROCHA. A. R.; SOUZA Jr. E. M.: ALVES J. C. Disponivcl em: www.(:omp.un ••.br/-undcrsull/i ••. l-hl casos em que 0 conhecimento procedencia da inforl11u~ilo e desejavel, 0 Ag~nt\:$ Agi!lI/l.'s ll1uligi!II/~$ o e SiJlemO$ A1U/liogi!l1lcs. completo do tempo e das rela9ik,s de principalmente quando cllvolve balanceamento para evitar sobrccargas no sistema. A resolw;:ao distribuida de problemas nao permite 22 mnis do que resoluc;oes basicas no processo de divisao de problemas (DAVIS & SMITH, 1980). 2.2.2 Sistemas Multi-Agentes (SMA) Em Sistemas multi-agcntcs. ao contraria, os agentes sao desenvolvidos para resolver uma variednde de problemas. SMAs de interayao nonnalmentc podem ser utiliz.1dos em outras aplic890es similtl.fcs aquelas para as quais forum original mente desenvolvidas. Ao contni.rio do que acontccc com que contrale o 0 0 RDP, naa cxiste lim agente central sistema. SMA e uma apJicac;i'io distribuida formada pOl' um conjunto de agentes autonomos, inteligentcs e capazes de comunicar-sc de forma heterogenca. coopcrnndo e interagindo para juntos c dinamicamente resolver problemas complex~s, que ultrapasscm as capacidades individuais. Desta forma, os agentes em SNlA nao silo desenvolvid05 ou destinados para resolver problemas espedficos ou muilo simples, porque dada ,\ complexidade de construir um sistem11 multi-age-nte, utiliza-lo para a resolu<;ilo de problemas banais serin desperdicio de tempo c, porque nao dizer. de recursos financeiros. Os agentes SMAs co-existcm independente dn ocorrencia ou nao do problema, dcscnvolvcndo intera90es colabomtivas com relativa freqUGncia. Procuram atingir lima meta coll.!li\"aOLi individual, e sell carnter !lexivel permit!! a inscr9ilo ou r~du9ao de agentes can forme a necessidnde ou complexidade do problema. as agentes silo 23 capazes de manter uma reln~~o mutua de intera'rilo infonmmdo-se uns aDs Qutros sobre a capacidade e disponihilidade dos demais (SI-I1MAN el at., 1981). MudaOf;3s significativ3S nn area de inte1igl?ncia artificial inspirndas em metaforas sociais e investimcntos no cmnpo da computn~ilo distribuida, dernm inicio a um conceilo tnJis sofisticado na constrwyao de sistemas inteligcntes - Sistemas Multi- agentes (SMAs). A realizu<;J.o de turefns em urn SMA buseD a coordcnac;ao entre lim conjullto de sistemas autonomos, possivelmentc como elcs podel1l coordenar sells conhecimentos, pre~existenles, analisando 3 forma metns, hnbilidades c pianos de forma a realizar lima a~ao all resolver um problema (BARONE, 2003). e0 Em SMA a principal prcocupac;ao autflnomos pre·e.xistentes, comportamcnto do conjulllo de agentes que alrnejam a soluC;llo de urn dndo problema. De acordo com Jennings <I at. (1998), um SMA pode ser definido como uma rede unida de forma imprecisa. cujos agentes trabalham juntos no intuito de prom over a resoluc;ao dos problemas, uma vez que lima soluC;ilo individual conhecimentos. est:) acima de suns capacidades e Os :1gentes suo nUI6nomos e podem ser tnmbem heterogeneos. Um Sistema Multi·Agente (SMA) utiliza protocolos de alto nlvel que atuam de forma inteligente. ou seja, por meio de coopcracrno. Portanto, a carllcteriSlica mais evidcnte nes{a nbordagem seria a interaC;lio e 0 compartilhamcllto de au·ibutos e conhecimento dos agentes (SINGH, 1998). E vivos. possivel Quando associar a estmtegia um problema de a~ao do SMA a sociabilizn~ao dos seres nao pode ser resolvido coletivid:tde entra em jogo numa ~W::Io colaborativa por lim unico clemento, que pode gerar hierarquias. 24 Assim, 0 SMA baseb-sc no conceito de c01l1unidade de ngentes inteligentes, inspirndos no sistema de compol1amento social, baseado na organizn<;ao e intern9aO pura resolw;ao dos problemas como umlodo (REZENDE, 2003). A no,:l.o de compartilhamcnto do qual 0 KQML C facilitar a acrao C 0 lim representanle. rcquer 0 nnteparo de um prolocolo de intera9lio. ESle protocoio e amplamente ulilizado para rnciocinio tipico dos agentes em SMAs. A seguir sao mencionadas algumas nplicac;Oes SMAs (BARONE, 2003): lVlonito •.a~ao distribuidn geograficamente passam por de \'ciculo: Consiste num conjunto de agentes, distribufdos, cuja tinalidade suas respectiv8S areas de c manilorar veiculos que cobertura, mstreando a movimenlaC;ilo de veiculos (DURFEE, 1991); SiStCI1Hlde Gel"cncia de Cnrtcirn Finnnceira: Refere-se Ii localiza9ao e filtrilgem de informa90es da internet, para preslar apoio a um usutirio com relnyao ao gerencinmento de sua carteira. Neste tipo de sistema, os ngentcs se 3uto-organizam de forma cooperaliva para rastrear e monilorar noticias referentes no mercado financeiro, a90es, relnt6rios de flnalistas finnncciros e relat6rios cle ganhos de empresas. para manter scmpre alualizada a conjuntura Illundial das finfill98s ao proprietario do. carte ira. Sistema de m:mufatul'a: Nesse sistema, uma cmprcsa C modelada como uma hicrarquia de celulas de trabalho funcionalmeme especificas. Essas cclulas siio agrupadas em sistemas flexiveis de manufatura que 25 colctivmnentc constitucm uma fabric;]. 0 objctivo do sistcmn C, entao, gerenciar eficientemente c:1(I<1 ftibrica possuem 0 processo de produ~,ao das fabricas. Pam isso, c sellS componentcs siio modcludos como lima cole~J.o de pInnos rcpresentando age-nIcs que suus compet€:ncias (pARUNAK,1987); Internet: e um exemplo de up\icuyao da Internet 0 NewT, que e uma especie de filtro de noticins para a USENET. Nessa aplicu~ao. treina-se lim agente NewT, forneccndo a cle uma seric de exemp!os, como artigos ilustrativos que 0 usuitrio escolheria ou nao para ler. 0 ilgente oferece sugcstOes para 0 1I5uario, que por slia vez ofcrece 1II11feedback u essas sugest~es, A pretensilo do agente NewT nao escolha humana, pOL'que constitui na desejos, Oll seja, 0 objetivo do agente sejam de seu interesse e refcrente impossibilitur a vtordadl! umn extensao de seus e trazcr (WOOLDRIGE para 0 usmirio artigos que & JENNINGS, 1985, JENNINGS, 1995); Hn Telccomunicn~oes: telccomunic89oes, utna Infinidade de aplica,~es de St'v1A em uma dns quais utitiza agcntes negociadores para ellfh~ntar lim problema l11uitoCOI11um que C a distin9do de objetivos dos agcntcs no proccsso de intera9ao, porque os agentes sao entidades difere-ntes entre si in1ercssadas em estabclecer uma cham ada, par cxcmplo. AD dctectarem-se conflilos, os agentes negociam entre si, para que possam originar lima configum9cro aceitflVel, para que 3 cham ada 26 possa se processar harmonicamCllle (WEIHMA YER & VELTHUIJSEN, 1994); Controlc de processos: impicmenta9fio exemplo, 0 t1celerador de contra Ie de processos, falhl1s em usinas is foram sistemas construidos & QUAN, Um exemp!o colocada diminuida 0 de aplicac;ao para monitomr e diagnosticar cspaciais e contrale de & WANG, de S"t\1A nn industria C 0 CIDIM. 1994; de encrgio. e distribuic;ao Ele lTIonitorn d(! energia e elctrica industrinis e domesticos. Para minimizar as perdas uma rcde de lrnnsporte. Posterionnente, e a elctricidade e enviada c aos consllmidores do sistema de rch!s e breakers, sistema de nlannes nile cronol6gicos de ser a vohagem e usando ullla compos to peJos seguintes idenlificador dn area de blackout. interrace supervisor no WANG gerellcintnento de distribui<;ilo. Este sistema cxistentc. por fundamenrndos transporte de energia aumenta-se a vo\tagcm antes em para como, 1993); controla 0 cicIo de gCffH;ao, transporte para consumidores plataforma aplica~oes simiJares, & VELTHUIJSEN, 0 rCJOpons{lvel peto durante divcrsas Ilucleares, contrale de veiculos 1997; SCl-lWUTTKE que em de trans porte de energia e 0 contrale de Outros clima (WEIHMAYER Indllstria: utiliz.:1da gerenciamento de particulas. numa FUlldamenta-se SMA espccialista 1985); agentes: de controle pre,- cxislentes, agenlc de restaurur;ao e agentc de interrace do usuario (JENNINGS, redc para analise de servic;o Controlc de tn'ifrgo aerco: neste caso e interess.mte acronaves c os diversos mecanismos de contrale de tni.fego aereo em opera~;1o. Quando lima aeronave enlra no espafYoacreo control ado pelo sistema: cria-se correspondem {l um agente com nereo sao respons~iveis par gerenciar encOlllrar 0 e objelivos que. neronavc do mundo real. Agenlcs de contrale de Idfego Comercio eletronico: BargaillFil1der. infonna90es 0 sistema (SYCARA et ai, 1996); Como apiic3'rno de comercio eletrollieo, tem-se 0 um agente que compara lojas virtuais na Internet para melhor pre~a para urn determinado CD. Neste sistema, 0 usuario infanna ao agcnte os dados referentes no CD que gostaria de comprnr. Bnseado nestns infonna~l5cs, 0 agente realiza uma busca nas lojas virtuais existcntes. comparando 0 prec;o para obler 0 CD mnis baralo (NISSEN, 1996). Confarlne observado, os bencficios do SMA. CSlaO rclacionados a sua capacidade de eseolher a maneira peln qual dcseja ou deve realizar suas tarefas. ESla forma de opcrar nao e escolhida aleatoriamente, mas com base nas nccessidades oferecidas pelos problemas que se apresenlam. A utiliza~ao de SMA. porem, apesar de ampla apHcabilidade, ofcrecc cert3s desvantagens, alguns problemas de diticil resoluc;ao que podern ser assim relacionados (JENNINGS el al .• 1998): 28 Como formular, descrevcr, decompor e aloc~r problenKls de silltese de resultados entre os grupos de agentes inteligentcs? Como habilitnr as agentes para que possam se comunicar e inleragir Iw.nnoniosamente? Que lingua gem de comunica~ilo e protoco!o usaf? Como assegurrtr a atua~ao dos agentes de forma coerentc, na medida em que tam am decisocs ou realizum ayoes. a fim de acol11odnr as cfcitos nao-:unbientais do local de decisocs e evitar intera<;5es prejudiciais? Como habilitar agentes inteligentes de forma que possam agir e pcnsar sabre as U9~CS, fazer pianos e aprimorar conhecimentos sabre Quiros ngcntes, no intuito de que seja prolllovida lima cOllluI1ic3yUO mlltua? Como reconhccer e conciliar pontos de vistas antagonicos e inten9t'5es conflitantes em um conjunto de agentes que tenta coordenar slIns altoes? Como equilibrar e[ctiv3mente 0 local de computa9ao e comunica9uo? Como gerenciar a aioca9ao de recursos iimitados? Como evitar comporlamcntos pl'eciominantcmcntc nocivos no sistemil, au seja, caos e oscilayoes e inconst;'incias no sistema? Como construir platafonnas c manipular sistemas multi-agentes? de tecnologia sistemas mulli-ngentes? e metodologias de! Como projetar dcsenvolvimento para 29 FIGURA 4 - ABORDAGEM SMA - 1998 F(ls<' de CoJ/(·('1)~·ao Prl\j~t(\ "las i»ft)jclft (las Or~ani~.,~""s Inl~ra\"x'S t o o 0 ..\~~nt\!s o Fonte: ROCHA. A. R.; SOUZA Jr. E. M.; ALVES J. C. Agmtcs Disponivc\ ern: W\vw.comp.uf1a.br/-undcrsun/i". 2.2.3 Diferen9as Jl1lcligc"fcs e Sis/clll(u Mu/riagi!1lfe.s. entre SMA E RDP Apcsar das diferen'18S entre SMA e RDP, dais sistemas complementares, e dificil discernir sc lima implemel1ta~uo foi descnvolvida confonllc os padroes de lim ou Lieoutre sistema. Conformc Shiman et al. (1981) a maior diCeren,a entre SMA e RDP recui sabre a n09ttO de autonomla, jj, que em RDI:>as agentes sao desenvolvidos para 30 resolver problemas e.specfficos e simpiific<1dos, 0 que nao Illes pe.r111ite resolver situa~l)es diferentes daquclas pam as quais [Dram programados. o RDP e um sistema fechado c inllexivcl. ou seja, nilo nceita a adi<;ao de novos agentes. 0 srvlA, no entanta, n;1o apenas admite a inser9uo de novos agentes, como resolve problemas diferenciados devido <'t sua capacidade de trocar inforl11~H;OeS com mUros agentes. A RDP conseqiientcmcnte, funciona com base em conhecimcntos prcdeterminados. s6 opera com sucesso quando se nprescntarem js cirCuIlSli:incias- problcm{lricas para as quais est:}prcparndo, pcrdendo com isso sua fll;!xibilidade. No sistema l11ulti-agente infofmayoes Distribuida os agentes n;1o t~m especificidades. Compartilham c par isso suprem nivcis mais altos de abslrac;ilo que a Resolw;:ao de Problemas. ESlas abstm90es cstuo relacionadas 11S usuario e pennitem atribuir maior flcxibilidade no comportamento exemplo, em vez de realizar lllll comportamcnto especifico, 0 expectalivas do do agt!nte. Par sistema multi-agente pennite que as agcntes negociem lIns com os outros, para determinar 0 melhor eonjunto de a,Oes para eada situa,"o (SINGH, 1998). o SMA difere da RDP, aindu, por que sellS agentes Silo inteligentes, e atuum com base na n09ao de sociedadc. Na RDP, 0 problema e subdividido. No SMA as agentcs em conjunto busc3m solu~ao para 0 problema scm fmgmcnt{I-lo (BARONE, 2003). 31 QUADRO o 1 - DlFEREN<;:AS ENTRE RDP E SMA quadro que segue apresenta as principais caractcristicas que difcrem 0 RDP e SMA. CARACTERiSTICAS DA ROP Os age,ntcs sao cooperativos~ Nno lIsum, necessariamente, a mesma eslratcgia para resoiuyao de problemas. Seu comportamcnto e padronizndo para limitar sua a~ao a lima atividadc especifica. Essa organizacao e, nn maioria dos casas, dcfinida durante a concepr;3o do sistema. CARACTERiSTICAS DO SMA Nao hft padroniza.;ao quanta ao conhecimento dos agentes. Elcs sao capnzes de raciocinar sabre a9ues C 0 proccsso de coordenu~;1o em si. Sao capazes lambe,1n de rcconhecer modificn~Oes no ambiente c agir con forme estes estimulos. Cada age-nte tern informacoes incompletas Oll capncidade incompiela para resolver os problemas. e por esta razao possuem pontos de vista Iimilados; auxiliam-se mutuamcntc, sendo capazcs de decompor as turefns. Ha uma noc;ao de controle global no Os dados sJo dcscentralizados. Nilo h:i sistema que, no entanlo nao c tilo efetiya; sistema global de controle. A computac;ao o RDP II;}O gafJnte ao sistema um c ass incrona. controle global coerente. Sell sistema de controies pode seL' centralizndo ou dislribuido de acordo com sua finalidade. o problema e resolvido por um conjunto de agenLes, fisicamente distribuidos em diversas maquinas concctadas via rede. Esses agentes silo prtviamentc SMAs nao resolvem problemas desenvolvidos, de [onna a solucionar um espccificos, mas sao desenvolvid05 IKlra delenninado problema, au seja, <1prescntamgrande especificidade. um dominio especHico. Coordenmn 0 comportamento inteligente de um conjunto de agentes autonomos, mais "a.ntigos" do que a problema em particular. POS5uem concepc;;}o [cchada de mundo, pais suas arquiteturo.s silo intlexiveis, au seja, nolo permiLc a adh;ao de novos agentes. Arquiteluras mais flexivcis; organizac;fio do siskmu sujcita a l11udanc;as(adapla<;ao flS vari:lc;oes no ambiente e/ou no problema), permitindo inclusive a inser9ao de novos agentes. Os agentes podem enlrar e sair do mnbiente a qualquer mom ento. 32 A intera~;1o entre agentes ocorre atrnves de interc[unbio au por compartilhamento de dados comuns. Esse padrao e definido durante a concep9!'io do sistema. sendo illlim8mente ligado ao modelo algoritmico subjacente e aD problC'ma que o sistema deve resolver. A intcra~ao ocorre mediante raciocfnio e negocia~ao: Os agcntcs podem pcdir informa~5es de outros agcntes, obscrvar as atividades de Qutros agcntes, interceptar e mudar os pedidos destinados a outros agentes, cstabelecer comunica~ao com agentcs sob 0 contrale de outros supervisores. A coopcnu;:ao pode existir em nivel de subprobJema, os agentes dividem entre si as diversas partes do problema original, ou podem aplicar diferentes estrategias para a reso!uryuo de uma meSIlla tnrefa; Os agentcs sao cnpnzes de resolver problemas sellS C as outros que possam surgir no ambiente, porque compartilham seu conhecimento e srio capazes de aprcnder com as experi2ncias; Sendo cnpHzes de agregar conhecimento podem aplica-Io para resolver problemas similares com que se de front em futurnmentc. No intuito de aumentar a velocidade de Os agentes sao aut6nomos; Nao hit resolw;ao, as agentes sao exccutados de divisuo em subproblemas, mas forma concorrente; Cada subproblcma c negocia~(jes e auxilio mtlluo. resolvido por UIl1 agente, con forme sua especificidade. Fonte: JENNINGS 1H'lpr6pri., pesquis;\. 2.4 0 CI 01., 1998; www.inf.ufsc.br; COMPORTAMENTO SISTEMAS www.colllp.un:t.br~ AUTONOMO CompJ.r11Yi'io de c.,ractcristic:Js DOS AGENTES EM MULTI-AGENTES De acordo com Russel & Norvig (1995) atuar rucionalmente significa atuar com vistas a lim objeLivo, de acordo com unlil cren9a. Neste contexto. um agente pode ser definido como uma elltidade capaz de agir e pensar, lima entidade que percebe seu ambiente c age sabre estc nmbientc. 33 Um agente intcligente e um clemento ceria", ou seja, fazendo com que 0 capaz de "ruzer n eois:) cerIa, oa hora sistema scja bem succdido. 0 agcnte inteligcnte em SMA busca maximizar seu descmpenho, com base nas evidencins que c.onstam na mcnsagem, no conhecimento que possui sabre 0 <lmbientc, sabre outros agentes c sabre si mcsmo. A <'llltonomiado sistema comportamento que assume c detcnninado e dccorrente desla capacidade analftica e 0 por sua pr6pria expcriencia (RUSSEL & NORV[O, \995). o tenno uutollomia, freqi.ient.emcnte associ ado fl abordagcm SMA, remelc it ideia de que os agentes funcionam de fonna independente uns dos QuIros. Nao cxistem esqucmlls predetcnninados punt rcsolw;ao de problemas, por isso os ngentes se coOrden3l11 em conjuntos au gmpos - comunidades - que, supostamente, analisa111as f0n111lSde coordena~ao do conhecimento disponivel. Num SMA os agentes trabalham de rorma conjuntn, mas Sao autonomos, ou seja, nao dependem de um agente central para coorden~l-los. Esta abordagcm nao visa a solu~ao dt! um lUlico problema, buscando coardenar 0 comporlamcnto inteligt!nte de lim conjunto de ngcnte·s. E importante ressaltnl", que estes agentes autonomos, pod em ou nao dependcr aUlonomia e UllS dos outros confonne a situn~no, 0 que pcrmite afirmar que esta conccrnente, au seja, pautn-se na cumplicidade dos agcntes que se auxiliam l11utunmenlc(BARONE, 2003). Os agenles nao sao, nccessariamente, condicionados no momento em que 0 problema ocone, exceto em casos de SNtA reaOvo. Na realidadc, a existencia dos agentes pode seT precedente ao aparecimento de lim problema. ISla ocorn~ por que os agentes sao cnpnzes de "rrtciocinar" dbnte das situa~5es problem~Iticas, alcl11disso, n 34 reestruturac;ilo do sistema em diferentes agrupnmentos de agentes JlOl'quea arquitetura e f1exivel e permite e scmprc previslvei, essa mobilidade (BARONE. 2003), Interessante expor algumas caracteristicas dos agentes em sistemas multi· agentcs (REZENDE, 2003; \\~\~v.inf,ufsc,br): Autonomi:l de dccisao: Autonomia de decisuo sugere a capilcidade de analisur situac;oes-problema 110 momento em que ebs aparecem, escolhendo para sua resoluc;ilo 0 mclhor procedimcnto. Em alguns casas o agente jtt [em conhecimento do cenario, em outros nao. Autollomin de cxccu~fto: Agcntes lnteligentcs precisam ser autonomos c demonstrarem raciocinio, pam que Iw.ja efic~\cia. A tim de manter est a capacidadc, 0 agente rcquer mecanismos capazes de avaliar 0 estado alual de sell dominic externa, a fim de que possa incorporar isto em. suas "d~cisoes" sabre a~oes futuras. Desta sane, as agenles exam inam 0 "ex ito" obtido em a~~es previas e adaptam suas a~ocs con forme a necessidade para se aUla~aprimornrcm e, assim, numcntar as chances de abler novos ~xitos em sitlla~oes variadas. Alltonomiu e, em poucns palavras, a habilidade que possui um agentc Tntcligente em exerccr controle sabre suas pr6prias a~oes e, principahne.nte, sobre sells estados e comportamentos internos. Compet~ndn p:tr:l dccidir: Rererc~se ,1 independencia dos 3gentes com rela~J:o a outros agentes, humunos ou n30. Autonomia sugere capacidade do agente em perseguir de execLiryao suas mctas. 35 indepcndentemcnte do usu{\rio, au seja, dispensando comandos ambicntais. De interac;ucs ou a capacidade de atu1l9ilo dos f0n1111 sllmaria, agentes sabre um problema manifcstn-sc independcntcmcntc de haver interven<;ao extcrnil. Existencia de umn Hg~lldn propl'ia: Capacidade de desenvolver urna agenda de objelivos, acessivel no momento em que se deseja concretizar lima meta, referellte a soiw;;lo do problema. RCfltividadc: Capacidade de reagir 3S mudan<;as do umbiente a partir do reconhecimento de urn contexto conhecido~ Um agente cleve ser capaz de reagir adequadamcnte con forme a influcncias au a informac;ao do ambientc. Este ambiente pode ser constitufdo por Qutros agentes, como usu;irios human os. fontes cxtCnlUS de informac;u.o au mcsma objctos fisicos. Adaptal>ilidnde: Um agente deve ser cnpaz de ajustar-se as prefen:llcias e <ISnecessidadcs de seus uSUlirios, alcm de adaptar seu processo d(! decisiio frente a situac;oes desconhecidas; Mobilidade: Capncidade do agente em lllover-se e ser executado em outras plntafonnas; de forma mais especifica, signitica capacidade agente em transportar-se numa rcde de rede eictronicrl, interno. scm, contudo, lIllla comprol11cter do mnquina purn outra. peb a estabilidade de seu estado 36 Illterntividndc com 0 Usu{lrio: CapJcidadc de interagir com uSll~)riose, considernndo os possiveis mal-entendidos, falhas de agente vai atuar, iS10 reagir ils comunicac;ao de mancira aceitavcl; Ambiente de Atua~ao: Caracteriza e, em 0 local ande 0 ambientes [,echados (desktop) au abertos (in/em.t); Equivale COlllunicnbilid:u]c: agentcs it cnpacidade compulacionais para a concretizuc;ao de interagir com Olltros de sUas mctas. COl'responde ainda i1 capacidade de trocar inforl1la~oes com oulras entidades, sejam e elas agenlcs, humanos. objetos au ambientc. De forma mais detalhada, importantc expor que as agentes dentro de lim SMA cOITIunicall1-se continumnente, do ambiente cada infofmac;Ocs sabre 0 estado qual averiguando extcrno. atraves dos subsidiarios allial dessa informa9ilo, que podem ser outros agentes. Capacidnde de Raciocinio c npl'endizagem: Urn agentc e capaz de nprender quando disp~ de capacidade para armazcnar conhecimento de forma cumulativa, agregando expericncias passo.das novas expcric::ncias, e conseqUentemente, modificando seu comporlamento face das novas situa.;oes. No entanto, aD nivel UIlla em varia<;ao muito umpia, quanta de inteligcncia dos agentes pode ser observada: agentes simples possuem inteligencia Iimitada; agentes complexos compoem sistemas altamente inteligentes. A inteiigcncia de um agcnte em Irati principais capacidade componcnteso: de ruciocinio 5:UU fundnda e medida baGc de conhecimcnto sabre com base internn, 0 conteLldo do. base 5:U:l de 37 conhecimento e sua habilidade em aprender ou adaptar-se a mudanc;as de seu ambientc (comportamenlo adnptativo, jtl men cion ado). Continuidade Tcmpornl: Os agcntes realizam continuamente process os que podem estar ativos, cmforegrowld, DisCt!rllimelllo: Um considern\=Oes, mas agente cleve nila preyer importantes e/el! infannayt>cs au estagnados, em background. cleve ('rres, instru\f()cs aeeitar omissao de sem infon1l3yiks ambfguas, e no caso, [i.1Zer pcrguntas ao llswirio. Devc ser pennitido a lllll agentc recusar executar cc-rlas tarcfas. FIGURA NECESSAmos CARACTEIUSTICAS DOS AGENTES NA INTEGRACAO AGENTE-AMBIENTE E ATRJBUTOS - 2000 Communication A,utonomy 'Mobility Fonte: SOBRAL, 10.:10B.M. Ag~II(t'5: C operation Conceitos e Principios. Disponivcl em www.inf.uf1c.br. 2000. 38 Confonnc verificado na figura 5, agcntcs inteligcntcs t!?m habilidadcs fundnmenlais 3.comunicac;ao reciproca, as quais precis:lm scr fortalecidas pelo uso de urna ACL (Agtm COllllllullicatioll compalivel (MAYFIELD et al., 1996). Lallguagt) A n0950 de agentes em SMA remele ainda: a coopernlividade objClivos complexos; 3 capacidadc de agir par iniciativa pr6pria; para atingir no" usa de infonna90es e conhecimentos para direcionar 0 local c as rccursos a serel11 utiliwdos. Lingllagens qUI! !'ucilitcm comunicn~ucs tic allo Ilivcl silo, portanlu. componentes essenci:lis de um progrnma inteligeme. FIGURA 6 - AREAS DO CONHECIMENTO ENVOLVIDAS NA CONSTITUIc;:AO DE SISTEMAS MULTI-AGENTES - 2000 Dedsion Theory Artificial inteligence Learning capability Proactivlty Distributed Artificial inteligence Fonte: SOBRAL. Jo~o 8.M. Agelltc'J: COllccilOS e Prillcipiru. Disponivel em www.inf.ufsc.br. 2000. 39 2.4.1 Agentes Reativos e Agentes Cognitivos Num sistema ll1ulti-agcIllc dais tipos <.Ie arquiteturns podem ser implementadas: Arquitetura rcativa ou cognitiva. 2.4. J.1 Agentes Reativos Jennings t!1 al. (1998) afirmam que 0 agente re.ativo uilia de acordo com as condi~oes impostns pelo ambiente e iSla pode dcsempcnhar a~oes que atuam sabre e modificam a ambiente. Agenlcs reativos podem ser comprccndidos como elementos conslituintes de lima arquitetura capaz de realizar uma a~ao de acordo com Dutra ar;ao que a condiciona. Esta rear;;;!.o ceorre obedecendo it reJar;ao de estimulos-resposta (ANGELOTTI,2001). Barone (2003) atinna que as ar;oes de agentes condicionadas no momento em que surge um problema, isla em SMA realivos sao e, problema "X" origina 3r;5.0"X" e nao "Y'~. Ocorre a idcaliza~~o de uma ordem organi:U1cional, lima seqU~ncia 16gica de compartilhamento de conhecimento entre agente "X" e ';Y". Os agentcs reativos possuem um comportamcnto bastanle simples e 550 freqUentcmentc Ilumcrosos em sistemas multi-agentes. 0 cOl1lportamento inteligente do sistema resuha da coexistencia e da cOlllbina~ao de comportamentos agentes reativos ulilizam constantcmente 0 umbicnte para se cOlllunicar: simples. Os 40 indcpcndente de sua aparcnte demonstrado novas f01111as e apiic3tyao, simpiicidadc, as arquiteturas rcativas h~111 contudo, existe uma serie de desvnntagens nesta abordagem. principalmcnte em se tratando de sistemas complex os. FIGURA 7 - ARQUITETURQA DE AGENTES REATIVOS - 2000 Competencia M6dulo de Competencia M6dulo de Competencia Fonte: SOBRAL. J050 B.M. Agmte.Y: Conceitos e Principio5. Disponivcl em www.inf.ufsc.br.2000. 2.4.1.2 Agentes Cognitivos Segundo Angelotti (2001), no modele cognitivo encontralll-se as n090es dos model os de si; dos Olitros; de crcm;:as; de intenc;oes; de atas de fala; entre outros. Estes modelos penn item implemcnt •. tr mttodos complexos de coopcrnc;ao c negociac;ao. Desta forma: os agentes cognitivos si'iogmpos imbuidos de grande cJpacidade de interagir~ lomar decisues e trn~ar pianos de a~ao, 0 que confcre ao agente relativa autonomia. Eics manipulam a conhecimento par meio de modelos alr:lVcs dos quais, 41 lodos se tarnam capazcs de rcc.onhecer 0 potencial dos dcmais agcntcs que copnrticipam do sistema. permitindo a distribuic;ao inteiigente de subproblem as. Os agentes cog,nitiyos atuam em 4 nivcis, a saber (REZENDE, 2003): Nivcl de Cooperal;ao: quando um agente nile cstiver capacitndo para realizar umn tnrefn ou problema pnrticular. cle deve cooperaf COIlloulros ngcnlCS. Esta coopcra~ao deve ocorrer mcsmo se mais de um agcnte e capaz de cxecutar satisfatoriamcnte a mesma larefa. Este atributo recni dirctamentc sabre a possibilidade de decomposic;ao do problema em subproblemas por lim agente gerenciador que ocasiona a divisao de tarefas entre as agentes h:ibcis. Nivcl de Negocia~ao: 11 Ik'gocia~ao entre as agcnlcs acoillece pela divisao de tarefas, de maneim que scja mais organizada e fazendo uso das capacidades c conhccimentos dos agentes. Neste processo viabilizasc a promo~flo dos agentes, 0 que pennitc a resolu'ruo de problemas mais complexos. Nlvcl de Org:Ulizfl~uo: Diz rcspeito it forma como 05 nge-ntes interngem entre si. ao tipo de organizafVao que adotam, adapta~j10 all seja, a capacidade de e de insert;ilo de mecanismos de raciocinio no conjullto. Nivel de COl1lunjca~ao: rcfere-se ao modo como os agcntes irao se cOlllunicar equal 0 protQcolo de c0I1111nic~H;:il.o a scr utilizado na intera~ao entre esses age-ntes. 42 A abordagem cognitiva enfatiza 0 modela ment,,\ de um agcnte, tipicamente descrito como intenyoes e crencas. Dentre as model os mcntnis mnis importantes podem ser citados os seguintos (SINGH, 1998): (Beliefs): CI'Cnf;3S Caracteriz.1m l11undo seja; Referc-se ,\5. principnis 0 que Hill visoes de agente imagina que lim sell agenlc com rcl:Wao ao sell pr6prio ambientc. Metas (Goals): constitui-se Descreve que modelo 0 agente preferiria, ou seja, de subconjunto con tendo somcnte os estados e fUl1lYoesque 0 agente realmente pode assumir, por sua especi ficidade. Dcscjos (D~sirl!s): Descreve as prefc-rencias dos agentcs, as vezes com aspectos motivacionais. Derivados diretamente das crcnyas, conlendo os juigamcntos de possiveis situac;.oes futuras dos agentes. Intcn~iios (I"/,"/io"s): caractcrizam os objctivos ou desejos que agente seleciona para trabalhar. Trata-se de lim 0 subconjunto das metas; Caso um agente decida seguir uma meta especifica, esta meta toma-se uma Inten~il.o. Pianos (Plans): Combina as il1ten~Oesdentro de unidndes consistentes. 43 FIGURA 8 - MODELOS MENTAIS QUE CONSTlTUEM OS AGENTES COGNlTIVOS - 2000 Desires Goals 9" o ~ 00... Intentions UQ (1) FOnl(!: SOBRAL, Jolio B.M. Agt:lIt~$: COllccilos e Pl'illcipiol, Disponivel em www.inf.ursc.br.2000. No modele mental descrito nas linhas precedentes as ag~ntes sugerem uma postma inlcncionai: uma doutrina que pode descrever qualquer sistema usanda lennos C0l110 CrCI1C;11,objctivQs, descjos e inten~oes. Este e lim ponto de vista conveniente. pais reafirma que podem scr criadas agentes pelo usa de tcrmos inlencionais. Contudo, ista nao resolve 0 problema pr;itico sabre como detenninar, par exemplo, lima (mica crcnc;n e intelll';uQ de um agente arbitn\rio apenas com base em seu aspccta c ambiente. Se dais agentes t€.m semelhantes estruturns de dados referentes ~'!s crenC;3S, eles podem perfeitamente atuar de forma desiguaJ devido a difercn<;as em sells programas au outros dados estruturais, au scja, n;1o se pode dizer ao ccrto se eles 44 tt:111all nac eXalamente as mcsmas cren~as. porque nOllnalmente exislem elementos difcrenciais ('m cada agcnlc. Por Dutro l::1do,sem uma representa~ao explicita e objetiva, qualquer agente pode requerer infofma<;Des Agentes a rcspcito cognitivos semfmtica de um ACL (Agent da c.ren<;a de oulro agente. sozinhos podem prover as bases Ilonnalivas COlJlIllImicofioll que forma as agentes decidir.1o comunicac;,ao. Suas perspectivas para a Language), cuja fUI19aO e determin3r de a que cOlllunicar e de que fanna interpretar as atos de devem sec meramente usadns para estabelecer as CrellyaSe imen9t)es dos agentes a tim de que sell comportamento publico passe a agir de acordo com a modele padronizado. Por essa razi1o, agente que compoe e necessaria uma represelltayaO cxplicita das crentyas de cilda um sistema cognitivo, j,i que 0 conhecimento mlltuo das habilidades reciprocas pcrmite um compartilhamcnto constmtivo de conhecimento. 45 FIGURA 9· ARQUITETURA DE UM AGENTE COGNITIVO· 2000 ! I i I Interaction '------'I L "__... Fonte: SOBRAL, Jo,",o B.M. Agt!II/(,5: A figu":1 9 reprcse.nta nrquiletura cognitiva. '"_...".._"_~ Conceito$ 0 I .. _. __ .... __ ._1 .. e Prillcipios. Disponivcl em w"IVw.inf.ufsc.br, 2000. processo de funcionnmento dos componentes de uma Con forme pade ser obscrvado, na base de conhecimento eshl cantido a modele simb61ico do ambientc. Os dcscjos, mctas e inten~oes derivam. de f0n113 anflioga, da base de conhecimento. 0 plancjador (planller) toma conhecimento das intenc;oes e as comb ina para formar um planejamcnto completo. 0 Scheduler (aqucle que organiza a gr:1de dos plrtnos) reeche as pianos do consistc de lll11 l1Llll1CrO Plal111t!I'. Todo plano ac;oes (miens que devem scr processadas sequencialmcnte ou em parnicio. 0 Scheduler deve dccidir quando 390eS especificns devem ser executadas. 46 QUADRO 2 - AGENTES o REATlVOS E AGENTES COGNITlVOS quadro que segue apresenta compart'u;oes de caracteristicas entre agentcs reativos e cognitivos. SMA REATIVOS SMA COGNlTIVOS Agcnte.s cognitivos silo baseados em A intcligcncia real esta situada no mundo, Illodelos de organiZ31(()es sociais, C0l110 e nila em sistemas desincorporados (especialistas. provadores, etc.). se fosscm socicdndes humanas (grupos, Fundamentam-se no principia do hierarquias, etc.). desconhecimcnto. Sua intclig~ncia pode ser gerada sem conhecimento explicito Oll raciocinio abstrato. Ocorre nrmazenamento de N;10 hit representac;ao do ambiente. Nilo lui memoria das ac;oes au dt! conhecimento. conhecimentos. Nile ha planejamento estrntegico de ac;oes Os agentcs cognitivos podem raciocinar par parte dos agentes. Reage-se conforme sobre as a~l'5esque foram tomadas no as ITIUdUIl\:3S no ambie-ntc. : passado e planciar ar;Ocs futuras. H{lgrande numero de mf'mbros Tal como uma socicdade, 0 modele cognitivo e nommlmente composto de componentes. lim numero restrito de membros. Seu comportamento inteligente decorre de Capacidade de tomar decisl'5es 16gicas. DispOcm de um modelo simb6lico do interaryoes com 0 ambiente, lima ambientc e capacidade de raciodnio que propriedade emergente de ccrtos sistemas permitc a90es inteligentcs, confonnc os complexos. padr1'5es da fA chissic8. E diflcil nest a abordagem annazenar novas informuryoese conhecimentos sobre 0 iHnbiente, nl6n dos padronizados. Utiliznm 0 conhecimento disponiveJ no Os agentes possllem estados internos modelo para modit1car seu estado est{lveis. intelllo. 47 2.5 COOPERA<;:AO E COMPARTILHAMENTO COGNITIVOS EM SMA Ha ENTRE OS duas farlnas principais de cooperac;:ao: compartilhamento AGENTES de turefns e compnrtilhamcilto de resultados. No. primeirn, as agentes coopermn mutuamentc para compartilhamento da cargo. computacional evitando, desta fanna, sobrecarregar mutuamente 0 provenientes do problema 0 principal, sistema. No segundo caso, os agcntes cooperam peln divisao parcial dos resultados que sao baseados em diferentes perspectivas do problema principal, conseqOentc dos direre-ntes recursos au dadas (SMITH & DAVIS, (980). Nos sistemas que processamento processamcnlO compartilhamcnto \153m 0 das infonnayocs pod de tarefas 0 contrale visa ao para atingir 5ubjelivos, e os resultados deste em ser agrcgndos para resolver 0 problema maior, otimizando 0 processo de solll~ao do problema principal. A lransmissao objetiva de tarefas se processa a partir do envio de lima requisi~ao a outro agente, que par sua vez. manda lima resposta. Essa transmissao e resultado do troea de lim conjunto restrito de sinais que inicialmente caraclerizavtt 0 RDP dcvido ao compnrtilhamento sistema de intern~ao de turefas nao e \1111 limitada entre os rtgentes. mas 0 atributo exclusivo dessfl abordagem, sendo amplrtmente utilizado em SMAs para organizar a dccomposi~uo de problemas, alraves de conexoes explicilas entre agentes, e para a execll(;iio de ture-fase subtarcfns. A hlemrquia compartilhamento, resultante dessa transmissao obJetiv3, eu seja, estrutura a sintese dus respostas. Sua propriedade mais relevante do e a capacidade de facilitar a solu~:to de subproblcmas que nao possam ser resolvidos por 48 um lmica ngcntc. Assim, os agentcs individuais trccam resultados parciais para reso(verem sellS problemas parlicuiares. 0 compartilhamenlo de resultados c indicado quando (SMITH & DAVIS, 1980): Os resultados adquiridos por um agente influenciam ou causam diferenc;as nos resultados recebidos por outros agentes; o compartilhnmcnto dos resultados rcsulta na sollll;ao do problema (por excmplo, resultados rccebidos de um agenle distante nao ocasionam oscila,5es); Comparlilhamento adequada para A 11l3ior 0 de resultados contribui mnis problema. vanta gem do comparlilhamento inccrtezas. Considcrc-sc, para uma sollU;ao de resultados e a toler;:incia a por excmplo, llma aplicac;ao em que tres agcntes estao tenlando adquirir uma interprctac;J.o consistente sobre as por90es sobrepostas de umo. ill1agem. No compartilhalTIcnto de resultados as agentes tentam sc consensualizar comunicando suas interprcta~Oes pnrciais a lim quarto agente incumbido de ordenar as inconsistencias, Os subproblem:.ls individuais nao dcvem causar intcrrupc;oes comunicativo entre um agcnte e outro, mesrno que no processo eventualmente subproblemas identicos ou esquecidos (SMITH & DAVIS, 1980). surjam 49 Alem disso, e Illuito importanle que aos subproblemas priori dade de resolu~ao. A ncgocin'Yao e um reclirso urgentes seja dada que facilita identificar as prioridades e 0 protocolo de cOlTIunicn9t[o deve ser proje.£ado com este objctivo. No casa do compnrtilhamento de resultado a intlucncia dos agcntes lIns sabre as outros deve ser assegurada, pais, as resultados parciais recebidos de lUll agenle distanle podem sugerir novas linhas de ataque para a resolw;:fio dos problemas Oll, inadvertidamente inten'Omper um procedimenlo de rcsoiu9fio que vem oblcndo ~xitos significativos. Por isso a intern9~o entre agentes em urn modele cognitivo Neste modelo, pode-Ill ser identificados tres elementos e tilo importante. fundmncntais. a saber: componcntes de reprcsenlac,::iio,componenles de cOlTIunicac,::no e outros componenlcs indiretamcnte relacionados ao compartilhamento de experi€ncias Na figUI'3 10, verificacla, a seguir, comunicnc;ao e de rcpresentac;ao. ou seja, cOll1unicac;ao e 0 Oll conhecimento. e possivcl visualizar os component.es de 0 protocolo de transporte, linguagem de protocolo de interac;iio, alem das ontoiogias. Os componentes connmicac;1\o suo indispens~lvcis no processo de compartilhamento. de Os componenles de representac,::llo,pOl' sua vez constitucm·sc de ontologia e base de conhecimentos. As ontologias sao respollsaveis pelas definic;oes de conccitos basicos no dominio e os relacionamentos entre eles e as bases de conhecimento dispocm de inform:woes a respeito de Ladas os agentes do sistema. No processo de compartilhnmento expcl'iencias ou conhecimenlos, esscs agentes rnciocinam, esqucmas modelos para a rcsoluc;1\ode um problema. planejam de e seguem 50 FIGURA 10 - MODELO DE INTEROPERA<;:Ao EM SOFTWARES BASEADOS EM AGENTES - 1995 rr=~~~~~--~~ I COMUNICACAO Rroto,colO de Transporte Ling~agem de Comunica9aO Prolocolo de Inter~~o Planeiamenlo Modele ._- REPRESENTACAO Meta-Conhecimento Raciocinia . I Base de Conhecimento !~- . .- ~-~-----FONTE: FIN IN, LABROU 2.6 & MAYfiELD, COMUNlCA<;AO A KQML as all Agell' Communication ENTRE OS AGENTES intera'tao entre as agentes I1contece em a cOl11unicat;ao interativa seja satisfatoria linguagem KTF(Kfiowledge KQML, uma ACL proposta Jnt~l'challge 0 ARPA e Format) 1995. EM SMA Vi.'lriOS Agency's Kilo/edge-Sharing Effort) tem direcionado Lrll/g/lag~, niveis. Para que em cad a nivel (Advanced Researched Projects 0 conteudo de e a inten9ao informac;oes para a para a linguagel11 descllvolvicia pclo ARPA em 1980 - no Progrnma de 51 Compal1ilhamento de Infonnac;Oes e impiemenlnda grupos (SIGH, de pesquisa 2.6.1 KIF: Lingllagem 1998: BARBUCEANU independcntemente de Representa<;ao A melhor forma de assegurnr que 0 compartilhamento e pela harmonica que eli mine por varios 1995). & FOX, de utiliza~ao U111 ocorrera tmica sistema de. representayuo as difcreJ193S impicmcntuyiio, fucilitando de fomm de conhec.imento 0 comparlilhamento de conhecimentos. Sem uma Iinguagem de reprcsentru;ao as chances de que se obtenha alguma expressividade o ARPA dcscrever suo rebtivamente Kllowledge baixas (GENESERETH, Sharillg E.ffort prodlizililim 0 conlclldo de infonTI3y;1otronsmitido (ontologias). conteudo as agenlcs dcvem pom compreender-se Neste contexto solll<;"O sligerida pelo 0 2000). a lingllagem logic. C 0 vocabulario KIF para conceitual compartilhur destas il1forll1ac;:~es para ontol6gicas mutuumente 1995). & FOX, (BARBUCEANU e de KIF (Knowledge Interchange' Formal) se insere como uma KSE (Kllowledge Sharillg Effort) pnrn aperfei<;oar os aspectos sintaxicos de representac;ao durante a interuc;tio entre os agentes, firmnndo-se como um podcroso veiculo Huma Cons isle conhccimentos mensagem o expressoes pnra expressar tanto Iinguagem orientada conhecimento er como a comput3dore.s entre programas discrcpantcs. Refere-se (MA YFIELD 0 meta-conhecimento. para 0 intercambio a codifica9uo de do conteudo da ai, 1996). KIF posslli lima semantica IUl 0 dcclarntiva (por exemplo. 0 significado de representnc;ilo pode se.r cntcndido sem um interprete para manipulu-Ias); 52 c compreensiVD em lennos 16gicos (i.e. farneee c;:ilculos predicados de primeira-ordcm para a cxpfi:!ss50 de on:u;oes arbitrarias); viabiliza a represcnt.u;ao de conhecimento; disponibiliza regras racionais de reprcsentn9!3es nao-monotomicas; pCfmite a detinic;ao de objetos. fUl1yoes, c relac;oes; pode ser usado para apoiar a tmduc;ao do contettdo de uma linguagcm para Dutra; ou pode funcionar como uma lingua comum para dais age-ntes que USCI11diferentes linguagens de represcntnc;uo, funcionando como uma linguagem unificadora. Estn lingua gem de repre.sentacrao fundamenta-se: Na necessidade npiicayocs de uma inteligentes: lingua com enrase cooperac;J.o com Qutros componcnles os quais 0 KRSS e 0 No aperfeic;oamcnto franca na para desenvolvimento interpretac;uo (referente de it do Ilpacolc soluc;ao" do KSE, entre KQML); de um format.o de intercumbio pautado no ato Imdut6rio que pem1ita traduzir da lingungem A par-a KIF e de KIF para Iingungem B, ao invcs de se trnduzir de A para B (lvlAYFIELD ct ai, 1996). De qunlqucr f0n11a, 0 KIF forncce especif'icilyiio niio apcnas para a sintilxe da linguagem, mas tambem para suns sem;lnticas. Cabe ressaltar que a senuinticn do desta lingungem. ordem dcsprovidn de regrfts c dcfinic;ocs, nssemelhn-se devido ao fate de manter caracteristicas capaeidade de decisao do vinculo 16gico. u umn 16gicn de primciro fundamentais como a firmez.:1. e a 53 De fata, a linguagem em questffo inclui uma varied<lde de opcradores logicos pam auxiliar Iltl coditicac;ao da inCOrl11flc;:ao(como negar;.ao, regms, e nssim por diante), podendo ser usado tambem para descrever procedimentos. ou programas a scrcm scguidos pclos ngentcs. As ontologias silo escritas em KIF, usando-se 0 vocabuh1rio de defini<;i1o. Cada ontologia define UIll conjunto de func;:3es de c"'sse, e objetos constanles para algum dominic do discurso. As onlologias incluem ainda permite a inlcrpreta<;ao. A lingua gem resuitanlc uma axiomatiz3yUO que (uma logica b{lsica de KIF vacabt1l~irio e a tcoria das Ontologias) permitc a tais intcnyOes screm interpretadas + sem ambigilidades c independentes do contexto. Essas ontologias podem. cntilo, ser usadas por apJica<;oes de cOl11unica<;ao. Hit um nlunero consideruvcl de anlologi<ls desenvolvidas em v~rios dominios que pade-Ill ser de interesse para aplicac;Oes de softwares (FININ 2.6.2 el al. 1999). Ontologia Segundo Gruber compartilhamento (1993) a antalogia cspecifica de que Canna se process ani de conhecimento. De l1uo, uma ontologia e 0 lIma descric;ao (au especiFicac;,10 formal de lim programa) dos conceitos e relac;oes que podem oeotTer entre um agcnte Oll cOI11unidade de agentcs. De forma mais detalhada, ontologia significaria n espccificac;uo explicita de lima concc:ituac;i'lo.No contexto de lA, 56 a que "existe" pode ser repl'cscntado. Ao se represenlnr a conhecimento de U111 ~ol1linio como fonnalismo declarativD, 0 conjumo 54 de objetos que constitui representa<;:n.o passu essa universe a ser denominado discursivo. Este conjunto de objelos. c as rela<;oes descritivcis entre cles, refletcl11-se no vocabul:u'io de representac;ao do cOIlhecimento. E passivel descrever a ontologia de um programa definindo um conjunto de condic;oes de representaC;ilo. Ncsse caso, detini~oes previns pcrmitem entre as nomes das enlidacles no universe fun<r~cs)au outros objetos) e names e axiomas formais rlS classes, reiu<;CSes, texlo humano, legiveJ, que descrevc que induzem ao lisa e a dcclnn:u;ao de uma Fonnalmentc, uma ol1tologia Estruturalmcme 0 discursivo (por exemplo. adequado fazer associac;ao 0 significado dos e ;\ interpretar;Ho. teoria logicil. ontologias si'to rrcqUentcmente comparadas n hierarquins e taxonomicas de classes (dcfinic('jes de classes), mas importanle ressaltar que as ontologias nao precisam e nao devem ser lim.itadas a eslas fannas. pois nao estuo reduzidas a defini9ues conservadoro.s. quer dizcr, dcfinic;oes no senti do 16gico tradicional, que fecai sobre a mCfa introduc;-aotellninol6gica c nilo soma conhecimento sobre 0 ll1undo (ENDERTON, 1972, aplId GRUBER. Pam especifiear uma conceituac;iIo e preciso 1993). declarar axiom as que relucionem possiveis interpretac;('jesn condiyoes especificas, pre-definidas pela ontologia. As ontologias sao dcsenvolvidas com a finalidade de habilitar 0 compartilhamento de conhccimcntos reutiliztlveis. Neste· contexto, lima ontologia seria a espccificac;ao lIsada para cstabelccer compromissos olltol6gicos. Para descrever fUll9('jesontol6gicas silo utilizadas ontologias comuns em um conjunto de agentes, de fOllnJ a promover entre clcs cOl11unicac;i'iosobre um dominic exclusivo scm nccessariJlllcnte operar em uma teoria globalmente comparlilhadn. 55 Afinl1u-se que um agente compromete umn ontologia cOl11paliveis com as definic;ocs ontologicamentc se SlW.S estnbclecidas. ontol6gicas esta baseada no nlvel de conhecimento ac;oes nao forel11 A ideia de fUIlc;oes de U111agentc indcpendente da represent~H;aointema em nivel simb6lico dcstc mcsmo agenle. Aos agentes s30 atribuidos conhecimcntos pcla observ8C;c10de sua5 a90e5; urn agentc "sabe" algo sc age no 5cntido de, rncionalmente, "nc;oes" de lllll aican9ar suas metas. As agente. inclusive servidores de base de conhecimento e sistemas baseados em conhecimento, podcl11 ser observadas sob sua propria 6lica como Uilla interface fUl1ciol1aldo tipo tell e ask, em que a intcrac;:Jo ocorre alraves de afinnac;oes 16gicas (tell), e propondo questiles (ask) (LEVESQUE, 1984, aplid GRUBER, 1993). PmgIl1aticaIl1cnte,uma ontologia comum define 0 vocabulario alraves do qual se realizJm qucstCes e ulirmayoes entre os agentes, como que constituindo regras ou compromissos ontol6gicos, que constituem verdadeiros acordos relativos ao lISO compartilhado do yocabulario coere.nte e consistcntemcnte. Os ngentes que comparlilh;ull a vocabulario nito precisam compartilhar tambem sua base de conhecimento; cada lim deles tem conhecimento sabre as ac;oes que as otltros n50 realizam. Nao e exigido que um agente se comprometa com a ontoiogia de fonna a responder a todus as questoes que possam sel' formuladas no vocabulario cotllparlilhado (FININ e/ al., 1999). Na verdade, 0. ontologia concrclizu 0 compromisso quanta a padronizac;:ao do usa de um vocabulario (i.e., ask e tell). Para que haja um acordo entre as agcntes, e necessario compromc.timento entre cles e n propria ontolog.ia (GU1-lA & LENA T, 1994). 56 Em Qutras palavras, para J onloiogia lim compromisso comul11 e uma cspecie de garnntia de consist€ncia, c naa de perfeiyao, com respeito n perguntas e afinna~Oes que usam 0 vocabulririo per cia definido. Outro falor importanle na intcra~i1o entre agenles e 0 contexta. naa e passlvel haver comunica~ao sem a pcrcep9ilo do contexto, que all lim ambiente simulado. Assim, 0 contexto social os agcntcs devcm e elementar, Nonn:limente, e 0 agente fisico pais determina 0 que cspernr uns dos outros numa seqii~ncia J6gica de resposlas; requer aindn que haja vernc.idnde quanta ~is infonnayOes lransmitidas. 0 KQML tem um contexto fixD, em parte porque possui muitos indutores c em parte porque Um conjunto de represenl.w<;ies formais de conhecimento e inflexivel. baseia-se em conceitua~oe5 de objetos e outrns entidades que despcrtem nJgul11interesse para as rela,cles estabelecidas entre eles (GENESERETH & NILSSON, 1987, aplId GRUBER,1993). ConceilOS ontol6gicos nado mais sao que visoes simpJificadas do munclo ou contextos que sc descjam rcprese.ntar para determinado propos ito. Toda bnse de conhecimento, sistema bascado em conhecimento all nivel de conhecimento de agenle compromete·se com nlgum conceilo, expHcita au impiicitamcnte. Ainda par razues pragmfllicas, as ontologias disponibilizmn lim conjunto de deliniilocs de vocnbuhirio fonnal, embora nao seja 0 unico modo de se cspecificar urn conccito. A ontologia possui algumas propriedades desejaveis em sistemas multi- agcnles, COIllOuma scmfmtica independente do leitor e do contexto. o mecanisme contextual descreve partes importantcs do substrata sobre a qual a cOlTIunicalJaoocon-e. E inevilayel que as pares de agente alribuam diferentes 57 signil1cados a utn 1l1csmo significante, Um compm1ilhamento parcial por cada um seja difercnte pragmatisl110 no KQML de significados da id6ia original internc;ao nilo exige A evita social 6 verdadeirn. rccebida. possui que seu vocabuhirio 0 significado pr6prio. cOIll.precndido informar. t~o sutil quanto reque.r Il1uita coopera<;ao, e que a mcnsagem qual que se pretendia contexto lim acrcdite que a posic;ao afirmada assim pais cada au scja, que entre os humanos. 0 0 agentc informante mas isso nno ocon'C neccssariamente 0 agente infol111unte pretendc que informado 0 venha a acreditar nessu afirmativo.. Tal exig8nciu pode nMo ser accitflvcl confonne 0 contexto. (SfNGH, Dai import?lI1cia J tJmbem em nivel contextual 1998). Em se mantendo margem de uma unifonnidade as uxiomas contradit6rios para ambigliiclndes. Dutro desvirtua as Dcsta respectivas forma. ontoiogias, As difercn<;i1s existentes parcinimenlc. afim de que a 0 axiom3 signifiquc e traclucriio axiomatica e natural precisam ser Oll menos mais a comunicac;i'io naa oeoree au de um contexto que 0 significado sllperndas a mesma ceisa original da pam se perea ainda no ala tfndut6rio, no infeio e no tim do processo cOl11unicativo. Definir pode mecanismos apenas rt quantidadc ser exlremamente tnl capazes de axiomns Mellio. Toma-se de encapsuiar as relcvuntcs para a reaiizuyao de alguma forma nccess,lrio situ8<;Oes ou problemas situu<;ao au pelo menDS dar a cIa a prioridade potenciallllente produtivas entre os agentes (GUHA devida. & LENAT, a de uma a tarera utilizacr.io de fiIll de considerar realizando-se 1994). \igac;ues 58 2.6.3 ACL: Agent Communication Language A fun~ao des agentes C resolver problemas e pnra isso requerem linguagem calTIUI11. Na rcalida.de, individual mente os agentes descmpenhar fUl1yOes legitimadas par sua prograll1a~no sao capazes sistemica, iSl0 c, uma de s6 realizam as flln~Oes para as Quais foram program ados, ncgando informa9eies que naa fa9am parte de sell conjunto cognitivD. Neste contexto, a ACL (Agent Communication uma tentativa principal mente Uma ACL como lim e bem por succdida de padroniz<19aO na Language) se destaca como c0l11UniC39ao entre ngentes, pennilir a troca de infonna<yao par meio de interfaces declarativas. mnis que lim protocolo protocolo de intera<;uo (ou para troea de dados, porque alem de raciocina lim conjunto de protocolos) que slistenta diversos tipas de mensagens. toda sua scmantica e implicita ou explicitamcnte incorporada a ulgum modele de agcntc. Contudo, as ACLs variam quanta 3 forma de cnfatizar as model os sociais ou individuais de comunicac;:ao. A propria ideia de uma padroniza<;ao ou normatiw.c;:ao ling.Ufs1icasugere urn significado convencional bem-definido. Na vcrdade, lingua nao c nada mais que um sistema de convcnc;:Ocs. mas tcm demonstrado cOl1sideravel forc;:a entre os sistemas mulli-agellles (fVlAYFIELD et ClI., 1996). Uma mensagem ACL e uma mensngem constituida de tr~s componenlcs: lllll vocabul:'!.rio (igado ~l scm;intica propria de tim domlnio (on1010gia): uma linguagcm para codific3C;:llodo contclldo da mensagem cOlllunicac;:ilocomo KQML, par exel:nplo. (como 0 KIF); e uma Iinguagclll de 59 De acordo com Finin e/ al. (1993), na especificae;ao KQML as agentes se comport~111como sc fossem a\lt6n0l1105, agindo de acordo com seu eSlado mental, 0 qual e condicionado pOl' infornla~5cs a cles agrcgadas, que detcfminam seu proprio comportamento e ambiente, alcl11 de infonna~oes adicionais sabre Qutros agentes. Para tamar a intera~ao efeliva, diversos elementos devcm sef analisados, como as perspectivas, 0 tipo de significado, contexto e 0 nilIllcro de atos cOl11unicativos fundnmentos au pragmMicos), (semtmticos no processo. participantes Os agentes devem agir em conformidade, ainda que perten.yam ambientes para que possam compreender-se a di ferenlcs mutuamentc. Promover a intera~ao e a fun~ao do KQML. 2.7 UNGUAGEM A aspectos DE COMUNICA<;:AO - KQML intenwao nao requcr mais do que uma simples mais importnntes ca forma pC!:l qual as mensagens coordenary3o de troca de mensagens. Urn dos prolocoios, ou seja, uma conven<;ao da seraG compartilhadas. recursos para que se trabalhe em conjunto e sob moio de coordcna,ilo comum (BARBUCEANU o pudesse KQML roi prog,ramado como lingua gem universal para que cada agcnte interpretar I11cnsngens recebidas cOl11tmic<u;ao atrnves de alos lingi.ifsticos forma 0 & FOX, 1995). de explfcitos, rOm1a idr2ntica. charnados KQML depende de estruturas de atas de fala Ele viabiliza a performalivas. Desta a semelhanrya da comunicm;ao humana. 0 KQML tem sido adotado com uma sem~\ntica [annal. Baseia-se em tearias 60 dos atos de fala, (rrca de estudo do. LingUistica Computacional Inteligcncia e de Artincial. ci al. (1995), Finin suportor KQML inlenH;:5es fbi dcsenvolvida especifica~Jo define em junho dessa e par~ll1lctros mensagens, significado au uma 1inguagem A cspecificac;ao Em 1997 surgiu que protocolo projetada inicial para da linguagcm lima nova proposta conslitui lima para revisilo da h{, 111udancyas notaveis no seu conjunto das performativas, intenc;ao e linguagcI11 de comunic.wao, de lisa. fundamcnta-se Para intcragircm possuir como Apcsar das difcrenc;as serem minimas, em term os de sintaxc da linguagcm o KQML de 1993. linguagcm especific:tcyuo nillerior. 0 agcntl!s inteligentes. entre utilizf19ao nas seguintes em uma rede remota um protoc010 proto colo A crcsccntc de do KQ~[L como os agentes devcm ideias: de cOlmll1ica~no, de cOll1unicac;ao. KQlvlL 6 responsavei pc las informayocs que trafegam pela rede local ou remota. Os H[l pratoco!os de intenH;fio execulados pelos sociedade de agentes. tn:s importnntcs KQN1L: a sintaxe, age-ntes aspectos relacionnndo-se que a sintaxe associ ada ao mensa gem e interpretada de nota; e usada. defincm em a serem com cada os tipo passos de considcrndos a estrutura9ao e a pragmatica, dos a serem dial6gicos intera9J.o passive! Iluma em rcla((ilo it Iinguagem simbolos; a semantica, associada a fOmla como a 61 Deve ser dada maior aten~ao considera<;oes externJS agentcs, e a a questao pragmatica, pais a cIa estlio associadas linguagem propriamcnte dita como 0 modelo cognitivo dos ambicnte no qual eles exist em. Conseqi.ientemcnte a prngm:itica pode 0 detenninar a fomlu como os agcntes transferem a mensagcm rcciprocamcmc e de que maneira proccssarao cooperam as mcnsagens plCIlIlIl1Cnte, e parque reccbidas e enviadas. Quando os age.nles naa nao conseguem comprccndcr pragm3licas, e se nno conscgucm compreender t[lis exigencias as exigencias e dcvido a uiguma falh:t nn cOlTIunicn,cro (SINGH, 1998). Essa ~ a perccp9iio fundamental do KQML, cujo papcl, nesse contexto, enfatizar 0 pragmatismo, encontrndos na lAD, Oll e e auxiliar na resoluc;:ao de um dos maiores problemas seja, a divisao da sintaxe de forma comul11 e inteligivel a todos os agenles. o KQML, comunicacyao, utiliza embora uma nao consiga lingungem resolver plenamente compreensivel 0 problema ne.cessaria para dividir de 0 conhecimento e pennitir :1interpreta9ao d:1s mcnsagens trocadas, reestruturando todos os seus alas comunicativos. Isl0 naa constitui de fato uma divisao semfintica, mas ontol6gica, na qual. segundo Mayfield (1996), e objetos conslantes ptlra algum que induz e definida lima scrie de classes, funyOes dominic do discurso, incluindo uma axiomatiz.:1yao a interpretayao. Em pouens pniavras, promover a cOlllunica~ao hannoniosa entre os agentes tcm sido lim desJ.fio, e talvez constitua a maior Iimita\=ilo dos sistemas ITIulti-agentes. Neste easo, como os agenics devclll ser orgilI1izados para conscguircm colabornr entre 62 si, atingindo 0 grau de comunicabilidadc necess{lrio pam 0 funcionamcnto hanl1onioso do sistema? A fim de responder a essa pergunta dUlls abordagcns difer~ntcs t~m sido exploradas: cOlllunicar;.ao diretn, na qual os agcntes mesmos cuidam da coordenacyfio, e a coordena9ao 8uxiliadn, cm que IHi program as espcciais para organizar a coordenaryao (Disponf\'el em: www.inf.ufsc.br). Ncst~ iillimo caso, conta~se com uma classc especial de agcntes denominados facilitadorcs de cOlllunicacyao au simplcSlllcnte llgentcs facilitadores, que negoc.iam conhecimcnlos de informac;Oes e exig~ncias de outros agentes, permitindo a emissilo de mensagens, mediarytio entre as agentcs. recrutnmento e encaminhamento contctldo de base. Esse proccsso pode ser observado no esquema abaixo, em que do lim agentc A solicita (ask) que 0 agcnte facilitador F monitorc as l11uduHryUS na base de conhecimento ou conhecimento originnl do agente. FIGURA \\- FUN<;Ao DO AGENTE FACILITADOR - 1999 FONTE: FININ, Tim; LABROU, Y:mnis; MAYFIELD, Language, 1999. James. KQML (/J ...JgO!1// Commullication 63 Considere.-se se,ntcn<;:aX , 0 lim caso em que agente B pode tel' 0 agente A gostaria de saber a verdadc sabre a X em sua base de conhecimento, e 0 facilitador (i' esla disponivcl. Se A est;} cit:ntc de que pode feccher ulgum retorno positivQ ao solicitar a B infonnayoes a rcspeito de X. entilo elc pode utilizar um protocoio c cnviar a soiicita<;:ao diretamcnte a F, con forme mostrndo na figur:l 11. un disponihilidadc Se, contudo, A nila C5t<\ ciente dos agentc5, au sabre que agente lem infofmRyOeS sabre X em sua base de conhecimento, au como comunicnr aquclcs agentes que possam estar disponivcis, entilo uma infinidade de nbordagens pode ser utilizadn. A figurn 11 mostra um excmplo em que A usa uma performativa para pedir ao facilitador F que forne<;:ainform:H;oes a respcito de X. Se B informa F de que hi grande probabilidade de X scr verdadeiro, enUlo F pode, na seqUencia, comunicnr cssn informar;Jo ao agenle A. o ngente facilitndor devc conheccr 0 endcrer;o e 0 nome de lodos as agentes da sociedade, trnnsmitindo esta informar;:10 aos demais agenles, que pnssam a trocar mensagens usando ilpcnas a nome do agcnte como refer~ncia. Todos devem c·star cientcs do enderer;o fisico do facilitator para interugir com outros agentcs. 0 arquivo que transrere 0 cndereyo Fisico do facilitator e os protocalas que sao supartados saO denominados /aci/ifator.properties. Um e 0 ATPFacililalor 0 Dois tipos de r.lciiitndores s50 disponibiii7..(1dos. qual utiliza 0 ATP prolocol (Agellt Trallsfer Protocol) e e executado no illllbiente npp/et.s. A intcra~ao entre os agentcs oeorre em "{Irios niveis. 0 contclldo da mensilgem C apenas lima parte da c0l1111nicJ.Yuo.Ser capnz de alocar e engajar a 64 atenc;30 de outros agentes com as quais se deseja comunicnr faz pane do processo assim COIHO crinc lima mensagem de forma a deixar claro as sellS prop6sitos. Quando se usa a Iinguagem KQML. um ngente transmite mensagens cujos cometldos sao compostos em c6digo lingtiislico escolhidos pclos pr6prios agentes. 0 conteudo da mcnsagcm pode sec exprcsso em qualqucr porque 0 KQML ignora de suas Illcnsagens, 0 linguagcm de representac;ao, conte(ldo da mcnsagem, fazendo apenas 0 reconhccimento e destn r0n11a simpli fica a implemcnta<;ao em ambicntes distribuidos, permitindo que as mensagens carregucm infonna<;(')cs litcis. como as nomes c cndercc;os dos agentes de envio e recebimento, quem de mensa gem, e notm;:l5es de rcconhccimcnto 2.7.1 e 0 agente identificador para os demais agentes. As Camadas do KQML a KQML e cstnuurnlmcnte fonnado pc\as c;Jmudas contelldo, mensagcm e cOl11unict:lc;aoe as mcnst:lgclls originadas das cspecificnc;oes deste protocolo contt:I1l infol111a~OCS referellte 2.7.1.1 Cam.da a estas Illcnsagens. de Contel,do Nessa cnmada est:.'tembutido 0 conteudo do mensagem reprcsentado por uma cxpressfio em a\guma linguagem que possa encapsular a informac;ao ou conhecimento a ser lransmitido. 65 No. camada reprcscntado de conteudo pode linguagcm. em qualquer Como e nccess.irio significado desse contclldo estnr qua\qucr cantido implementac;oes as tipo de do KQML conteudo ignoram 0 que a linguagem tenha conhecimento sabre 0 age.nte receptor. Dc acorda am13zenndas, passo. Finin 01. (1995), t!/ senda configuradas e apenas objetivo o conteudo com da cilcapsular conteudo pode qllalquer lingllagcm, contclldo, Quem mensa gem sao inteligivcl que as mcnsagens sao ou nao, uma vez que sell infon11at;ao adquirida. Ncla por uma cxpressao em alguma conhe.cimento au cmnada esta cmbutido linguagcl11 que a sec trnnsmitido. A cam ada quaJquer tipo de informac;ao, 0 qual pode ser represenlacio conter pois tem as implementa9~es a incumbl!ocia os agentes, onde seu contclldo au a rcprescntado a infonmu;ao nesla em linguagcm relef 0 conhecimento mcnsagclll e Podc-se, est{, reprcsentado de par do KQNlL ignoram resolver excmplo, em linguagem os uma ern signi Cicado dcsse problemas destacar natural 0 de aprescntados mensagem (MAYFIELD na KQML et. aI, 1996): (ask-if :senderXX :receivel' YY :in-reply-to MSGO I :reply-with MSG02 :!Jnguage Natuml :ontology 'teste :contcnt (,'Este . cscrito em linguagcm de contclldo' teste serve natural"). para mostrnr a COIltClldo de lima mensagcm KQrvIL 66 2.7.l.2 Cam.da de Mensagem A camada de mensagens e responsc\vei por identificar ser usada no momento de trnnsmitir Como 0 0 qual performaliva cleve conteudo pam carla agente (FIN IN et al., 1995). conteudo de mna mensagem e confuso para a linguagem KQML. e necessaria apresentnr parumetros e subsidios ndicionnis n respcito do contelldo. Denlre esses par{1I11etros destacfllll-se: foi eserito, e: language que informa em qual linguagem que des creve em que dominic oJ/t%gy 0 conteudo 0 conteLldo esta inserido. A cstrutura sinttitica de uma me.nsagem mediad a peln camada de mensagem, visa a padroniza9iio desconcertantes agentes nil de KQML os aspectos lingua gem sistemica sao transpostos por intermedio das dcla. Os podem infomlo.c;oes tracadns pelos agentcs, falar diretamente a outro agente ou podem enviar mensagens a mliltip!os agentes do meSIllO grupo, pois seus ambientes operacionais silo exlremamcnte distribuidos, heterog€neos e dinumicos. Para satisfazcr as exigencias de tn.1 3mbiente, a Iinguagem KQML prove ferramentas fonnais que trabalham com ClUms linguagens e protocol os. Quanta a sua estrutura IingUistica, 0 KQML npresenta scmuntica informal flssociada a dialetos com sinta.xc similar, alel11de <lprescntar maior autonomia e alto grau de hcterogcncidnde conhecimento sugere no que ~c rcfcre it cont1gurlu;J.o lingUlsticn. 0 KQML de cada ugente pam que se processe a comunicac;ilo, porque apenas a forma como devcm estnr estruturadas as impicmenta.yoes independcntc de sua eslrutura au do umbicnte. Par isto comunica.yao rcqucr entre sistemas l11ulti-agentcs (FININ f!t e dos agentes, viavcl sua utilizac;ao para ai., 1995). 67 2.7.1.3 Camada de Comlll1icayao A camada de c0111unic:.lOYJ.oapresenl<l alguns parumclros mednica de comunicac;~o assegur:mdo para informar a efetividade no processo. Estas informac;oes CSlao represcntad;\s por pan'lmetros de baixo olvel de comunica9aO. que silo 0 cmissor da mensagem, 0 receptor e os idcntificadore.s (micas dus mensagens enviadas e recebidas. Estas cnmadas apresenuuTI distinyoes no que sc Tcfere ao mecanismo de transmiss~o e as 3ryoes do dominic de aplica9ao. conferindo maior indepcnd€ncia por manter separados 0 contellda e a cOlllunicac;ao. Dcsta [orIlla a mesma mensagem pode carregnr difcrentes conteud05 em diCercntes circunsUillcias. FIGURA 12 - CAMADAS EM QUE SAO DlVID1DAS AS MENSAGENS KQML1999 Mecanica de Comunicaca.o COMUN1CAVAO MENSAGEM L6gica de Comunicaca.o (perfarmativa au ato do discursa) CONTElJDO Canteuda de Comunicac;ao (em linguagem inteligivel) FlNIN, Tim; LABROU, Ynnnis, MAYFIELD, hmes. KQML M:'Iryl:l.Ild Baltimore County, 1999. as WI Agl!lII COllllllllllicalioll LlllIglillgO!. Con forme pede scr observado no esquema supracitado. a primeira camada do KQML representa 0 modele do mundo do agentc: passu indo i190eS primitivas e padr<5es 68 de comportamento. 0 protocolo p05sui, ainda, uma camada que representa 0 modele mental do agente com seus conhecimentos, represcnta 0 met.as e pianos. A t'i11ima cam ado modele social do agcnte composto pelo conhecimento dos QuIros agenles e procedimentos de coopef3~ao. 2.7.2 Alas COlTIlInicalivas Quando agentes autonomos trocnm informa9ues cOlTIullicativQs. Para mllitos ccnarios computaciollais, ocorrem os atas e-stes atos podem ser agrupados cm sele c.legorins (SINGH, 1998): Asscl1iV3S, que informmn; Direlivas, que perguntam; Comissivns, que prometem nlgumn caisa; Pcrmissiv3S, que pcnllitc11l cxecutnr lima ::H;:UO; Proibitivns. que imcrditam a~5es; Declarativas, que causam \!ventos em si proprias; Expressivas, que cxprcssam cmo'YOes c avalia.yucs. As comissiv3S sao cssenciais para que os agentes se compromelam. Permissiv3S e proibilivas fazem os agcntes criar ou negar autoridade. Dec1arativas 3uxiliam na escolha de lllll agente como representativo ou Iidcr de grupo. As expressivas permitem que os ngenlcs realizem nvalia9~es de nprov39f10 Oll nao. Estn 69 catcgoria, embom seja atuahnentc poueo usada, provavelmente se tornara mnis importanle quando as agentes cmocionais [orem utilizados com mais freqUencia (SrNGH, 1998). Os aloS comunicativos podem ser colocados de forma estilizadn, nao apenas sentenyils, mas tambem fazcndo mas medifica 2.7.3 a~5es, pais 11fhln, aprcscntando ilyl:les. e por isso os alas comunicarivos Performativas suo as pr6prins discursa no processo comunicutivo. da Iinguagem Qutros, sendo perfollnativas cJassific<1das As perfonnativas de intervenc;i'to em tres c mccJ.nica it tcoria relacionando-se dcfinem permissiv8S que os agenles devem levar em considernyao os performativas. do KQML sao as primitivas PerfOlll1ativas apenas comunica, !laO do a90es (operay13cs) ao se cOlTIuniCSrCIl'luns com calegorias: performativtls de conversac;ao e por (iltimo, de discurso, pcrformalivas de rcde. Pode-se encontmr a especifica,ilo resumida do linguogem KQML (FrNrN e/ al.,1999). As cspecificac;~e.s estiio presentes diversas em KQlvfL envolvem em JKQML. categorias, Uma mensagem mas sell formato Performativa (: sender <word> : receiver <word> : lnnguage <word> : ontology <word> 36 pcrformativns, KQML e basicamente e normalmente 0 seguintc: dcntrc as quais distribuida 23 em 70 : content <expression> Nas linhas subseql1entes seguem as principais performativas em KQML: 2.7.3.1 Performativas tell: a perfonnativ:l de Informa<;ao do tipo sender infonna receiver se 0 contell(.lo da mensagcm e verdadeiro, de forma que a scntel19a se inserc nn base de conhecimento de ullc/er. deny: ullder infofmn receiver de que a negacrao do contelldo da mcnsagcm vcrdadeira pam sender. untcll: signitica que conteudo da Il1cnsagem naa se enCQntra disponivel em s~l1del'. 2.7.3.2 Perfonnativas de Consulta ask-if: sender deseja saber se 0 cOllleudo da mensagcm e verdadeiro :1sl\:-311: ullder deseja sao verdndciras saber que aspectos da mcnsagcm para receiver. para receiver. 2.7.3.3 Respostas error: sender indica a receiver que n~o houvc compreensao da mensagem anteriormentc recebidJ. sorry: signitica que sender comprecndeu a mcnsagem, porem, 11ao pode emitir lima respostr). 71 2.7.3.4 Performativas de Bases de Dados Ins~rt: Sender pede a Rf!Ceivu pam tlcrescenlnr as informaC;i5es que constituem a mensagem em sua base de conhecimento delete: scnder pede :l recf!ivtr que apaguc 0 conteudo da mcnsagem prescnte em Slla base de conhecimento. 2.7.3.5 Defini,lio de Capacidade advertise: Sender comunica a receiver que pode e ira processar mcnsagens similares it. recebida. 2.7.3.6 Performativas register: Sender de Efetua,iio comunica a receiver sabre 0 nome simb6lico assoc.iado com seu enderc):o fisico unrcgistcr: cancela 0 regislro anterior tral1sport-adressess: sel1der cOll1unica a existencia de lim novo endcrcc;o fisico na rede forward: sender deseja que receiver transmita a mcnsagcm a todos os agentes desse conhecidos. 72 2.7.3.7. Performativas broker-one: SClldel' de Facilita~ao pede a Rtceiver que encontre uma resposta para a pcrgunta que se encontra impiicita na mcnsagem recommend-one: Sender pede a receiver que surgira lim agente que passa resolver 0 problema processando 0 contclldo da mensagem. 2.7.3.8 Performativas de Discurso Esse tipo de performativa e fortemente baseado na lcoria das m;:oesde discurso e pode seI usada para troea de infofmac;i5es e conhecimento entre os <tgentes: (ask-if : sender <word> : receiver <word> : in-reply-to <word> : reply-with <word> : language <word> : ontology <word> : content <expression» o usa dc-StaIllcnsagem se lama convenientc quando 0 emissor (:seJ1cMr) 'luer saber se a expressiio do conteudo (:col!!ent) e verdadc para 0 receptor (:receiver). A 73 cxpress30 e vcrdade para a receptor se combinor com uma das senten9:ls que fazem parte de sua base de conhecimento virtual. ("sk-one : sender <word> : receiver <word> : in-reply-to <word> : reply-with <word> : language <word> : ontology <word> : content <expression» Similar n anterior, " pcrformativn exista adequa~tio entre a expressao C0 Normalmentc, a resposta do receptor encontrad3. (tell : sender <word> : receiver <word> : in-reply-to <word> : reply-with <word> : language <word> : ontology <word> : content <expression» Ask-olle deseja conhecer uma instancin on de conteudo da base de conhecimento do receptor. e proposta ,ltraves de um valor para a instuncia 7-1 A perfonnativa tell infonna para parte da base de conhecimento vcrdade pam 0 0 receptor que 0 conteudo de: coll1~m faz virtual do emissor, all sej'l, que esse contcudo e emissof. (\lntell : sender <word> : reed ver <word> : in-reply-to <word> : reply-with <word> : language <word> : ontology <word> : content <expression» Para a perf Of mati va 1l11/ell 0 conteudo de :conlent e lido como falso, iSlO e, nao cShi prescnte nn base de conhecimento virtual do emissor. 2.7.3.9 Performativas de Intervenyao o }Japel fundamental Medinica e de Conversa<;ao dcsta categoria de mensagcns e intervir no fluxo normal de convers;:'Hyao quando uma situalYcro anonnal acontccc. Essa interven~ao pode se dar alraves da interrup9ao do fluxo de mensagens ou por me.io dn introduc;ao de um protoco!o mais comp!exo na intern9iio, visando suprir uma anomnlia na comunicm;ao. (error : sender <word> 75 : receiver <word> : in-reply-to <word> : reply-with <word> A perfOnllativa anterior ocon'e na mensagem tres tipos identificada de erros: protocolo de efro As perf Of entre as agentes. agente sociedade Sl.!lIS usada pelo emissor para infonnar se algum erro pelo sint[ltico, ill-reply-to. NOfmalmcnte. parametro: crro nos parametros au cera com existem a polilica ou convcrsa.;:io. 2.7.3.10 Perfonnativas mcnsagens e mati vas de rede servcm UIlla de suus tarefas enviadas facilitador por um agente se faz de agentes. cnderec;os de Rede presentc, Gerahnenll!. e caracteristicas. a) (register : sender <word> : receiver : in-reply-to <word> <wofcl> : reply-with <word> : language <word> como utilitarios c encontrar as agentes qualqu(.~r. Neste agindo 0 facilitador para para facilitar a a comunica~iio que podem tipo de performativa, organizac;ao conhece todos responder 3S papel do 0 e gercnciamenta os agentes da na sociedade, 76 : ontology <word> : content <expression» ESla pcrfOfm3tiva prc5en~n na sociednde est:io as infonnnc;5cs e bem sabre usada como 0 agente pelo informar emissor cmissor para seu nome que 0 anunciar ao facilitador e endere~o facilitndor fisico. Em: a sua COIl/elll deve conhccer. b) (unregister : sender <word> : receiver <word> : in-reply-to <word> : reply-with <word> : Innguuge <word> : ontology <word> : content <expression» Como nome facilitador. 0 sugere. csta pcrformativu desfaz um regislro de agente junto ao 77 2.8 0 EMPREGO DO RADAR NOS SERVIC;:OSDE TRA.FEGOAEREO A arquitetura ond"s dcsta eletromagnelicas KQML, inteligiveis do trafcgo o radar v60, scndo segurlllH;a e um vaHosa !lUS e velocidade No radar sua trajetoria o que recebe descmpenho equipamcnto a reOexiio informcWucs atraves lonna a pcnnitir COilverta que do protocolo 0 ll1onitoramento as atividades i.luxilio densidade de tnifego, OCOrre por de pulsos-nidio do controlador promover pOl' de m.nior mais sofisticndo, elelromagnelicas. meio nao se Seu funcion~unento as informac;oes de ondns eielromagnclicas. que, ao encontrarem objeto em no principio de de um aparelho de lim estac;uo transmissora. pel a e invulnernbilidadc (\\ww.fab.mil.hr). de e cnptndos sccundnrio, bordo, de sob a forma silo refletidos radar ao sistema areas de grande prinuirio, de ondas em de agcllt.es no OUXQ (www.fab.mil.br). ao espa~o reflcxao conjuillo num aerea. essencial trnnsmitidas cOllsiste pete radar emitidas wOlando-as autonuitico proposta emitidas Ihe conferem pela torre vantagens fundamenta dt!pende de controles. Seu em relnc;ilo no radnr alcance, primurio 78 2.8.1 Sistema Receptor da Aeronave o sistema Iral1SpoJ/d~J' e um clemen to intcgrado de reccptores e trnnsmissores de sinais de radio que operam de fanna conjunta e em tempo integral. Os sat61ites podem possuir dezcn3s de Il'llllSpollc!ers e c.ada aparelho reprcsenta 0 par de lim receptor C lun trnnsmissor de radio. 0 lefIna traJlsponder usado, porque normalmcnte ha e muitos callais em OpCmyllOao mcsmo tempo, sendo necessaria detenninar a respeito de qual acronave se refcre c a freqilcncia em que cle opera (www.fab.mil.br/). Cada rranrpollder possui 111111l freqiicncia de operacylio pr6pria tanto para reecher, como para transmitir seus sinais para as cSlu9()es terrestres. Esta freqU8ncia e bascada no sentido em que a infofmayUO trafega. Se 0 sinal segue da terra para 0 satclite, diz-se que esta freqUi:neia c satciite para uma esta<;aolcrrestre que de sub ida, all Uplink, mas se 0 sinal desee do e Downlink. Os sistemas de rccep<;Aoe transmissao sao integrados e mesmo que utilizem as mesmas amen as, nao significa que todos ten ham qlle lItilizar frequcncias identieas. Se urn sateiite possui 100 6, Hmto as ennais de transmissao e recep9ao de sells 100 reccptores clOD transmissores podem operar, cada qual em uma freqUcncia. Na ausencia de urn sistema de rccep9ao e transmiss;]o utiliza-se 0 trallSponder, que funciona como receptor, conversor identificar 0 3viao. de freqiicilcia c transmissor, Para sllbstituir 0 lra11Sponder pennitilldo 0 sistema deve ser capaz de identificar as posiyoes das aeronavcs, pois sua principal finalidade ¢ impedir eolisoes 113 {Irea de coberlura da torre de eomando. atravr.:s de informa~oes eaptnuas par radar ou cOl11unicadas por contato via radio bilateral com as aeronaves (www.fab.mil.br). 79 3 PROCEDIM.ENTOS METODOLOGICOS Os procedimentos metodol6gicos adotndos comprcendem as seguintes ctapas; Revisao de literatum; Plataforma c Linguagem para a implel1lentn~ao; Sele~no do Aplicn<;iio; Descri<;ilo da Aplica<;no: Impiementa'rao a) Arquitctura; b) Tipo de Agente; da vcrsao prototipica cOllsiderando a arquiteturH intern a dos age-nles; Analise do descmpenho frente a aplic81;l'io desejada. Teste da implcll1enta~ao EspecificRcraO do conjunto sistcmico e da gestao com estudo de casa; do fonnniis.mo cmprcgndo parn reprcs:cntur 0 s;i"to!lna multi-agcnte desenvolvido com base nos problemas que contra Ie 3.1 funcionaI 0 caso - de lrafego Bereo npresenta. LlNGUAGEMEPLATAFORMA A iinguagcm utilizada para 0 dt!se.nvoivimcnlo JAY ATM, porque constrw;ao do protolipo e linguagem possibiliLa a Illobilidade e a inlegracrao facilitada com umbicntcs de de agentcs, proven do poderosas [crramcntas, ,\ programa~ao, ja que e 80 orient ada a objelos. Tendo em vista que 0 JAVA ™ e uma linguagcm multi-platafom13, a implementac;uo do prot6tipo em Java nao depende de sistema operacional especifico. tem, podcm ser relacionadas como segue OUlras vantagens que 0 JA VA™ (CESTA & RUBIRA, 2000): Simples: Devido ao fato de muitos programadores usarem 0 C++. a sintaxe do JAVA™ c muito semclhante ao C++. Uma das mclas da linguagcm JAVA ™ e IW.bilitar a constru<;ao executar em modo stalld-a/olle de software que possam em maquill3s pcquenas. Orientndo a objeto: Um projcto orientado a objetos devido fucilidades c claras 1)5 defini~Oes c muito de interface que poderoso torn am possiveis a reutiliz8<;ao do c6digo fonte. As fncilidades da oriem3C;uo a objctos da linguagcm JAVA Pol sao esscncialmcnte as mcsmas do C++, Distribuido: JAVATM tem uma cxtensa biblioteca de rotinas para comullica~ilo ern protocolos TCPtlP, como I-ITTP e I'TP. Aplica~5es em Java podcm abrir c acessar objetos n.traves dn redc via URLs com a meSilla facilidade que programadores usam qunndo ocessando lim sistema de arquivos loenis. Robusto: JA VA™ preocupa-se em escrevcr progromas confit\veis em muitos ambientes. A linguagcm tem enrase primeirnmcnte na verifica~iio de possiveis problemas, na verifica9uo din:lll1ica e eliminafYao de Sillluc;oeson de possum ocorrer erros. Seguro: Existc lima preocllpa~rio com ambientes de redes distribuidas. 0 Compilador da linguagem JAVA™ implementa ll1uitas defesas contra 81 c6digos incorretos c cantril c6digos subversivos por programadores de aplica,Oes. Arquiteturn Neutra: arquitctura de hardware all interrace de sistema operacional. Se 0 sistema JAVA ™ esta disponivel para alguma de hardware e sojiware, uma aplic3ryao escritn em JAVA nl plataforma pode ser executada scm a necessidnde de qualqucr trabalho adicional. Porta"cl: Devido it sua arquitetum neutra lima aplicilcrD.o em JA VAnI pode executar em v{lrios ambicntes com Unix, \Vindows, Macintosh, Salaris. Intcrpretndo: em JA VA™ Alta 0 interpretador JAVAT),,'pode exccutur em quaJquer maquina nn qual performallce: 0 interprctador c A alta pcrfonnance 0 c6digo escrito scja portuvcl. conseguida linguagem ser interpretada. A apJica.yJo pode ser transferida apesar da em c6digo de maquina p:lra uma CPU em particular e ser em seguida cxccutada. A pel/ormnllce de convcrsao do c6digo fonte para 0 c6digo de maquina e quase tii.obom qU~\Jltodo C e C++ IKltivo. Compilado: Um programa em JAVA™ e compilado para 0 chamado "'bite-code", que se assemelha as inslruc;oes de Ill.{lquina, mas nao de lima m{lquina idealizada real. 0 "bite-codt!~' e tim c6digo de uma m~lquilla virtual peios criadores da iinguugcm, par isto JA V An.1pade ser mais r{lpida do que so fosse simplesmente interpretada (CESTA & RUBIRA, JOOO), 82 3.2 SELE<;:AO DA APLlCA<;:AO Com 0 crescimcnto da dcmanda aereu, passaram a slirgir situac;oes incsperadas que requeriam solw;:oe:s imprevistas. 0 monitoramento pas sou a exigir crilerios sofisticados na ordenac;rto computacionais associadas ao do tlUXQ das acronavcs. das torres de comando seqilenciamento distribuido (GRANGER" das Desde enfrenlaram mensagens entao, iimitalYoes recebidas do mais as sistemas cOlllunicativas, sistemn operacional al., 1993). Embora tim sistema integrado para controladores de v60 tcnha a capacidade de tomar decisoes 16gicas. se fizer isso no momento crrncio, au se for incapaz de integrar os mecanismos rcceplor/emissor de sun aprendizagem, nila facilita as c0J11unica<;:5es entre 0 ngente e a aeronave, portanle ni'lo cumprc sua fUI1(;.ao,senuo parcialmcnte. No intuito de atender as cxigr:ncias emergenlcs vein sendo desenvolvidos Inais elaborndos, que requerem llutonomia por parte dos agentes CDUJARDfN sistemas t!l al., 1997). Do ponto de vista tccnol6gico, 0 sistema ideal para coordenar 0 trafego uereo deve raciocinar e tomar decisoes, intcgrando proccdimentos e evitando arbitrariedades on transmissao de J11~nsagens, atrnves do comprometimento estabelccido entre os protocolos c as age-ntes. Estc compromctimcnto ocorre dt: tal forma que as opera90es cOlnunicntivas constrangidas inviabilizam 0 comportamcnto por meta-compromissos, Oexivel, a lim de assegurar po is silo elns pr6prias que arbilriirio ni.ioobtenha exito sabre a comport::mlento em conjunto. 0 comportamento 83 Empiricamente, a intera~ao entre os agentes inteligentcs pcnnilid. a resoluC;:50 dos problemas de v60 em tempo habil e a troca de infoTmac;:oes sera vciculada com velocidade e destreza descjaveis, acresce.ntando fum;ues de monitonu;fio e segurnnc;:a, assegurados por sistemas inleligentes, capazcs de agir racionalmcnte, con forme acim3 descrito. Com base nisso, os progrmnadorcs podem habilitar as :Igentes para desempenhnr variadas func;:oes, mas a implementac;:ao do sistema multi-agente deve agir de ~lCordocom as protocolos junto aDs quais interopcra, sejam cles protocoios de inlcrac;:ao au de implementac;ao. As exigcncias do prolocolo podem ser cxpressas apenas em termos de compromissos e a sincronia na concord:incia dos agentcs pode ser testada apenas com base nessa capncidade comunicativa (SINGH~ 1998). o Si\1A permite, COnf0I111ea vontude do dcsenvolvedor. condic;;Ocs de trofego propriamente (dist5ncia vertical considerando-se \lin com rela~ao ao ditas. nivel elementos do mar), considerar junto as contextuais altura como altitude (dist~incia vertical ponto de referf:ncia qUlllquer) c teto (llitura. acima do solo ou agua abaixo de 600111- 20.000 pes). que cOllsidercm aspectos E possivel, tambem, habilit"r agentes cognitivos para I11cteorol6gicos como pressao, velocidade do vento, visibilidade e temperatura. A principal razao pelll qual 0 dcscI1volvill1cnto efctivo de um sistema multillgente ofcreee dificuldades, rccai sabre a ca~ncia de um protocolo de interac;ao que n80 ofcrec;o dificuldacic!J de comprcen~uo dumnte 0 nto comunicnlivo, que scju faciI de impiementnr c capaz de resolver 0 problemn de dislribuir,;:ao de t3refas. Assim, n cscolha do protocolo KQ1vrL e da linguagem JA VA™, de intera,ao e de 84 implementac;ao, respectivamente, agentcs, dcve-se fazendo com que coopcrem :'t de sua capacidade forma inOexfvel, de comprometer evitando as posslveis arbilrariedades. A solw;ao pJra determinados problemas pode scr enconLrada por agentes difcrentes, e em dado momento, alguns ciesscs agcntcs padem scr Icvados a combinar estas diferentes soluc;oes para produzir lima Dutm. Desta f0n113, alguns agcnles devem scr sofisticados 0 bastante para decidir quando, com quem interagir e como se comportar adequadamente na presenc;a de infonnac;~es contradit6rias (ANGELOTTI el al,2001). 3.3 DESCRlCAO DA APLlCACAO A cOll1unicac;:ioentre a torre e atingirem 0 agente receptor, 0 aviao e mcdiada sao cOilverLidas por ondas de radar que, ao em infonnac;ues. 0 processo e denominado Controle de Area, e consiste no l11onitorumento de entrada c saida de aeronaves na area de cobertura dOlton"C de controles. V{lrios 6rguos se prestam a coordenac;ao deste processo, dependcndo a da posic;ao da aeronave. Destacam-se Orgiio de Controle de Aproxima,Jo (APP) e a Torre de Controle Aer6dromo (TWR), como excmplos de cobertura em areas restritas; 0 tl'i:ifcgo aereo. que consiste processo de aterrissngcl1l e partida d\! v6os, e no coordenndo pelo ACC - Centro de Contrale de Area; em areas cxccdcntes ao contrale da torre, e em nivel nacional 0 controle fica n cargo do CINDACTA. aeron{lulic<lsde cOl11unica~ao. Estas areas SaO servidas par estac;oes 85 Urn sistem<1 de controladorcs oferecendo informa~Oes precisas, de vao tem por objctivo facilitar 0 trtifego, que possibilitem aos avi5es cvitar manobro.s perigosas, como pass~u por cima ou por baixo de Dutra acronave a curtas disHlncias au cruzar a parte frontal de cutro aviao inndvertidamente, por estar desavisado de que ele possui a primazia de pouso. Desta fanna, sendo a informa~iio mediada por oodas eletromagneticas, cnbe explicar de forma mais detalhada 0 p3pel dos radares neste processo de interc5mbio de inforrnac;oes. 3.4 ARQUITETURA DO SISTEMA Tadas as propriedades dos agentes no sistema de controladores de voo estarao implicitas em sua arquitclura. A arquitetura ora proposta. sell conjunto de modulos e as interar;ocs previstns devem prover uma resposta para a quesUio de como os sensores de dudos C 0 estado interno corrente do agente dctcnninam suas a~5es e futuros estados internos. A arquitctura proposta e de caniter deliberativo, eu cognitive, que e uma abordagem c\<lssicado Paradigma de IA (lnleligencia Artificial). 3.4.1 Descri,ile A des Agenles aeronave e a torre silo ~lgentes cmissores, que envirun sinais eletromagneticos, os quais retornando trazem inferma~oes como soJicita~ao de pause e 86 VOO,no caso da acronave e penniss;io ou recusa por parte on torre de controlcs, alem de justificativas e infonna~()es adicionais a respeito do tr:'tfego acreo. Tanio a aeronnvc quanta a torre de conlroies sao t.:'1mbem ngentes rcceptores na medida em que lroeam infonna<;~es, sugcrindo, neste proccsso, uma inter~19;1o intcligente entre os agentes. As informayoes companilhadas sao coerentcmcnte convertidas pelo protocolo KQrvtL e postcriormente distribuidas entre os agentes a lim de que efetivamcnte resolv;:l.ITI pela analise inteligente das infonnac;Ocs compartilhadas, nao permitir pousa se e convcniente Oll decolagcm. OU Neste processo de troea de infoTmac;()es, a aeronave solicita infonna90es sabre as condi<;Ocs de tn\Jcgo aereo. 0 agentc receptor, que e a torre, dispoe de infonnac;(')cs referentes fl aeronave solicitrlntc cm sua base de conhecimentos. vez lambem tcm conhecimento de que solicitac;;"iode infonnac;oes sobre diretamente a torre 0 c importante enviar Oll torre de controles limn tra!ego aerce, desla forma, pede pedir informac;oes de comandos. Se, no entanto. a aeronave ni'io e~;t{lcionte sabre que agentt!s possuem em Sllas bases de conhecimento a~reo, a A aerOlluve, por sua informac;oes a respeito do tnifego desconht:ce H1l.:iospelos quais possa sc cOl11unicarcom agcntes disponiveis pam resolver essa sentenc;a all problema (informar as condic;oes de lnlfego aereo), pode recorrer ao agentc facilitador. Desta forma, JKQML, protocolo de interac;Jo em JAVA n\ 0 agente fncilitador disponivel no auxilia na comprcl.!l1silo da mellsngem por parte dos agentcs. Para questionar ao racilitador a respcilo das condir;l'ics de v60, a aeronave usa lima perfonnutiva do tipo ask presente no JKQML. A performativa faz tim 87 moniloramenta dentro da base de c.onhecimento para dcscobrir que agcntc pode resolver a scntem;a, viabilizando uma rcsposta para a acronavc. Pazenda usa de performativa do tipo tell, rcpassa a mcnsagem para p:ua responder a sentcll\i=u 0 lima agente analisador, competcnte (X). Esse agente veri fica a posi~ao da aeronavc solicitante tal como das demnis aeron3ves na <1reade coberlura da terre de controies, que tambem solicitaram Oll in10 solicitar permissao de pallsa ou v50. Com base nas mcnsngcns tracadas entre todns as aeronaves e 0 agcnte receptor, C passivel a este agcntc autorizar decoJagem e fomecer justificativas. Se 0 agente analisador facilitador apes vcrif1car sua base de conhecimcnlos, comunicar 0 all 11.10 0 pousa au inform3 pcrmissao ao facilitador pode em seguida a 3cronave. Existem casas em que a auloriz..1.<;aoe negada par que existc outm acronave realizando as mesmos proccdimcntos. cabendo ~I aeronave rcquerente esperar pe10 momento oportuno, iSlOe, pel a ocasii'io em que 0 pouso possa scr realizado scm riscas de colidir. 0 processo e scmelhantc em situa<;iio de decolagem, pois 0 agente nnalisador pode nn.o forneccr nutoriza9ao de voo a uma aeronave, dcvido ao risco de colisao com outra que realize 0 meSIllOprocedimento. 88 FIGURA 13 - ARQUlTETURA Agcnte Emissor DO SISTEMA DE CONTROLADORES DE vao Agentc Receptor Rcccp~ao j Emiss5.o Rcconhccimcnto <--I co_m"~'_n~iiO_y Comunic:u;:1o t Accntc F:It'i1itador Agentc Analisador I Compara~:1o I An:ilisc I I COlllunic:1lj:io I Comunic:u;ao I I \ -------~ Con forme Illostrado na arquitetura sllpracitada. 0 proccsso de automa9~o envolve lim grande contingente de inform:.H;~esn sere-Ill suplcmcntadas pelos ngentcs: 89 A torre cleve responder a pedidos de pennissao para POliSO ou VOO- apos o processo coopemlivQ de analise dos agenlcs. A solicitm;:50 de permissllo (agente emissor) l~lcilitador, dentm verdadeiros. de pOllsa 011 voo cmilida a di[crentes agentes por pcla acronave intcnnedio do de lim tempo especificQ, devem ser As illrunna~Ol!s analisadas agente precisos e s:10: Posi~:1o c inten~oes da aeronnve; LocalizR<;fio de Qut11lS acronaves, em posic;oes que orere~am riscos para 0 trafego geml; Analise de pcnnissao ou ncgac;ao do pediclo de pousa au decolagcl11. A torre rccebe as infonna<yocs analisadas e rcmctidas pelos agentcs e as trnnsmite para a acronavc. Se Lim dos agentes (analisador), averiguando as informa.;oes disponiveis do ambicnte, concorda em permitir pouso Oll voo, csclarecc em que condi~oes isso paden'! ser feito~ em easo contrMio justifica-se,. 3.4.2 Onlologia Utilizada Um3 ontologia de line os tcrmos usados para descrever e representar uma :lreR de conhecimento. Ontologias inclucm defini~(jes de conccitos basicos no dominio, utiliz.t1veis por computndor, e os relacionamentos entre eles. EI3s codificam conhecimento em um dominic c tmnbem conhecimento que estcnde dominios. Desta ronna. clas (QrIlam cste conhecimento reutiliz[\vcl. 90 FIGURA 14 - DlAGRAMA DE INTERAt;:AO ENTRE OS AGENTES Analisador Torre de Controle - - I Facilnador IS iM!i'tiSa \ v ~ ~ 3.4.2.1 Performativas Utilizadas (register : sender Torre : receiver Facilitador : in-reply-to id I : reply-with id2 : language java : 0I1l0!Ogy trafego_aereo : contelll(illtcnsao _ voo )) (adverlise nos Agentes: - Torre de Controle e Facilitador 91 : ontology trafego_aereo : languuge, Java : content (stream-ali)) 3.4.2.2 Performativas Utilizadas nos Agentes: Facilitador e Torre de Controle (ask-one : sender Facilitador : receiver Torre : reply-with id I : hmguagc java : ontology trafego_aereo) (reply : sender Torre : receiver Facilitador : in-reply-to id 1 : reply-with id2 : language java : ontology trafego_aereo) 3.4.2.3 Performativas Utilizadas nos Agente: Torre de Contrale e Analisadol' (ask-onc : sender Torre : receiver Annlisndor : reply-with id 1 : klllguage java : ontolog.y trafego_aereo) 3.-1.2..lPerformativas Utilizadas nos Agontes: Analis"dor e Torre de ontr Ie (reply : sender Anulisaclor : receive.r Torre : in-reply-to id 1 : reply-with id2 : hlnguage java : ontolog. trafego_aereo) 93 ~ CONCLUSAO Com este trnbnlho rai passive.l fornecC'.r 11I11Rvisno dos intcr-relncionamentos entre as elementos de organizav;i de sistemas J11ulti-agentes. atnlYcs dos resultados de implel11enta~~iod'" um sistellHl de C'onlroindores de \"00 de carMer prototipico. 01 servou-se que para controladorcs de ve.o 6 indicael 0 usc de sisternas Illulti-agentcs em oposi<,'ao no RDP: porque est.e ("timo nuo asscguraria um controle global coerentt! ao sistema. Um SMA, por opcrar com base elll C'.ooperayi5es, interac;ucs e fluxos de conheciml.!nto entre unidades eli tintas 1)I;.~nnitc que a "Inteligencia" sistema seja aperfeic;oadH continua c proporri do nalrnent~ ao nlunerO de ·:entidnde.s" inteligentcs disponiveis. entidades estes que podenl sec acrescidas Cjuantiw.tiv:lmente n sistema. OLlseJn. novos agentes padem ser inscl'icios, que n arql.liteturn dos SM.As j{J. e tle-xivel. Dentro do. nbordagem de SMAs. optou-se pOl' ng.entcs cognitivos em oposi~ffo aos n.~ntivQs.Os n~ativos respolldem automaticamente cO£Jlitiv05 trot~mn informu oes j(l proce-ssadas, disponiveis no contexto de ambiellte 1 estimulos externos. mas as til de carMer empirico. as quais n;'\o cst€io e. isso~ parece sel' Inab adequado it proposta. c mnis segura tmnbeIl'l. QUlf fhtor deris' rio para a escolha cia nbofdagem ,'MA em RDP ll1e-m6rin dns n~oes ou de conhC'.cim~nt s. des.vnntag("lll em Hlce de SMAs. Casa QCOfmlU rotineim.s. riscos de acidcntt!.s Oll qllaiquer 0 e0 fmo de naa haver que consubstnnda grande situa~~Oesde v60 inespcmdas au nuo outra ndversidade que exija raciocinio hua tambthn de. serem Icvados em considemc;Jo os registros de c n.hecimento previos dos 94 agentes. para manejo e resolm;uQ satisfat6ria do problema. Agentes cognitivos aut6nomos podcm consultar-se mutuamcntc e recorrer a experit:l1cias anteriores para resolver problemas novos Pam 1lI11sistema Oll inc.sperados, negociando c interagindo dinamicamentc. de controladorcs de voo e tnmbem flcxibilidnde, descjaveJ capacidade de reerutar agentes para desenvolver tarefas dctermiI1<\das (tarefa que cabc aD agente fflcilitador do KQML) e capac idade de criar noyos agentes, ja que garalllir 5cgurun~a no trafego contcmporfll1co, principaimenle acreo e LIma necessidadc cada maior vez no mundo COIll 0 aumento de aeronavcs lrafegando. A c0l11unica9lto entre os agenlcs rei estabelecida com base no KQML que favoreceu os aspectos sintaticos relacionados a estrutura<;fio d05 sfmbolos de representn<;:1o, a semfintica denolativn da mensagem, alem do aspccto pragm<itico, pais, tanto os modelos cognitivos dos ngentes, quanto atuam, enconlram-se associados emissor, receptor, a pragmiltica e analisador teve 0 ilInbiente aereo sabre a qual de KQNlL. A comunica<;fioentre agentes grandemcntc reduzida sua margcm de ambiguidnde, j1i que 0 KQML, por intermedin das pcrfonnntivas cscolhidas, utiliza lima Iinguagcm compreensivcl por todos os agentes, principahnente cxistl:llcia de um agente faeilitador que negoeia os conheeimentos intermedin as mcnsagcns, al~m de rcerutar agentcs c cncaminhar ueste proecsso ate a base de conhecimelltos. 0 devido a e infonlKl<;oes, conteudo resultnnte a aperlci<;oando. Assim, as sistema de eontroladores de voo, a cada experiencia adversa, se lorna mais inteligente. A lingtlagem JA VATM conferiu uma mobilidadc certamcnte nao depcnder:i de um sistema operacional maior, pais 0 sistema espccifico, alem de possuir nmior mobilidadc no que sc rcfere aos ambicntes de conslruyao de agentes. 95 o prot6tipo cognitivos representayao em 1l10strou a elic{lcia SMA KIf. (ilbordagcm Lingu:1gem de do sistema. aplica~50 de COlllunic3c;ao A rlrticula<;Jo entre distribuida), KQ"NfL, junto agcntes Linguagcll1 de as performativas escolhidas implementados em JAVA H.i, parcce scr hannonica, cmbora ofcrcya scmpre resistencias c limitac;5es tipicas de sistemas multi-agentes, que por sua compJcxidade deve ser utilizado apenas em si!l!ac;tks imperativ3s. em que 0 RDP n50 corrobore para o alc:l.I1ce dos resultados almejados. 96 REFERENCIAS ANGELOTfI, Elnini Simoni. U[iliza~a() da L6gica Parco1l5isrt!lllC 1/(1 implclllcll/{Uylio de um Sistema .~flllli-Agi!l1IC. Curitiba. 2001.67 f. Disscrtac;ao (meslrado em Inform:itica Aplicada).Setor de Ciencias Exatns e TccnoI6gic:l!S, Ponlificia Universidade Cnt61ica do P;lnln3, Curilib:1. ANGELOTTI, Agt"lII~j CIII Elaini S. SCALABRJN, Edson Emilio. COllllmicac;{ia /1111 SiSU!111(1 de Agcntcs CognitiYOs. Curitiba, 19-. e BARBUCEANU, Mihai; fOX, Marks. COOL: A Language for Describing Multi-Agent Systems. Toronto, Ontario. In: Prct!ccC/ingJ of Intcmatiollal 1IIl1lli-AgclIISySlellls. Pages 17-24 AAAII MIT PRESS,1995. BARONE, Dante. Sociedades Artijiciais: P0i10 Alegre: Bookman, 2003. BOND, A. H. & GASSER, K,mfmann Publishers, 1988. in 011 JH(iquillas. M. Fisher. TlIfOrial: A /ingllagem JaWl de progrcl1l1w;c7o E. Riesbcck, Mc.DERMOTT,D, MEEHAN, J. Arlificial Intelligence Lawrence Erlbaum Associates, Potomac, Maryland, second edition, 1987. CHARNIACK, Programming. Patrick; ALLlOT, Jean-Marc; TOlllose, France, 1997. DURfEE, E. H. The Distributed Artificial S.M.C. p.1301-1306, Dezcmbro 1991. MOURLON, Intelligence Paul-Henri. Me/ting Pot. FfNrN, Tim; LABROU, Yannis, MAYFIELD, Language. IV1aryIandBaltimore County, 1999. James. KQML FlNfN, LABROU & MAYFIELD, KQJHL as Agen' Communication County, Coordination Con/nellCt! cia IIIIt!lig€lIcia elm A NO\'a Frullteira cllIre L. An Aualysis of Problems and Rt!search ill DAI. Morgan CESTA, Andre A.; RUBIRA, Cecilia Jam w, Campinas, Sao Paulo, '2000. DUJARDlN, Automation inlerar(io WI as WI Differ'lII Palits 10 IEEE Transactions on /1g~1Il Coml/lllnication Lallguage, Baltimore 1995. FfNIN, Tim; FRITZON, Rich. Illformation Ew:,:liallg;:. Baltimore GRANGER, Gcrnud; NICOLAS, for Free-Flight COl/flict Solving. KQML - A Language alld Protocol for knowledge & Paoli, 1999. Durand; ALLIOT, Jean-Marc; Token Allocalion Toulouse. Franya, and Strategy 1993. GENESERETI-I, tv[ichuei R. Knowledge: Interchange Format, Slnndford, 2000. GRUBER, T. R .. A trnnslation Approach lO Portable Onlologies. In: Kllolrlrdgl! 1993. Disponfvc! em: \V\vw.ksl.stn.nford.cdu. Acesso em: 11 Fev.05. AcquiJitioll. 97 GUHA, R. V. LENAT, Douglas B. Enabling ofth< A CAl. V. 36, n°. 7, Jul. 1994. HARMON, Paul; KlNG, Agents to Work Toghether. David. Como se Oesenvolvem as Gmndcs Sistemas Sisrcmas Espl!cialislas - A IIIft:!igJl1cia Artijicial Cht!ga Campus, In: Commllnication C/o Cognitivos. 11/: Merc:(I(/o. Rio de Janeiro: 1998. JENNINGS, Nichol"s R.; SYCARA, Katia & WOOLDRIDGE, Michael. A Roadll"'!, Ag~111 Rc.'w(ll'ch (Iud Dcm/opmr!1lt. Boston, of 1998. JENNINGS, N. Controlling Coopemtive Problem Solving Using Joill/Intention Artificial /1llt!lligclIce, 1995. MA YFIELO, James, LABROU, Yannis, FININ,Tim. Commullica/ioll LaJlglIgc. Computer Sc,ience and in: Industrial AllIltiC/gem Systems Emlualion of KQML Electrical Engineering as all Agl:lIt Department, University of Maryl""d B"ltmore County, 1996. NISSEN, MARK E. Kllow/edge-Bas~d Craft,1996. ReclIgil1t!erillg: From Mysll!riollJ Art to LUInlable LJUNBERO, M.; LUCAS, A. 1992. Tire 0.-4818 Air~Traffic; Marlagcmcm Sy.Jtcm. In Proceedings of the Second Pacific Rim International Conference on AI (PRICAI~92), 15-18 September, Seoul, Korea. PARUNAK, V. Manufacturing Erperiellce with the Contract Net. VoLl, ed. M. Huhns, 1987. REZENDE. Solange Oliveira.Si,rl..:mas Manoie, Illtelig(!1lt(!s: Fundamentos c Aplica.:;:Oes. Balleri, SP: 2003. ROCHA. A. R.; SOUZA MlIltiagcl1/cs. Disponivcl Jr. E. M.; ALVES J. C. em: www.comp.ufb..br/-undc~lIn/ia RUSSEL, S. , NORVIG, P. ArfijiciaIIJlldligt!llct!, series in artificial intelligence, 1995. Agt:llIes Illteligmtcs a l\'fodem e Sistemas .•_Ace5so: 12 de Jail. 2006. Approach. New Jersey, prentice hall Mlinindar P. Agent Commullicatioll L(lI1guagl!s: Rethinking Computer. p. 40~47. North Carolina State, Dec. 1998. SINGH, the Principles. In: SHIMAN, J.; DEMAZEAU, Y. BOISSIER, O. When Can Knowledge Bnsed-Systems be In: Proc. 9th Bra:ilioll Symposium u/A1'Iijicialllllcl!igcnce. p. 188192, 199 ..\.. Called Agents? SMITH, Reid; DAVIS, Rnnd~ll. Fral1/~worh for Cooperation ill Dhj/ributed problem SOBRAL, J.B.rvl. AgC:llt~s: C01lccitoJ c Principio.}'. Oisponivcl em: www.inf.uf.ic.hr. 12 de Jan. 2006. Acesso: SOh-illg, 1980. SYCARA, K.; DECKER, K.; PANNU, A.; WILLIAMSON, M.; ZENG, D. 1996. Distributed /Iltelligcmt Agents. IEEE Expert. 98 SCHWUTTKE. U. M.; QUAN, A. G. 1993. Euhancing Peljormanc(! oJ Cooperating "gents in Rcal-Tillle Diagnostic Systems. /11 Proceedings oj the Thirlcclllh Inl.:matiollal Joilll C01!fcrencc 011 Artificial ImclligcJlcc Menlo Park, Calif.: International loint Conferences on Artificial Intelligence. WANG, H.; \V ANG, C. 1997. ill/elligclIl Agel/Is ill 'he Nile/ear flllhulry. IEEE Computing. WE1HMA YER. R.; VEL THUIJSEN. I-l. 1994. Applicalioll ~fDi.lfriblll<d AI alld COOpc/'{/li,·. Problem Network Press. Solving 10 Telecommunications. Management, cds. J. Liebowitz; In AI ApproJches to Telecommunica.tions D. Prereau. Amsterdam, The Netherlands: :md lOS WEIHMA YER, R.; VELTHUIJSEN, I-l. A Mlilliagelll SY5/C1I/ for COll/rollillg Bllilding In Proceedings of the First Intemational International Conference on Systems. Mcnlo Park, Calif.: AAAI Press, 1994. El/l'irOll11lClItS. Muitiagenl A His/oria da 1}-tt/ego http/www.kenncdy.br/tmlullos/stnereo.itlmi. Radar. Disponivci eomando ..-lCrea liD Br(ail. Disponivei Acesso cm: 29 de r.,llai 2004. em: http://www.cint.cginr.orgldtmradar/inicio. Gem! de Apoio. Disponivel em: http://www.fab.mil.br. Acesso em: em: 07 Jun 200·-1-. Acesso cm: 09 Jun. 2004. 99 ArENDICl': '* AgenllnfoSubscribrr.j:w:I'·''I p3Cklltt com.ibnud.kqmls:ullpl~.t~\"CI; imponjO\\'3.Ulil.·; impon com.ibm.3CI.kqml.·; "demo UK import j:IV:l.awt.Frame; priV'3le booltJIl fOrevcr '" r.tlsc; prh';\IC long timeout; prh'3tc Convcn:lIion con\' = null; prh'ateObjC'Cta~ent"null: priv;\te Frame fr:lffiC; public AjO,ClltlnfoSubicribcr(ConvcrS3lion ronv, ObjccllIgent) { lupcr{conv, "getU, 0); ) public •.•• gcntlnRlSub'eribcr(Coln'i:'rsation con\", Object ~cnt, long timeout) { Itlp<"r{conv, atem, tilm:out); ) public A~ntlllfoSub,criber(Con"cn:ltion conv, ObjcCII.C.CIl1, Frame frame) ( lupcr(canv, ~CIlI. 0); this,fr:llnc"(ramc; ) public synchronized boole3n h:mdleRcsuII(RelumV:duc nn, Object a.;cm) ( SYSlcm.crr.primin("> AsclllinfoSublcriber.h:mdlt'Rnull cntc~"); ir(rtn.,etRclurnVatu~) inst:mccof Vector) ( A.ccntlnfo agcntinfo" new Agcnllnfo(); Vector A.1cntlnlOs '" (Veclor)nn.&etRelumVIlIuc(); Enumcr.uion cnum" :q:,cntlnfos.clemcnts(); while: (cnunl.hasMort:EIt:mcnU(» { 3£cnlinro - (A;cnllnfo)cnum.llcKIElememO; S)''Slclll.crr.println(''Asenllnf,)SubKrihcr.h:,"dleResuh~); S)"Slcll1.crr.prinl(" ••N:II11C: "); SY'Slcll1.crr.prinlln(llgcnlinfo.&CIAJ::,CntNamc(»); S)'Slcll1.crr.priut("·· URL: "); SYllclll.crr.println(ag.enlillfo.:.ctURLt»); S)"Stcm.crr.print(" ••ClanN:mlC: "); SYllcm.crr.]lril1lll1(:1~cntinro.,cICt\uNln\(:(n; «Tr:1\'clllrokcr) :lgcl1I).IL"IFr:tIllt.'(tlKldlk'tll(ascnlinfo); Tr:tvell3rokcrNolifyDial0' ding..1t:1rIO; ) rcturnlruc; ) rclurnralie; dil\g = lIew Tr:lVcIBroh:rNotiryDialo,~frllmc); ,, I' ,\irFr:unc.j:l\·:t"'1 . p3ckll~c com.ibm.Ilcl.kqmtumple.1mvcl; impon com.ibm.acl.kqml. '; impon j;w:!..Iang. '; irnponj;l\'a.ulil.'; importjava.awt.'; imponjll;\,·:t.a\\1.imagc.'; imponja\'.1.io.'; pr!\,:lIe Lin flI&hISched; /I LIS! box; prj'l'lIlc Vector fli;hlTablc = null; If real service lablc private Label ni;hISchcdLabcl; priwllc Lllbellit[cL:tbcl; private P:Illc1 northl';l;t\cI; prl\':tle Airline "\:CIII; prl\'(\le TcxtAr~i1 IcxtArclI; II for lyUcm log pri\":ttc ""erlU fi!':~lcl1u; pri\';llc ~'cnullcm quil; privatc ~lenuBar mcnuB.u; pri\";llc Bunon del3y; rrivJ.lc GridB~LA)'OUI ;ridbJ$; pri\'IIlC GridB",Conw.titUs ,ridBC; public Airframc(Slrins litle, AirLinc~cnt) ( super(litle); this.:a,:clII-",cnt; ni~h(Th.ble - :a~nq;eIF'i-'ItT:l.blcl); IImcnucn:;lIion fileMcnu - new Mcnul"File"); quit'" new Menullem(~Quit"); menuB::Ir- new 1\lcnuBar(): fileMenu.ladd(quit); menuOu.:.dd(fileMenu); sett>.lenuBar(mcnUOaT); I' II sY'lo:texl ;arel textArcl - new TextAre3(): IcxIArc:l.minirnumSizc(400, 300); textArca.pre(errcdSiu(400, 400); lexIArcl.UIB:.ck£1Ound(Color.white); lexIAn::uetEdit:ablc(fnlu); ,/ I/service tabtcconslructioll llig,htSched - new LiSI(20, (.I15e); OitilISehcd.minimumSizc(20); II 5 rows ll00doo. nightSched.pre( •.. rrcdSizc{20); mg,htSehcd.lCtFont(new FonWMonOlpxcd~, Font.BOLD, 20): IIfli£htSchcd.K'IFonl(new fonl("Courier". Font.PLAIN, Ill); ni,htSchtd.,ctBackjround(Color.white); Enumcr:ation enurn::t ni;hlTable.dcment~(); whilc(cllum.hns~loreElcm~l1Is(» ( thiuddlli!m«Fli;Jltln(o) ellum.nexIElcmCtlt()); I lligJltSchedL;tbel ". new Labcl("FliJi,hl Schedule"); llidltSchedL;tbel.scIFllnt(new Font("Serif', Fonl.BOLD, 20)); IIflighISchcdL:1bel.sctFont(ncw Font('limCl", FonI.BOLD, 16)); dcl:\y" new BUllon("DeI~)'''); titlcLnbcl ••new L:\tx:I~litle); titleL:sbel.lctFonllncw Font~"SaI1SC'rir', FOIll.IlQLD, 36)); IIlitleL:'ibel.sctFont(ncw Font("Hel\'\'licOl", FOIll.PLAIN, 36»); titlcL:sbel.lcIFore:round(ncw Color(60, 170,60»: II green northl':!.ncl- IICWP.mclO; ,ridoo.g '" ncw GridB:s;L:I)'OutO: tridBC ••ncw Grid0:ttCotlStrnilltIO; nOr1hPl\rtC'I.setL:s}'out(j;rid~); gridBC.~ridwidth = GridB",Constl'J:ints.RE~IAINDER; gridb3g..scIConslraint1(lilleLabel, ,ridBCi; nonhPanel.l\dd(tillcubcl); UidBC.cridwidth = GridB~Conltr:aints.RELATIVE; SridBC.:snchor ••GridBO\J;Conltrnints.WEST; tTidBC .•••• "CiShlx = 1.0: ;ridI3C .••••. ci,hly ••1.0; Srldba.l.scIConSlrnlnts(f1r!;htSch~dLabcr, r.ridBC); nonhP"nel.;add~i1 ithlSchcd Label); gridBC.,ridwidlh'" GridB:a-,ConstT1lintl.RE}"IAINDER; yidBC.:snchor" GridB3gComtT:sintl.EAST; Jl'idb~JCIConltn.ints(del"y, VidOC); north Pllnel.add( delly); &ridBe.anchor '" GridlhgConstntinlS.CENTERj gridBC.fill"" GridBlsConstrnints.130TH: grjtlb~.,cIConstl"",inti(nilhtSchcd, ,rid Be); nonhP:mcl.3dd(fli&.htSchcd): nOnhP4ncl.set03Ckg.round(Color.whitc); 3dd("Nonh~, nonhl':mcl); 3dd("Ccntcr". n;~htSchcd); ""'(l; resize(450.500): } public \oid Ict~lcu31O«Strin, 11111:){ ICXIAn:J.3PpclldTcxt(mlg + "\11"): } public void addltem(Fli(:htlnfo flis;htlnfil) { if(n;~1I1'1tbJc -- null) nighlThblc '" new Vector(); II for tC11 StrintBuITcr sb-ncw Stringllurr"'r("): Strintc!usI1Jrne; String3r1; sb.inscrt(O, cI:lun:lrnc - new String(fli~htlnfo.ccICarTicr())); Ib.inl~rl(5, d4un:l1llC'" new Strin~tIHl:htlnfo.c-ctFliliht()l): sb.ini':rt\ 10, cl~HJHtmc = new StrinC,(flightl"fo.,.cIDepJTture())); Ib.inS<'rt( 15, clusni1mc -new Strin};(f1i,htlnfo.,clr\rri\·al())); sb.inscn(:~O. cbun:lrne - new Strinr.£m~htluro..J;ctDcptTime())); fli£lltSchcd.3ddltcm(sb.toSlrirW).!rim()); II m,htT3b[c.3ddElcmcnt({1ightlnfo); } public boolel.n hl.ndIeE\'ent(E\'(~nt cvt) { if(cYt.id = Event. WINDOW DESTROY) { System.cxil(O); } cliot if(c\'t.id - Evcm.ACTION_EVENT) ( if(cvt.\3r,cl-quil){ Systc:m.exit(O); } clse if(C\·I.tIHg.ct".". dcl3y) { inl sclectcdlndcx; if«(wloctoolndcx - fliilIlSched.:,etSclectedlndexO)!'" -I) ( Fli£htlnro flilOhllnfo'" (Flightlnfo) fli~uT3ble.eklllcllt.o\t(sdectcdlndcx): StringBuITcr sb"'IlCw Slrin,;l3uff.:r(" ~); ib.in.-.:rt(O, new Slrin~(niShllnfo.!l.CIClrficr())): ib.inlcn(5. new Strin~fli"htll1fo.S."'IFli£:hL(»I; ib.iracrt(IO. new Slring{f1ishtlnfi>.;etO<:!>a.rture11)); sb.irllcrl( 15. new SlrinJ;(/lichtlnfo.getArri\'a!l))); Strine dcptTimc - f1i"lIlnfo.£~tDcpITilllcO; ~lrin;nc ••••. DeptTimc; ir(depITinte.cndsWilh(~At.·I~» { nc ••••. DeptTime new Slrin:(dcptTirnc.subitrin!l(O. d('JlITil1le.lastlndc).On~A~I·» "PM"); } cl~ if(dcptTimr.endsWilht"PM")l{ newDcptTintc new SlrinJ;(dcpITimc.suburin!>l,O. deptTirnc.l.ullndcxOn ~P~IM» "A~I"); I elle { ncwDeplTirne - dept'finrc; } sb.insert(20, ncwDcptTimc); ni~I'IIJ,fo.seIDcplTimclncwDcptT'ime); flithIT3blc.~tElel1\cntAt(fli.vrtlnro, seiccloolndu); nighISchcd.rcplxcllcm(sb.loString{), se!ecledll\dc.x); fl i£htSched.sc leel(" lccted Index): ~enl.upd3IeSchcdule(f1i,htlnto); } relUrntruc: .•. + I r~lUm lu~r.h:lndleEvenl(C\1); } 1/ (or tell public 51.1lic\'oid m:ain(,Slrindllll'gs) AirFl'llme (mille" new r\irFrJ.l11c(~Airline·A". null); (r.ame.3ddlh:m(ncw FliJ:hllnfO("JAL~, frl1mc.addllcm(ncw { "123". "NRT", "JFK", "03/21197 A~lftl); "32r, "NRT", "COG", "03121197 Mn); Fli~lIlnri)(" JAL ", "513", "NRP, "lHR", "03/21197 A~I",); Flighlinfo("JAL", "623\ "NRT", "SFO", "03121197 Ar.I")J: Flightinfo(,"JAL", "(1)\ "NRT", "SFO", "0]/21197 A, I"»; Fli&;hllnfO("JAL", "723", "NRT", "SFO", "03121/97 Al'.l")); FlightlntO("JAL", "613", "NRT", "SFO", "0]/21197 A:-'I")); FliiOht[nfO("JAL", "621", "NRT", "SFO", "03/21/97 A:-'I"); fli~htln(o(" lAL", "622", ~NRT", ~SFO~, "03121197A1-.n); Fli,hllnfo("JAL", "625", "NRT", "SFO", "03121i97 A~I")); FIi&hllnfo("JAL", "626\ "NRT", "SFO"', "03/21,91 A~l")); Fli~ltlnrorJAL\ frn.me.sddltem(new fmme.3ddllcm(ncw fl'l1.mc.addltcm(new fr:\l1\c,lIdJlli:llI(lICW fr.1mc.llddltcllltnew frJ.mc.3ddllcm(ncw fl\lrl\c.addltcm(ncw (n;me.sddllcm(ncw (n:me.l)jjdllem(new rr:ulle.Jhow(); I I ,.,\irLint.j:t\'I1·1 (l."lCJr,:'te eom.ibm.acJ.kqmlumple.lr,-"cl; impon com.ibm.acl.kqml.*; import com.ibm.3cU:qml.inlcrprclcr.*; import com.ibm.acl.util.*; importj:t\'3.l3.nr:.*; importj:t\':l.io.*; imporlj:l\':l.nct.*; imponj3vOI.ulil.*; '" • This ~gcnt hnslhe rc(;:rcncc o(KQMLM3.lllser, • this agent is KQl\IL-Spcakablc. " protect<XI KQML/l.I:tn~cr ~h1n3!;Cr; '"* ,,£.cntn:tmc " protected 1** String llgemN:lI1ic; . • loe:tl hOSln:unc (kip fi>rm:u) " protC(;tccl Sirinj; locall-lost; '" * (~ililltor " iSddreu(ktp prot~'Ctcd SIring ,,, • receiver " protccted addrcu Slrin~ (onmll) (tlCilit:ttor; of rm abcnl th:1I e:m be inscrud fe«i\'crAddr; I"~ * Ureeyclt'lD " prot~ted Strine li(~-..::ydcID; (\..IP form:tt) /", , )'tllo ••••. p~elD " protected Slrin!: yeltowp;1JteID; '" f(r;tllle " protected AirFrame (moil,'; '" • pon number " proleC"lo:d protected in! pon; V«:tor nig.htT;\blc - new VOCIOr(); '" • Constructor , @p3ram " public port lOCket port number. AirLinc()( :t1l!\Ct_travcl.lC1FiillhITablc(fli,htT!tble); } public V~lor :elFIi~ltTablcO ( rClumflillhlTlIblc; ) public KQf',ILt.13n:tgcrgctKQ~ILt.l3n2:er(, relUrn~"'l:m3x.cr; } { /"' • Tr;wcl Bro\..er registCf on Li(,:C),dc 'sccmHjo(2I).t.(21) " prolL'CIOO \'Oid sCIRe;,iltcrL() ( KQML kqml '" new KQMLO; Slrin.c rw = new Slring(kf'.l:tn3g,cr,[c1inili:iIIDO); \..qml.,etl'erfomI3ti\'C("rct;il1cr"); kqml.Sc!IP:ullmclcr(":n:lnlc", :l.tcntName); L:qml.sctP;lr:1mcter(":~fldcr", loc'JIHou); kqml.setP3I'3mctcr(":recei\'cr". r.ICilillllor); i.:qml.leIParnmcu:r(":rc:pJ)'-with",rw); kqrnl.1eIP;t.r;amclcr(":lnnli:uOIj,;c", "anACL "); kqml.sc!Pan1me!cr(":olllolo;y", "Iifcc)'cle~); kqrnl.scICOllh.'IlI{"{:cl;lU :u\:\CI_travcl)"J; COIl\"crs<Ili011conv-"l1ull; "Y( COIIV" , (Collvcrs:lIioll) kto.lnn:t\Ocr.Kndi\ku.l,;c(kqml); } c.llch (ScndF:liledEx«plion ex) { ex.printSt3CkTmce(); } catch (Inv011idFOnJl3lExccplion ex) ( ex.printSl:11ckTr;lcc{); } c01tch (Inv01lidMcss~Sequcnci:Exccp(iOl1 ex) ( t'".printSll\CkTf3ce(); } c:l.lch (JKQMLExccption ex) ( c.x.printSI:ackTrJCc(); } conv,,-ctRC1ult().w:l.itFor{.J5000); RClult rei = conv.lOf'tResultO; if( rcs.isAv3ilJblc(» { RcturnV:lIuc nn ••(RctumVllluc)reI.&ctRcluIlO; if(nn.isOKO)( lifcc)'ckID" new Strin,«Slrini)nn·Il~IRclumV3Iuc()); prlru("rcgisler: " + Iif~'eyclclD); lelsc{ Sysu:m.crr.prinl1n("lcIRc$.islcrLO Syslcm.ar.prinllnC'lcIRcgilh.'rl() :Error in rccimred :" + prcx:eSl"); 104 (Strins;)rltl.J;.etReturnV:tluc(»; Systcm.cxit(-I); } } else { Systcm.err.println("setR~i~lerL() S),stcm.cxit(-I); :Error Result isn't :tvlj[~blc"): ,.. } • AirLine rc.:ommend-onc:![nsent)'dlowpa.sc) • sccn:lrio (22)d! (29) '/ public ,'Oid sctRecol1lmenoonelnstnYO ( KQI\·IL kqml ••new KQML{); SIring rw ~ new Slrinl!(k}'I3.n1l&cr.t<!tiniliA11D()); kqml.sctPcrfonmltivl'("rccommcnd-onc"j: kqml.scIParamclcr(":nl.OlC",3!cntNl1mc); kqml.scIP:uounc.I('r{H:scnder",loc;llHo!it); kqml,sctP3r3ll1ctcr(":recd\,cr", (scililllor); kqm1.SC1P ••• rll.mcler(~:rcply·with", rw}; kqml.scIPIl •••. nu!lcr(":13ngu:lSc", "KQ1\1L"); kqml.scIP:trametcr{ ":onloIOIY~, "!.qml-ontology"}; KQ~·IL kqmU '" IICW KQML(); kqml i.tctPcrfonn:l1ive("intert"); kqmCi,lcIPIlTl\l1Ictcr(":scndcr",lonIHost); kqmU.letP.u:tmcter(":llln~u3.S'e", ~lnACL ~); kqmU.,etP:u"metcr(":Qntolo,\;y", ··ycllowplJ;.el"); String content = lIew Slrln.£( "(:c(lce:ory" +~\n"+ " :subC"cCtory" +"\n"+ ":elus" +"I,n"+ ":n1l.mct }; kqrnl_i.lctContent~.:onlenl); kqllll.~tContelll(kqml_i); COIlVt'~tion cony '" nul!: ''l'{ conv= (Con\"CI"13lioll) k~Ianlgcr.sendMeJil!.~kqml); } pleh (SendFnilcdExccption ex) ( .:x.printSI;\CJ..Trlt'C;\); } catch (lnv",lidFomllIExccption ex) ( eX.prinIStockTnK't10; ) catch (Inv:didMesus.eSequenceException ex) ( c·x.prinISt,\Ck'fl";\CCO; } catch (JKQMLExceplion ex) { ex.printSlockTrxeO; } eonv·aetRc,ult().waitFo.r(45000); Rcsuli res = conv .• cIRc,ul!(l; if( rcs.ilA\'3il:!.bkO) ( RcturnValuc rtll '" (RcturnVnlue)rcl.$o:tRuu!tt); i(nn.isOKO.l{ print("rciu!t nluc:" + nn.l:ctRe!UrnValm~().loSlrin£(l); KQ~IL kqml_resuh = null; 11)'( kqllll_mull = new KQ~IL{nn.,ctRcturnV3IuC(,).toStrinG(»; } c:l.tth (NOILi5lExceplion ex) { ("x.prinlSt,lckTrJcc(); SYltem.cxil(I); ) C":l!ch (~I"lromledSExpru~ionEj\,cplion c:~) { cx.printStBCk:Trxc(); Sym·m.cxit{I); } 105 1/ reserve :Wdro!U of 3£.::nl Ih3\ can be inserted ~ei\'1,!rAddr "" new Strins£.kqm'_rewlt.,ttPAr.\llIth:r{":rt'ccivcr"»; ) else { SYi(em.c:rr.println(~letRecommendone[nscnYO: scenario l22129)"); Srslcm.err.prinlln(~~IRt."Commendondns.ertY(l :"+ (Strint::)rtn.a:,etRclurnV:duc()}; Syttem,exit(-I); } } die ( SYllcm.err.printlnCsctReeommendonclnsertYO S)'tlcm.exit(-I); :Error Result isn't :l\'3il"blc~); I '" ·AirLine~\'ertilcJiUk-lll(tr:l.\'tI) : Sct'nuio (26).l ~33) " public void K'IAd\'eniseBrokm.llA5k11I1T() { KQML kqml" new KQt.1LOi Siring I"Y\' - new Slrint;{kl'lbn~er.tct[nili"JlDOJ; kqrn 1.lcll'erform:ui\,c\ ~3d\'trl iteM); kqml.UIParnrnclcr(":n:lme",I.!::cntNlme); kqrnl.SCII':II'"mcttri.":Klldcr",loclIHott); kqrnl,lctP:lmrncICr(":m::ci\'cr", radlilllor); kqmJ."->tPilr:uncter(-:rc:ply-with-, ""); kqml.sctP,u;unelf:rl":l:tntU1,:e", "KQ~ lL~); \.;qml.sctl"U'3I1lC1er(":onlology", "kqml-omolocy"); KQML \.;qmU zt new KQ~Il.(); Lqml_i.K'IPcrrorm:ui\'e("nk-311"); kqml_i.seIP3~metCr{":lCnUd', r.w;ililJ.lorl; kqmlJlcIP;J.r"me1cr(":rttei\'cr",loc:al~lo't); kqmU.Je'lp.,r.smC1crt":in-repl)·-lo", rw); kqmU.sctParnmelcr(":l"'n~u:l~e", ":anACL M); kqmlj.sctP"r;tmctcrt":onloloty", "m.\'CI"); Slrin~ conlelll" new Strin~ "(:c:mier" +"111"+ ":f1i.ghl" ":dcp3rturc·' +"'n"+ ":lrriVll" ," :deptTirncJ"); kqmlj.KIContcnl(conttnl); kqml.uIContclll{kqull_iJ; COIl\'cru\ion eOI\\':O null; +"\n"+ +"\n"+ If)'{ conv· (COlwccutiofl) )':f.,l:an;!!;cr.knd;\lcu~:(Lqml); } (':aleh (ScndF:J.ikdEl.ccplion ex) { c:<.prinlSt.),CkTI"3~); } !;';'Ilch (In\;'ilidFon\l;tIExccplion ex) { eX·I'fintStloCkTr.KC(); } catch (Inv;'llid1\lc'J3;eSeq~rn."CExcqxioo ex) { ex.prinlStxLTr.\C~): } c;ltch (JKQ1'.ILExct'ptiall cx) t cx.printSlloCkTn.cc(); } conv.c.cIRclult(J.w;'IiIFortO): } '" • Airline :W\'crtis •.:/subscribc.J.sk.:1I1ltr.m:l) 'lCi!n:uio(27)1:. (34) " public void sclAdwrtilcSubAsklll1TO { KQ1'.tl kqml = new KQMLO; Slrin:; rw -new StrinAA""'IO\ll~r.:cl[niti3.llD(»; 106 "qm l.sclPer fonnati"e(~1d \'Cnil(:"); kqml.sctP,m.mctcr(~;n:unc". ""cnli'::unc); kqml.leIP\lramelcr(~:1tnder".loc!l.IHosl); kqml.~IP~r.\mCtc:r(~:rcccj\~r~, fu:ililltor); kqml.sctPar3JnClcr(":rcply-wilh". rWI; kqml.tctP:ul1mctcrt":lan,ullJOc", "KQ:-'IL"): kqrnl.~IP!'lr.lmclcr(":omolol)'·, ")"qml-OIIlo]oiY"); KQML kqmU:II new KQ1I.IL(); k.qml_i.setPerfonnali\'er!ub~ribc"): kqmU.sctPan.mctCr(":K-nder", (.lCilil!llor,; kqmU·K'IP1ramclcr(":recei\'cr"',loc!l.IHMt); kqmU·So:IPluamekr(":in-reply-\o", ""'); kqml_i.leIP!'Il1ImClcr(":lan£u3tc", "KQt-.IL "); kqml_i.sctPllr.J.metcr(":onlo]oty", "kqml-onlolo&y"); KQML lqmUi ••n~w KQMLO; kqml_ii.setPcrformati\-e{"uk-311"); I..qI11Ui,scIP,lrametcr{":senuer",r"cilit:ttor); i.:qmUi.lctl"'Ir!lmctcr(":receiycr", ]oc:tlHoot); kqml ii.setp.,~melcr(":ln-rcpIY-lo", rw); \.qmCii.sctPJr;mlctcr(":j"nGua~ ..c". "snACL "); kqmUi.k!tPllr;lmetcr(":ontolo~~, "tr.lvel"); Strine comcnt = new Strin~ "(:c;trritr" +- \n~+ ~ :fHl:hl" • :dtp3nurc" +" \n"+ ":.trrhlll" " :dcp1'Thnct ); +~ \ll~+ +" '11"+ kqml iLsetCOlllcnt(content ; LqmO,sctContent(l:qmUi); kqml.sc.:tContcnI{l..qml_i); COIl\'eN:ltion conv" null; Iry{ conv'" 1Con\,erution) l:~lIn~cr.lCndl\1em:&c:(kqml); ) (,ltch (ScndFailedExctption cx) { elt,printSI~kTr~ct(); } cltch ([n\"didForrpzuE:t.ception ex) { cx.printStllCk:Tr\l~); } p,tch lIn\';l.lidl\leUl\:cScqucnceE)l'«pliQ/I exl { cx.printStackl'mcet); ) (':tleh (lKQ~ILEx«ptiOf1 ex) { cx.prinIStKlTr.\C'C(): } cOllv,;ctResU[tO,WlitFor(O); } public \'Oid upd:ucSdledulc(Flir.htlnfo ni~htl ( KQ~t1 •.kqml :::> new KQML(); Strin, rw:::> new Slrin~{I.:.\hnl:.er,tetJnitiOlIlD()); kqrnl,scIPcrfonn:ui\,c("insert"); kqmJ.setParametcr(":nlme" ••senIN.me); kqml.tctP:munctCri":sendcr",loclIHosI): kqml.sctPJl'all1etcr{":RCci\'ef",loc31Hoit): kqml.seIP:mlmctcr(":l\:pl}' ..wilh~, rw); kqml.seIP~r.lmeter(":lln:u3.i:c~, ~lnACL "); kqml,ICIPOlT2mctcr(":olllolo:y", "tr:awl"); SlrinlCOlllcnt •• new Slrint(,"(:c3rrier" + i1iShl.l;etC-~uricr() + "\n" + " :ni~l\I M + Oighq:CIFlif,hl{) + "\riM + ":dep:\nurc\"" + IligJll.£,et[)(p.lrlllrc()+"\"'n"+ " ::\rri\':\1 \ •.•.+ f1i:,ht.tetArrivJl0 + "\"\n" + " :dcplTimc \.••• + f1i!;htgctDcptTimeO +"\")"); L'lml.S(!\COllIC1lI(COlllcnt); 107 .. ConvcrI'3lion COllY" null; try { cony· (ConvclUtion) Ir:.l\lana.~cr.stnd~leul.se(kqml); } C';'Itch (ScndF.tilcdExoeption c:(} ( cx.prinlSt~kTrxf'(): } c:lIch (In\,JlidFoml:1tExccptiOll ~x) { t'x.primSlld:TrX'e{); } ~Ich (1""llid~lcsugeScquenceEXC'(ptiOIl ex) ( cx.prinIS1.lCkTra...--c(); } c;l\ch (JKQ~ILExcq)[jon ex) ( .:x.printStxkTra«(); } if(conv·-null) S)'Stclll.err.println(~AirLinc.updltcSched: lend intcn pcrform:lli\'c ) / • print fOr dcbu~. , @PU(\II\IIISJ:: print rI1esu~e ,/ priv3te void prinl(5tring mse) ( ifO':'Qr-.ILMana:cr,dcbur) ( S)'1ICfll.crr.println("AirLinc." + m5~); ) ) I '·AirLincA.j:u':t-' pxkacc com,ibm.acl.lqrnlS3mple,tr.wcl; import com.ibm.xl.kqml.·; import com.ibm,lK:Uqml.intcrprctcr.·; inlpon com,ibm.acl.f.tcililluor.F.t>:ililollorPropertk-s; imponj:wJ..Ian,,·; importjo.\'~.io.·; importj:l\'~.net.·; importj:l.\'~.util.·; '" • Constnktor • @p3r~m port socket port number. " public AirLincA(im porI) { supcr(); this.port - port; F3Cilitl!.torl'ropenies rp; try { fp = new F<\CiliulorPropcrties{); } c3tch (IOExccption ex) { cx.prinIStxkTmcc(); return; } rac:ililltor - rp.EetOncURL(~klp·); ir(r~ilil:lIor""null){ print(w no kIp rltililalor rl>und, system ~xh!"); S)il~lIl.exiltl ): } 3.;,entN3.me - new StrinKe jAL ~l; print("pon" + pon): try { InclAddrcu home - IncIAdJ~ss.&(,ILoc"'lHost(); SlrintBuffer bur= new SlrjnsBuffcr{~1..1p:l"); buf.3!)1>cnd(hol11e.s;cIHoSlNll11<.;) + ~:~); btl r.:lppcnd( Intc~er. lOSIrins(pon l); Joc3JI·lost ••new Slrintl.bur.tnStrin~)); } c3tch (UnknownHonExccption e) { S)'SI~·1I1.crr.printlr'l"Ullknown HOJIN'.amc"); r.tilcd~~ 108 System.exit(I,; } /I initi~lize d~l~ base fli,hITlble.:WdElemcm(new Flithtlnfo(~JAL", fli"ltTablc.:wtdElemcm(new Flithllnfo(~lAL", m,htTable.lddElcment(new m£,hIT.tble.:wtdElement(new "123", "NRT", "JFK", ~03121197 A~I"»; "323", "NR"r, "CDG~, "03121197 A~I"»; FliP11Info("JAL", "S23", "NRT", "Ll-IR", "03121197 AM"»; Fli:,htlnfo("JAL". "623", "NR"r, "SFO", "03121J97AM"»): if( -I !"pon) { kManater - new KQ\IL~lanlScr{Q£enIN"mc. fBme = ncw AirFramcrAiriine-A", this); (r:lme.show(); /I scenario - (21) c,dl Airline method iCIRecillerL(); 1/ sccn:Jrio - (22) call Airline mellloo. K'tRcCQmmendonelnsenY{); IIk'eTlario-{2-1j ICtlnsenYO; 1/ scenario· (::6) c;dl Airline method sctAd\"enilcl3rokc:r<lIl,\shlIT{); /I scenuio· (27) ull Airline method lCtAdvenilCSubAshllTO; "kip", port); I I ,.. • AirLincA Insert(ydlo\\p3:Cs) • sccn:lfio(24) prh"lle "aid sctlnscnYO ( KQML kqrnl '" new KQMLO; Slrin! rw" new Slrins(k}'l:lIl,,:er.tctJniliJIII~); kqml.sctPerfonn:lIi\"c("insc:rt"); Lqmi.lctP;J.n.IllCtc!,(":nlnll!", J.CIIIN:UlIC): kqml.lCtPo1nmetcr(":Knder",I0C3IHoll); kqrnl.ICIP.IrOlnlC1crt.":rccch'cr~, rc~i\'\.':rAdJr'; kqml.SC1P3nlIl\Clcr(~;rcpl)'·wilh", rw): kqml.sctP.ullmeler{":IIIns.u3~e". "llnACl"); kqml.letP.mulletcr(":onlolo;:y", M)'ellowp~c,"); Slri11, content = new SlrinJOi "(;Pro\'iderNJ.tllc \"J!l.p3n Air Line\"" H:ulesol')'t~\'el" ••:subC'ICE(lry 3irline" ":d;lj,S;1r1Xt tr.t\'cl" ":namcJAL" ~ :I:tntu~c 3nACL" " :Onlotog,y lran~lt ); L:qml.~tConlenl(conlenl); Conyerntion COO\' - null; try { cony'" (Con\'C:f'S3tkln)L"I:tn3J:cr.lClld}'h.~{kql1ll); } e:llch (ScndF3ilcdE)'ccption ex) ( c:x.primSlxk.Trxe(); } c;lIeh (InnlidFoml:uException ex) ( cx.printSI.d.:TrI\o,,~): } C31Ch(In\'alid~lc'n.-.cSequellccExceplion ex) ( ex.prlmSllld,Tr;tCc(); } C:3tchl1KQ~ILE)"ccplion ex) ( ex.prinISI3CkTmcc:(); } conv.,ctRcsulttl.wJitFon45000); +"\1\"+ +''\n"+ +"\n"+ +"\n"+ 109 Rc,ult res = conq~cIRcsuhO; if(r;:s.isAniI3ble(»{ RetumV3lue nn - (ReturnValuc)rcs.j;<.:tR •. -su!tl); if(nn.isOK(» ( )'~lIowpa;elD = new Strin£(lSlrin.s)nn.gctRclumV:lIue(»; print(~}ello"'l»-gc: + ytllowp~cID); ~ ebe { S)"slcm.m.println(~KtlmcrtYO: ICcnario (24n; SYllcm.c:rr.println«Slrin;lrtn.j;elRclumV:duc(»; Syslcm.exit{-I,; ) }die{ SYilcm.c:rr.primln("lCllnscrIYl) :Error Retult iin't 3\'ltih\bJe"); SY1lenl,c:xit(-I); R J J /" • print fordcbu!:. 'iI1ruamnngprinllllcul\gc ,/ pri\'llC void prim(Slring, nlIC) ( irIKQ~ILM~n:ls;er.dc:buy) { System.c:rr.prim[n(" ..•• irLillcA.~ + ml.~); J J '" 'ntlinroulinc • p;tT,1n1ar,lU port numb4:r. The dc:r;1U11 number;s 3001. '/ public n:uic \"oid nlllin(Strin;; 3r;s[J) ( int port-lt02; SlrinaulllgtInew Strint(~U~c:: AirUncA [-tnscc] [-port <port.¥>] [-heir)"); int .1.flC" :tr,s.l~n;th; for lint i" 0; i < :11;":: i++) ( I'l'l if(:tr;.s(il·cqU11J(".tracc"l) { KQf>,IU.!Qn~~r.debu:.;;; Ime; I else if\3.rv[ij.cqu:tll{"-pon"» { pon = Inteter.p3.l1cllll(3.rc.I(++i]l; } c!iC ifi:ll'll{ij.cq\lnlW-help")) { S)'tlem.('rr.println(ul~e): S)'$Icln.cxi1(O); ) che t S)'itcln.l:rr.print!n(u~c); S),stl:ln.txi1(I); ) } c3.lch (ArrJylndcxQuIOfBoundlExceplion Syslem.crr.prinlln(us3..l.c); Sy"C'm.txit(I); J ;:ltch (NullIixrFonn:tIE:tc.:plion IIf.::) { SYllclIl.crr.prinlln(us:q;e); S),llcm.exit(I): J J AirLineA 3.PP" new AirLincA(pon); J J '·AirUncll.jan,,·' p:w:"~c eom.ibm.xI.LqmllJlllp1e.Ir:tvcl; impon .:orn.ibl11.acUtlml.·; impon com.ibm.ad.k'jrnl.interprclcr. '; impon cOIII.ibm.:ld.filCilit"lor.F~ilit"lorProJll.'rtiC"S; imponja\,:I.l:lny.·; imponj3\'a.io.'; e) ( 110 importjav;t.ncl.f; ;mportjs\,:!.ulil.·; /"" • Conuructor • @PJrlm port wd:1!1 port number. "/ publk: AirLineB(im pon) { this.pon ••port; F:w:ilillllorPropcrticl (II; t'Y{ (p - new FacililllorPropcniclO; ) c:l\ch (IOExceplion ex) ( cx.printStl1CkTr1oCe(); return; J f\lci!illlOr ••rp.~tOncURL("l.:.tp"J; if{f;&cililJ.lor ='* null) { print(" no kip (01CHit:llorfound, system exit!"); SYltem,exil(I); J agcmN:unc'" new SlringCANA"); primrpon" + port); ''Y{ InclAddro!u home = IncIAddrcsl.~ct~II·loIIO; Slrin~l3uffer bur= new 5IringBuffcreI..1p:lr); bUr.lp~nd(homc_lcIHOIiIN:lme() + ":~); buf.llppcnd(lntccu.loSlrintlIXlrt»; loc:all-lol' = new Slrin,:(buf.toStringO); } (,31ChlUnlmownHMtException c) ( Syslcm.err.prinlln{"Unknown !-!oIlN:une SYJlcm.exit,(I); M ); J II initi.1lize dlullxue f1i;htTlble.3ddElernent(ncw fli:hITabl~.oodEkm~lI1(ncw fiiJ;htTable.addElemcnt(new fiighITablt.;sdtlElerncnt(ncw Fli~htlnfo("ANA", "103", "NRT\ "JFK", ~03/21/97 AM~)); Flic:hllnfo("ANA". "303", "NRT", ~CDG", "031211'!J7AM")): Flishllnfo("ANA". "503", "NRT". "LHR", "03121/97 A~I"»); Fli.shtlnrOl"ANA", "603", "NRT", "SFO", "03f21197 AM~)); if( -I != pon){ k.}'hlnl\l:Cr = new KQMLM.1113gcr(:l.genIN:une, fr:\me - new AirFr:lmc("Airline-B", thil); rl"3mc.loowO; I/scen1rio - (21)e.111 Airline method sctRe~iucrlO; II tcen1fio - (22) call Airline method. KlR«ommcndancinJertYO; III«tlAriO-l24) sctlntmYO: II sccmlrio - (26) colli Airline method setAd\"crtisdlrokcr:dIAsbIITl); 1/ scenlrio - (27) clll Airline method ~Ad\eniscSubAI[':.IlTO; I I e' ••AirLineB [,lIenl)~llowpas~) • tcel1\lriOl~") "/ pri\,.1le void ,etl111cnYO { KQl\IL [,:qrn! - new KQl\·llO; "kip", por!); III Slrin;; rw = new String(k~l:lIl;l~cr.Kellnili:tllD()); kqml.ICIPerrorlllllivc("imcrl"}; kqml.~IP~l':Imcl~r(":n:lme", 3~enIN:unc); kqml.lCIP:l.rn.melcr(":tcndl'r",loc.lll-loSI); kqml.stIP;lr(lmelcrt,":rtccivcr", Tccci\'crAddr); kqrnl.1eIP;lI'.llllelcr(":rcply-wilh", rw}: kqmhcIP:m~mctcrl":lan~u;l~e", "uIIACL"); kqml.,cIPJ.f3mCler(":onloIO"~~, HycllowpJ.ges"); String coment = new Strin£( "(:PrU\'idcrNamc \"All Nippon '\irwJ.)'$\"" " :c.llegol)' IrJ.vel" " :lubCatcgory :tirlinc" " :cil1u anxl_lr.wcl" ":n;tmcANA" " :Ilngu:t.:c :mACL" " :onlolo:>, tf'a\'cI)" ); kqml.sctContcnt{conlcnl); Convcr$.llion cony'" null; If)'{ conv'" (Coo\,cl'1:uion) k/\ 1:\Il:t!:er.scnd~ Icn:l!:c(kqllll); } c~lch (ScndF3ilcdEx.ception ex) ( ex.printSt:tckTmcc{); } C21Ch (In\,J.lidFormltIException c!() { ex.prinISI2ckTn.cc(); } c;lteh (Invalidt--lcua,cs..,,<!ucIIL'<£xccption ~X) { cx.printSlx!.:TrnccO; I ~Ich (JKQI\ILExccption ex) { cx.pl'ifllSt.s.::kTr:tCL1.): } con\' .sclR elll h( 1.\\ ZIitFort·' 5 000); R~lt rei'" conq:cIRciultO; if(rcl.isAY3ilablcl)) { RctumV:tlue rln '" (ReturnV3Iuc)fCJ.&;;tRcsultU; iftrtn.isOK(»{ ),cllowp.,!:,clD '" nc::w Strin!~(Slrins)rln.tCllh:turnValuc()); printt"ycllowp3lc:" + )'cllowPl.~ID); )dsc{ S)'s\(.>m.crr.primln("~llnl.er(YO : I¢ClI;lrio (1.4')"); S}'5Iem.err·rrintln«Slrill')rtn.£cIRclurnV31u~»); Syuem.exil{-[); } ) c[se { S}ticm.err.priulln("lctlnscrtYO :Error Reiult isn't 2v<til:tble"); SYltcm.exil(-I); ) ) '" • print fOfdebuj;. •@'p.lam nil: print me"~,c "' pri\';!\c void prinl(String illS,) if(KQ~ILM;uI"l"r.debu;;} { SYitcm.err.prinlln("AirLincB." { + nu£); ) ) '" -m"inr()Ulinc •@~r.lm "' ;:I.rgsU pori number, 'nlt' dcflult public lIllie \'oid m:tin(StriIlS :lrg,t(1) { intport=1103; SIring uu;,.: "" lIullllK:r il SOOL +"\n"+ +"\n"+ +"\11"+ +"\1\"+ +"\11"+ +'''\n''+ 112 new Strinj;("UsJ.te: AirlineS [-trace] [-port <portII'>J int ar;c ;; :up.lcn£lh; (or (int i '"0; i < :u:,c; i++) ( I'Y{ i(Olr;sli].equ:aIS("-Im.."e~)) { KQ~ILManl&cr.dcbu, '"' true; } else if(arp[i).equlIls("-pon"» ( port -Intcg<:r.p:uselnl( ••rt;s[++i]); } else i(3rv(iJ.c:qu:d~"-hc:lp"» { Syslc:m.crr.pc-intln(ul.3.1.c); SYltc:m.C'xil(O); }clse{ Systcm.cfT.println(uu,u); SYlu~m.cxit( 1); [-help}"); I } c:uch (ArrnyindcxOulOlTIoundsException S)'Slcm.crr.])I'inlln(uu.c.c); S)'Stcm.exil(I); ) (31Ch (Numi>crForm:uExccplion nfcJ ( S)'1lcm.c:rr.prinlln(uu.:sc); S),slem.c:xil(I); I I AirLindl :tpp = new AirLincB(port); c) { J J '*an:lC,-travc:l.j:l\':t'" p3('k~c: com.ibnud.kqmLintl.'rprelcr; imponjl\'l.ulil.·; import c:om.ibm.ac1.kqml.-; impon com.ibm.2cl.ktjrnlsftmplc.!r.wc\.F1ishtlnfo; private: booleJn dchu,'" KQ'" lLMlllI:lgcr.dcbu&; '" • \':1ri:lblc description ~ocs here " pri\'3tc KQMLMlln:t,gcr kl1\; pch';ue Con\'er1:uion can\'; '" • \':lrillblc description ,~I here " priv'3tc pri\'~tc prh':lIc printc '" IDGene-mlor idll-cn; ll~tic lone re,illcredlD =: 1; "\'Itic Vtttor fli"htT(lb!c = new Vcctor(j; ltllltic: Hllslu\lble kcyTlIblc '" ncw H:uljtlblc(); • Conl\fucts :mxUrll\'cl with 110spceificd p:tramcter. " public :1nscUr.wdO { IIFli~htT3bleisw1 if(ni¥htTablc.sizc:O", ••.0) { fli:htT..,ble.sddElement(new fliWllTablc.addElcment(ncw fli&htTllble.addElcmcnI(ncw FliGhtlnfO{MJAL". ·40~", "NRT", "COO", ~OJr.!1197 P1'.I"»; Fli~htlnfc("ANA~, "20S~, ~NRT", "COG", ~03nl197 P~I"»: Flichtlnfo("AF". "275", "NRT", "COG", "03121197 P"'I"»); I I public Vector ~ctFIi,htTllbtc() return l1i:htTllbic; I { public stltic void ICtFliuhtTnble(VcctOf llin;htTbl) { flilOhlTablc - Oi;JttTbl; J '" • COllvcr1;!.tioll c;!.l1s thislllcthod to interpretc 113 : Ihe content of the f\.~in:dKQ1I.IL mcU-~Se. ·I(!plr:un rou\'Cfu'ion Nfcrcncc to the Com'crI:ltion • ifi'p;lmm mSK KQML mC"l$.'!;c ·@rt1urntrueifmcSu.leisimerpr?ledsucceufully.otherwisef!llsc. '/ public synchronized book.,n dolnterpr~l(COm'CfS:lIion con\'crs:l.lion, KQ"'·ILms,.}{ if(debug) SYilcm,crr.primln(ncw Oottc() + ~> 3n:acl_lr:wd.dohllcrprc1l): cony - (Conversation) coo~rution: km "" con ••.. ~cIKQ!\IU.b.n3Jl,crO; Sirin: pcrfonmlli\'c ••lluS.g.ctPcrfOmt3Ii"t{); if {perfOTnl3ti\'c.cqu:l1signorcC;uc( "inJ<:n"» { return dolnlCn(coll\'crution, nuS); } e\t.c ir(perrorm3ti\'c.C(IU.,'slsnorcC.u •."(~ask."l.II"» { return doAskAlllcolI\'CrUlioll, illS!;.); } else if(pcrfonnll.tivc.cqu:lIslg.norcC:Ue("ICWj) ( relUm doTcll(con\'cfulion, mig); } cbe if(perrorm3ti\'C.cqu3151I:norcC:u:Ii~lOrry"» ( rt1um doSorr)'(COfI\~l'S3tioll, nus); } else if(pcrfonl13Iive.c:qull.lsl:norcC.lki~error")) ( return doError(COfI\'cf$;1tion, 1I1IC); } ebe ( r¢turn doOthcrPcrforIl13ti\·cs(convcrsJ.lion. msg); I '" • H:mdlcs Clllcnd"); inKrt perfonm,live. • @p:mlm COn\'CBllion reference to Ihe ConvCrs.3tion • ~p.3rJ.m ms, KQML mesUtC : ~relum true ifmcss3t,.:: is interpreted succcufully, othcrwile false. ,/ pl'OtC(too boole21l dolnscrt(CorwcrSltion C'OlwcrUlion, KQML mig) ( if (debug) Systctll.crr.llrimln(ncw D;'IleO + " > :ln~Unwcl.dolnscn entered"); KQML rtn"'''; '" new KQ!\tL(}: Con\~f»lion con" - (Convcrulion) oollvcB3lion; idtcn •. con".~etIDGenerJlor(); Slri~ id" id,cn.tctlDl); Vector tokens - PI1I"1CContCnl.p:u'IC«Strinl) mSi-c.etContcnt()); Fli;hllnfo rt.'C - new Fli\:hlln(1l(j; (;)r(illl i"'O; i <tokelll.sizc(); i++) ( ifU(Slrins) lokens.c1cmentAlti».cqulbl,"of~Caic{·:e.rrie-r"» ( rcc.scICarricr(Strins) tokcns.demenIAI(++i); if(debuJ} S)·sl.::m.crr.prinlln(l1cw DlIL'() + " • 3nXUr3\'Cl.dolns.crt p:u-sin~ e:urier: •• + m;.G.cIC.uricrO); continue; } el!le if(((SlrinJ;llokens.delnentAt(i}),t.'(IU2Is1&nOfeCasc(M:f1i,ht"}) ( rCl.".letFli:ht«String) to!.:cns.c]cmcntAt(++i}); ir(debus:) Sy,tclIl.err.prillllll(ncw DlteO + " • :1II3cUravel.dolnsert parsin;: fli:.ht: " + rec.g.ctFliSht.(l}; eonlinuc; ) elle if«(Strins) lokcns.c1cmcntt\l(i)).e<lullslSnoreCns.~.'(":dcp:lnurc~)) rcc.5CtDcI)'1nurc(lSlrilU;) tokens.clemcnIAt{++i»; if(dcbu", System.err.println(ncw D;\leO + ( 114 " - IrI!1CJ_t("3\'eLdolnK'n p;usiIlS: dep;uturt': ~ + ~q;,eIDep:tnurcO); continue; ) else ifil(Strins) tokens.clcmclltAt(i».cqu:tlslgllorcC'luc(":l1rrh'ld")i ( rec.scIArri\'3It(Slring.) lokens.clementAI(++i»; if(dcbu;) Syslcm.c:rr,println(nc:w D:lt~) + ". :ln3CUr,l.\el,dolu$Cn parlin!;.= :minll:" +rec.c.ctArriVl.I()): continue; } c:lle if(HStrins) 10kcns.clemcnIAI(i)).equ.1lsil:llon:C:uc:(-:dcplTimc")) I rec.sc:tDc:pITimc«Slrinru tokcns.dc111CmAI(++i»; if (debut:) Systcm.crr.primln(lIcw DJtcO + :In:ld_tr:lVcLdolnKn 1>'1I'1inlO:dcptTimc: " + r•.-c·tc1Dc:ptTimeOl; continue; } cl,c { ifldcblll:) S),ltcII\,crr.println(ncw Dl!C{) + " - "n:\C1 Ira\'tLdolnJ(:n: in\,:llid contcnl n:lI11e\':due !>lir: " + '''" + lo)..cns,elcmcntAt(i) + ~'"); continue:; I I if«rec.cetCarrier() !'" null) d.:.1t (r«,gctFll£hIO !"'null)&&' (r"-';:,IeIDclllrlurcO != 11••11)&& (rce.gctArrll'llIO !"" lIull)~. (rcc.~e:IDcpITimc:() != null» ( if (dcbu,) { S),stcm.crr.l'rintln(ncw DJte() + " - :llllCUr:lVcLdolnkrl: Flighllnfo con51nx:ted~); Systcm.crr,println( "\1 - .1nxl Ir,,\cl.dolns.cn: FIi~tlnfo.c.1rricr:" +rec, •.ctC"rricr()); SyslcTll.crr.pril1lln( "\t - "n:\cUr:lvc:l.dolnt~n: FHshllnfo.m,hl: " +rt"C.~C:IFligJlI()); Systcm.crr.prilllln{ "\(_ nn"cUr.",cl.dolll~rI: Flighllnfo.depJ.rlurc: +rcc.J,;.clDc:p:!.nurc(»; Syucm.crr,prillllnl "\I-M:W:] tr,,\·c:1.dolnlcrl: Flightlnfo.llrri\,ll:" + req;.ctArri\'"I(»; SY1oto:m,crr,prinlln( "\1 - :IIlKUra\'el.dolnlert: Fli.£,htlnro.dc]lITim.:: " +rcC-i,CIDcpITimo(»; } ni~htT~blc.addElement(rcc:); ) die ( if(de:bu&) SYilcm.crr,prinlln(new D.llc:{) + "_ ;!.Il:lCUr:wd.dolnscn: Flightlnfo constructioll fJilC!d, specify J'C1;erved n"1mc value p3irs."): M _ M ur ( nn~IsJ:.~IPcrfonnllive("lOrry"); rlnl\lsC.5CIP.lr:mlclcr(":scndcr", mJg.:ctPlrnmctcr(":rttei\'cr")); rtnl\-Is\:-s tP.lr:tlTlctcl\":l\."'ttivcr", ml,",r:IP~T'.lI1lClcr(":fendcr"l); nlll\ lI",scl P Jr:1mcter{": in-rcpl)··to" . /Il1£.tCIPlr2l11ctcr(" :1'\:]1ly-wi Ih"»); nn1\hQ..scIP3mmeICt(~:repl)'-with". id); nnl\lsc.lC:t]1:U"3mClcr(":bn£u:ltc", 11I5g.,cll';u ••metcr(":llInJ.:l~c"»; rln ~ 11i/"sctP;\T'll11cler(" :olliology", !11fl,;.gCIPl.mmclcr(" :0111010£),"»; fIIlMIJ.:.lCtContcIIIC(:crrmlg \"ncccsSlry nlme vailic {Xlir nOIII'ICCilied in ('ontcn!.\" )"); } C31.::h(Exccplion cx) { c)(,printSI:tckTraccO; } COIWCrs.1IioIlC= null; 115 ,<)'{ c - km.s~ndMeU3Sc(nn~\sg); } catch (ScndFJilttlExccplion ex) { cx.prinISI3ckT~); } C31Ch(InvllidFonnllExttplion ex) ( ex.prinlStxl.. Trxc(); } calc,h (In\"J.lidfo.klul;cScquenccExccption ('x.printSmckTmcc(); } c;\!ch (JKQMLExccplion ex) ( cx.prinI5IKkTrnccO; ex) { I if(c"'-null) { S),slcnl.crr.primln(I1!!W D3ICl) + " < :l.nxl_ll\1vcl.dolns.crt(): lendi"-, response mC5S>1,£.c (3iloo"): returnfttls.c:; ) cI'<: { i((debug) S)'1olcrn.crr.prinlin(n('w 0:\\<.:0 + "< nnxUnwcl.dolnlicrtO: Kilt responlc meft3C:c Itlcc('ufully"); I I 1/ Handlin, sublCribetl Mcss.1.&cI if(hlndkSublcribedMSG(conv, ('Ise r~'1L1rn(;'lIse; I ring, rec}) return true; r' • Il:mdlcs :111:.-::.11perfonllJli\'e. • ~p3r3m collvcr»lion ~r.:rc:ncc to the COlI\ocrsalion • @p1rnm nlSi KQ~IL lIIetS3ge :@rclurn(nleifmcsl3,cisinterpretedluceeufully.otherwisefidu:. rrotected book:m doAskAII{Corn'cT'Sllion con\'~rlliion. KQ:-'IL nnll) ( if(clcbu.g) SYSlcm.crr.primln(new O:ltl'O + "> :lnad Inwcl.doAikAII cntcrct!"); KQML nnJl.1st ••new KQr-.IL(); Con\'cl'I:llion Corl\''' tCon\,cB,1tion} conv-=1Y1;On; if(dcbtra,1 S}'stcm.~rr.println(ncw Dlll'{l + "- .ln3cUr;l\'cI.doAskAIl g:clling 10tt"llcr.uur"); idl:l'1l '" conv.~cI1DGenerntorO; if(dcbu:) Syslcm.crr.println(new DileO + • - :m:K'Ur:\\,cl.doAsl..AIl sotlDgeJla'dtor" + id~cn); Strin: id - idg:cl\.~cllD(); i(debu!;) SYSlcm.err.prinlln(ncw D.llc() + :tnscUravcLdOl'\.sk.AII ~IID" + id); VC-:lor lokens - ParscConlcnl.p:l~{String) ffiS,.gcICoJllcnl()); String c:micr == null; Strin:flight ••null; Stringdep:tnuTC"'llull; Slring:m;v31 = null; Slrin~ dcplTimc '" null; for (int i=O; i < lol.~lIs.siz •..'(); ;++) ( i(($lrill;) lokcns.clememAlli)).cqu;r.lll.snorcC;asct.":c;uricr..)) ( c:uricr'" lSlr;JI£) lokcns.clcmcntAt{++i); ifldcbuS) Syslem.c:rr.println(ncw D31e(} + "-lU1XUr,wcl.doAskAlI parsins: carricr:" +c:trrierJ; continue; } dfe i({(String) tokens.elC:lIIclltAt(i)).cqu.llslgnorcCasc(,':night")) ( niWlI" (Strin!;:) IOkens.clemcntAt(++i); H _ 116 if(debu\;) 5Yilclll.err.prin!ln(new DJlc(l + nnJcUra\"Cl.doAsk.AII p.lnin!!:: m~.ht: ft _ ft + m,hl); continue: } cl~ if«(Slrinl;) lok;:ns.dcmenIAI{i».cqu:'IIs[~norcC.\Sc(":dcp.1rtun:")) ( de[»rturc:" (SIring) lok:ells.clctnnltAt(++i): ifldcbuS) SYSlcm.crr.prinlln(new DJlc:() + " - anxUn:\·el.doAsk.A1I P'lrlin&: dCp.1nurc: "+ dCI»nure); continue; } cllc if«(StrinS) lokens.clcmrnIAt(i».cquJlslsnorcCD.Je(":l\rriv:lI"» { :miv31- tSlrinr;;) lokcnulclllcntAt(++i); iftdcbug) System.crr.println{new D21c{) + " - all;ICUm\,cl.doAskAlI parlin;.: :uriy:.l: " + arri"al); continue; } die if «(String) tokcns,clcmentAt(i».c:quJIsl,norcC:uc(":dcptTime"» { deplTimc:: (5Irill&) lokcns.elcmclltAI(++i); if(debuYI SYllclll.('rr.prinlln(new DJ.lc() + "- ~nJcUr:lvc1.doAIk.All pJrlinS: ueptTimc:" + dcpCrime); continue; I I if«nrrier"- null).llt (flidlt =:: lIull) &Il (dcplrture ='" null) 4l& (3rrl\'.1I- null) &Il (dcplT'imc = nUll» ( if(dcbug., Systcm.err.println(ncw D:.\(:O + M_ an:teUravel.dor\sk.AII: invJlid n:lIllC \'.llue p2irs in coment of:uk-:.II nn~bg.sctPerform:lti\,c("lorry"): rtnMsg.!cIParJlUcter{":scllder". ms~.~ctP:lramcler(":rccei\'er"»; rtnhls,.selP:1T:1melert~:re\.'Civcr", msg.gctP:lrtmClcr{":scndcr"»; nnhb;..KtP:uamctcr{":in-reply-to", ms,.,etP:lrao\~lcr(":rel11y-with"»; rtn~II,.scIP:\~mctcrr:rcply-withH, id); nnMs'.tcIP:IIrn.mcter{":lJnl:u~c". msg.G,etPJF.lllletcr(":lJn;.ul\.i:.c"); nn~tslpetPlIralllctert":onlology", mlg.c.etPlITrlrlletcr1,":ontolog.y"»; rtnMlg.lctContcnt("(:crrmsg \Mno kcyword spccilicd in CQntcnt.\" )"); } ellch lException cx) ( ex.prinIStlld:Tr.\c-:O; 1 l,I•• { int lil,;:"" nilihtTllble.siil:c(-); Flia.hllnforec; Vector hitRccords" new VectorO; f()r(inl i"'O; i <sizc; i++l { rec '" (Flightlnfo) mltlIlT:ablc.clcmenIAtli); If((ree.I-CICArrl('r().('quJlII((,llfri('r)II((,llrr[cr"~null».aa. (rec.ccIFliltittt ,.equlI.li(,flii;h1) II (Ili,ht = null).I.&:. (rec.Cc1Dcp:anure().c:quJIs(dep.1nurc) II(de[>Jrturc: - null)).t:.I. (rc:e.gel ..•• rriV310.tqu311(.rri\'J:I) U (IlrriV31 ='" null».t:A (ree.,cIDcpITimc:().cqual5(,dcptTimc) II (dcpt'l'imc - null») ( hiIRcconls.addElcmcnl{rcc); J I if(!hitRccordl.isEmplyOl ( 5trincBuITcr content'" new Slrin;;l3uffcIO; for (int i:O; i < hitRlX'Orduizt,(); i++) { rc<:" {Flichtlnfol hitRccords.e!emcntr\l(i); conlcnt.i1ppclI(l(":carrier"); cOlltcllt.appcnd(rcc.yctCarricr(»; contcnt.:tPI)Cnd~" :11is;.hl"); contcnt ..:lppcnd(rec,sctFlight(»; pcrformJtivc."); 117 conlcnl.:'Ippendl" :dcp3rture to); contcnt.:Jppend(&ctAirPort(rec,r,ctDcI>lnurc{}»; contcnt.:tppcnd(" ::lITiv;!.1 M); conlcnl.!1jlpcnd(I:;CIAirPon(rcc.£ctArrh';IIO»; contcnt.lppcnd(" :dcplTimc "); contcllt.:!ppcnd(I:.CITimc(rec.!:,CtDcpITime())); contcnl.!1ppend( "\n"); I if(dcbuS) { Syslcm.crr.prinlln(ncw Dlle() + ". anxUl'ol\'cl.doA'kAII: que!)' completed."); S)"slcm.err.prinllnlncw D:ilcl) + " • "":lei tT;t\'cl.doAskAll: fesult or 3sko,lll: "); Syslcm.c':;:.println(conlcnt); I try ( nnMsg.lctPerfonn3tive("tcll"); nnMsg.SCIP3r:lflle\cr(":JCndcr", msc"c,cIP;!'r:lll1clt'r(":recci\'cr")); rlnMlt.sctP;trnmClt'T\":rcccivcr", mS;.gctP:mifllClcr(":scndcr"»; rtnl\tsg.SCIP:tTlIllCICr{":in·reply-to", n\l.~gctP.lr.\lIIctcr(":repJy·wilhH»; nnMsg.sctP,U3nU::1crt":rcply-with", id); nnMlt.lC'tP;ut\mctcr{~:I;m,u:1.:e~, mls."ctParnmctcrt.":13n&Ul~c"); nn~bIPctP:tTametcr(";ol1tO\O~)''', rmc.gcIP:trnll1cttr(":"ntolo~'''»); rtn~·Is~lctContC'I11("l"+ contcnt + " }"); } c:\tch (Exception ex) { cx.printSlockTrilC('(); I }e\lC{ if(dcbug) Syllcm.crr.prinllnlncwDltc{)+ "·lrlacUra"c1.dQ ..••. skAIJ: No nith1 round.~); try ( rtnMsS·lCtPcrrormltiv<:("lOrr)'~); nnM,!.sctPnrnrneter(":scnder", nu~.gctP;'ir.lIllcLCrl":n.'(:'ciwr"»): rtn~llg.k-tParnmetcr(":rccci\'Cr", mlg..:clPnramctcr('·:iCndcr"»); rtnl••. Ist:,.sctParnmclcr{":in·rcpIY-l0", mSll-&etP\1Ir:ulletcr{":rcply-with"»; rtnl ••. llg.setParnmclcr{":rcply-with", id); rtnh's~.I.I:IP.1rnmcl-.:r(n:lansuW", lIlilHlctPaF.tmctcl\";lantuqc")); rtn~lsg.J.CtPl\rnmcter(":ontolot)''', llIsl:;.gcIParnmclC'r{":ontolos)''')); nntl.·Is~.lCtContcnt("(:crrrnIS \" No Oidll round.\"t); } cltch(E:r.:ccption c:r.:) ( ex.priI1lSIackTrnc.:.t): 1 I I COII\-crilliOIl c = Hull; try ( c = l..m.sendMcllJSe(rtn~bg); } clleh (ScndFli]('dExccption ex) ( cx.printSt:'l<.:kTmu.'(); } cltch (Inv:llidFoml:ltE:r.:ttption ex) ( ex.printSt:d:Tl'3cc(); } catch (In'·llid~k~I.,S(;SctJlIcnccExe •..ption t,'x) { c.'(.printSt<lckTr'-'Cc(); } c:tteh (JKQMLException CI() { ~x.printSlackTroceO; } if(c"''''' nUll) { System.err.primln(ncw D:ltc() + ~ < lnlCI tr.wd.doAsitAI1: lending ~sponse return (;lIse; ) clle { mClugc f:ailed"); ;f(dcb".) SYllem.err.println(ncw DJlc() + "< :In:lCl_tr.wcl.doAlkAIl: scnt rcsponsc retum lrue; meSIa,se IlIceeslfu!1Y"I; 118 ,, /" • H:mdlc:s tell pcrform:uivc. • @lpJ.r:am convcuJ.lion rcfcr;:ncc to the COIlVCl'Ultion • (fl'pJ.ram nus KQ~IL 1l1(:U;lS-': ~ @rcturntrueifmesul:,cilinterpretedsuccessfully, olherwiw r.ll~e. '/ protccted boolean doTcll(Coll\'cBJ.lion colI\,~ltion, KQ/I,'IL 1m,) ( if(debuy) S)~lcm.crr.pril1lln(new D;rtc() +" > :m3CUrJ.\"cl.doTdl entered"}; COIIYcl'13tion cony = (Collvcrs.Hion) con"'!B:l.lion; Result res = collv,g.cIRcsul1(); iflhandIcBrokcrcdfl.ISG{collv, IllSs. "leW» return true; Slrinc cJ.rrier = null; String flight = null; Strins,dcp:uture= null; Strin;;miv;ll = null; String dcptTimc = null; Vector nights:::: new Vcctor(); Ftis.hllnforec=null; Vector tokens::: ParseConlcnt.p:mc(Strint) m!lu~.cIConlcnt(»; for (in! i=O; i < lokcl1s.sizcO: i++) { if«(String) lokcns.c1cmcnIAI{i».cqU.,t5IsnorcOue(~:Clrricr"» ( carrier = (Suint;) lokens.elementAI(++i); if (debug) SYJlem.err.primin{ncw D:ilc() + " _ itrtacUr:wcl.doTc1! p:min;.: c:lnier: + carri~r); i[(ree !2null) ( if(debug) Syslenu.·rr.primintnew D31e(,) + " - :l.nxUr,,,,cl.doTcll p:using c:uricr: illc~t sequence found." + lell or:lsk-:\ll corrupletL "); rcc = null; continuc; n fl I rec"" new Fli;hllnro(); rcc.sctC:.micr(carrier); oolltinue; } else jf«((Slrin~) lokcnl.elcm<.'I\IAt(i».cqu:l.ilt&nort'C:lIe{":ni~llI"» ( night = (Slrin,g) lokens.<:kmcIlIAt(++i); ir(dcbug) S)"slcm.err.pri11lIn(ncw D~tcO + ., - 311XUr:lvd.doTdl p:u'lil\,,: niJ;ht: " + flit!lI); if(1tt == null II tl't'C.,ctCllrricrO == nUll) I if(debug) SYJlcm.crr.primln{llcw DaleO + "- an3ct tr:l.\'d.doTelt (Xlrsinl; night: ille~l Rquenc~ found." + ~ lell orask·'l.1I C'omlptcd. "j; rcc=null; continue; I rce.sctFli&hl(ni~ht); continue; } dse if({(Slrir\g) lokcnl.c1cmcntAt(i)).l'qU.lislSIlOr.::CaSe(":ucp;\r1urc")) departure = (String) toi.:cnJ.clcmcnli\I(++i); if(debu£) Systcm.err.println(new DlicO + " _ :lrlad 1111\'C'l.doTdl p:.rsing: dcp:murc: + uep:uturo); irtn:c =:: tiltH \I vec.g.etCarrittl,):::= nUll) II (rec.l:etF1i~htO == null)) { if(dcbu::) fl ( S)'slcm.crr.prilltln(n~w Dltc() + " - :l.llxUr:wd.doTdl plrsin: dCI'~rlure: illcg,lilCquencc + "'ell of:uk-31l corrupted. "); rCCDnull; continue; ) rec.lctDcpartut\:(dcparturc); ..:ontinue; } clle i(((Slrinl) lokcns.c!c-mcmAI(il).c..lua.lslsnoreC.ue("::mi\'J.l")1 uriv31 = (SIring) tol.:ens.eiememr\t(++i); if(debu~) S),slcm.err.prinlln{ncw DllC(J + •.- :uulCUr.l\'~I.doTcll J>-1.rsin:::miVJ.I:" + J.rrh'll); if(rec null II (rec.g.cICarricr() == null) H (rec.gctFlig.ht() nUll) II (rcc.gctDeparlure() "'••null» ( if(debull.) SYllcrn.crr.prilllln(ncw D:!tcO + " - :InacUmvcl.doTell\>:irsinj; Jcplrturc: i1lc,:lllCqucllce +" tell o(;uk-:tJl i.:orrupt<..'d."); re<: = null; continue; ) r«.lCIArrival(arrival); conlinu~; } else if((StrinlU tokcml.elelll('mAt(iJ).lXju:l.lsISnoreC~":depITimc·)) dc~Timc '" (Siring) to\"ens.elt"memAI(++i); if (debug) S),stem.crr.println(ncw DllCO + "- In:\CUr;}\,c1.doTeli p:tuin::,: d('pITimc: .•+ dcptTime); if(rc-c -- null!! v~c.ll.eIC'ArricrO == l1ull) I[ (req;elfli,htO == null) II (r«.:.etDql2rlur\.'() •••• null) II (ltt.cctArri\·otl() "'-null» ( if(debug) Syslcnl.l::rr.println(llcw D:lIcO + " • anxl_Ir:t\'CI.doTcll ~ning dqxmun~: illcgJllcqucnc~ + ••I~II of:l.ll.:-I'll\ corrupted. ft); rcc"null; continue; } 1\.'l,:.KIDcpITime(dcpITitlll!); flightl.'lddElemcnt(r..:c); ro:c=null; colliinue; I I =- { -= 'ry{ if{nit:.htuizc() !- 0) ( if(dcbu£) { Syslem.crr.println(ncw D:\tc() + " < ,m:tel tr3\'~I.doTell: ~ + nighlS.iizc()+"nighl(s)f. IIld."i; S}·ltcm.crr.prinlh1lnew DlICt) + "< :macl tr:wcl.doTdl: Int elemenl of lell"): im lotSI = tHghluizeO' I; F1ishtlnfo tlnfo '" (I:lig.htlnfoJ) nig.hll.cI~lllcnlj\l(bn); Systcm.err.prinlln("\t - c:micr: ~ + tlnfo.gctOtrrierO); SYSlcm.err.prinlln("\t - ni;hl: ••+ flnfo~;:IFli&ht(»; S}'Itcm.err.println(''\t. d~Plr1Urc: ••+ flnfo.!:cIDcpJ.r1ure(»); Srs\cm.crr.prinlln("\1 - lrri\'31: + nnfo.j;ctArrh·J.IO): SYllcm.crr'l'rilllln(,'\1 - dcptTimc: ••+ fln(o.gctDcpl1'imcO)i q } rcuctlh'Su!t(ncw rel.complcteO; if(dcbug) round." RcturnValu.;(truc, nights»; found." ( lOund." 120 SYltcm.crr.println(ncw D31eO + "< anacUrn\·d.doTeli completed. tell rech'Cd."); rctumtruc; ) else { ir(dcbu~) ~l.IeIRcluh(new ReturnV3Iuc(f"liC, "conlent orIel! il bbnk."JJ; fCl.oomplclt(); Systcm.crr.prinlln(llt'wDltC()+ "< :m3l:1 Ir;1\'cLdoTdl faik-d. contl:nt of tel! is bl~nl...",; rctumfalsc; I } c:\\ch {RcsuItE).ccption ex) { S)'1lcm.crr.println(ex.,ct~knl.£c()); if{dcbu;:) SySlcrn.crr.println(new D:lIr() + "< "Ilnd tmvcl.doTdl fililc:d, CllIIIOllCI ~luh~J; cx.prinISI:lckT~); n::turnf:tlsc; I I '" • H:mdlcs lOrry perform:lti\'C, • @p3r;am COllvcrution re(e~lIce 10 the Com'l:(1).tion ·@p3ram illS, KQ~IL mes~"C :@returntrueifmeu"tcisimcrpreted5uc«nfully,otherwise(;llse. " protected bookln doSorry(Com'erl3lioll com'crs:ttion, KQ~ IL mSI) { i(debug) S)'Slcm.err.println(,new D3h.iJ + "> :l113CUr;wcl.doSorry entered~}; Convt~tion eonv '" (Con\'<:rt3tion) oonvtl13tion; Result res "" oonv.tetRcsultO; if(hlUldkl3ro\..crcJf\ISG(C'OII\', Ill'" "iQfry")) rclllm true; try { Vector tokens" P:trtcContcnt.p3rx((Strin:) ms,uctCont<:ntW; Strine crrnllg '" null; for lint ic:O: i < tQI.cnuizc(); iH) { if«(SlrinJ;.) tokcl1s.d<:mentAI(i)).equals!tllorcCue{":ernm;;")) crrmst = (Strin~) tokcns.ckmentAlli + n; brc.,k; I I ir(debug) { Syslcm.err.println(new DaleO + " - ltn:lCl_tr.olVd.rJoSorry errms,: "+ crrm,s); System.err.prinlln(new DaleO + • - :mxUravd.doSorry Result: .•+ res); I I1:UetRelull~nc:w ReturnV:tluctfalse, crnnS:J); rcs.comph..1c(); if(debug) Systcnu:rr.println(ncw D~teO + < an~'-'r:l\'cl.doSorr)' completed"); return true; } c:ltch {R~uItException ex) t Systcm.err.println(ex·tetr--kWlf:.<:()); ir(dchug) SYSlcm.err.printlntncw Dllc() + " < :lnxl tmvcLdo50rry f:tiled: c:mnol sct 11:1ull"): cx.printSta.:kTI',1oc(); rclum(nhc; M ,,,I I '" H:mdks crrorpcrfo.lrrn:\ti\,e. { 121 • e"p1fOllll CQnv;:rt..ltion • @'p:uam nlSg KQML ~ @rctumtrueifmcu3s,c refcrcncc 10 the ConV'Cl'SJillion me"",!;.\! is inlcrpr~lcd succcufully, otherwise false. ,/ protected book;'!n doError(Collvcr53tioll corwcrulion, KQ~IL m~l.l) { i(dcbut) Syslcm.err.println{ncw Dl.lc() + "> ,Ul"Jc,Uruvel.doError entered"); Convcr13tion conV '" (Convcrs:ltion) conycrll.lion; Result r(!s = cO"".J:.ctRclultO; i(h3ndlcBroL:crcdto.·ISG{COIlV, rns!:, "crror"» return true; \ry{ VtttOf 10k<:111 == ParKo('ontclll.pl.rse(Strin;:) nlSj;.nctCOnlcnt()); Strinltcrrmis."'nul1; for (in! i=O; i 0::: lokcnuizc(); i++) ( jf (({Strin,) lokcnS.c!clllcnIA l(i)).cqu;lI~[~noI\':Ca>.e(":crrms.s")) { cmns: '" (Slrin,) fOkcns.e1cmcntAI(i + I); bIT;!.k; I I if(dcbuJ:;) ( Sytlclll.crr.println(ncw D:l.ld) + " - :lnad_lmwl.doErrvr trrms:,;:: . - Crrnli;); S),slem.crr.println(ncw Dltc() + " - lnlcl_,r.wcl.do[rror Result: " + resl; I Tt:s.set[{clult\new RcturnValuc«(\\lsc, crrms;»); rCJ.complctc(): if(dcbu~) Syslcm.err.print[n(new DJ.leO + H < ~nl;;UrJ.vel.doError completed"); rctumtnle; } catch tRClultExccptioll ex) { Sy.•.tem.crr.prilllln(ex.,ctr-.lcn:l~:(); if(dcbu;) SYltcm.crr.println(new Dlte() + "< :llllld_tr.1\'cl.doError r:lilcd: Clnnot 'ct result"); rcturnf:lllC; I I r' • Handles pcrfomlJ.tivcs which not supponed in this cbu. , @p:uJ.flIcon\·cf1.,1tion rcfl'fCnCe to the Comefulion ·@;P:lr.1fl1Ill1& KQ}'IL n1(,'U3~C :@rcwrn true if me1'l3.1;.cis interpreted sucC'Cufully, othcrv.·isc fillsc. '/ protected boolcln doOlherPcr(orllllti\'c'l(,Con\'uutioll COJ1\'cn..llion, KQr-.IL rus;:) { if(dcbu!;){ S)'lh!m,crr.print!n(new Dltc() + "-:mlcl Ir.l\c1.doOthcrPcrfornlltivcs:" + "unknow pcrform3ti\'C: " + mli:.J~,t."1Perfom\ltiv,O +" rccievcd. llleMlJ>C is il:.norcd."); I rcturrt f-alse; I Interpretcr gCIKqmllntcrpretcr(Co!1\,clUlion CCIl\') { KQML m11O:O new KQMLO; m'£,~IPlrnmclcr(":llnl:.ulJ;~". "KQr-.!L"); rlls;'k!IPlI.rnmctcr{":ontolo(;y", "kqml-onlology"); if(dcbug){ SYllem.crr,println(new DJ.ICO + " • J.llac\ tnl\'C'I,r,ctKqmlhltcrpreli."r:" + "bCfor cJ.llinj,\ lookuplnlcrprcl~rFor."); 122 ) In1C.~rpr~lc:rkqmlinterpreter'" roov.:ctlmcrpretc:rPooIO·looKuplmcrpretcrFor{mIE); ifldc:buK) ( Systcm.cn.primln(ncw D:ltt() + ~. :macUI'.l\"CI.&ctKqmllnterprtlcr: + -&0' Interpreter: "+ kqmlintcrprelcr); ) return kqmlinlcrprt'lcr: ) Sirin: ,etAirPon{Slrin: airport) ( if(:airpon.equllslgnorcOlKi,"NRT")) { return new SlrinG,{''\"(NRT) Tokyo. J:'Ipln (N\lril:."HH); } cbc if(;lirport.cqu:als[gno~;ue("CDG~)) { rc!Urn new Slrin;r\"(COG) PMis, Fr3ncc (Ch:ulcs De Gaulk)"t"); } else if(:lirport.tqU3Isl&nortCIlsc("SFO"» { return new Slring("\"(SFO) S1n FrJ.ncis...."O, CA. U5:\\""); } cI~ ir{ftirpon.cqu"III~lorcC;Uc("JFK")l ( return new Strin£(,,\"(JFK) New York, NY, USA (Kennedy 11111)\""); } elle if(:.irpon.cc[ualllglloreClt.l'("LHR"» ( return new Slring(''\''(LHR) London, En;IJnd (Hclthrowf\""): } else if(!lirpon.cqu31s1r;norcC:rn:("HKG"» { return new Stritlll"\"(HKG) Hong Kong, Hen,; Kong\""); } else if(3irpon.equ;!.111,nord'He{~HNL return new StrinsC'\"(HNL) Honolulu. HI, USA\""): }diC{ fC1Unl3irpon; ) ~Iurnl'lirport: "n ( /I ) Sirina III:ITimc(Slrinlllimc:) ( if(limc.tndsWith("P~I"» ( return "\"" + time.conc3t("12:15") + "\""; } elfe ir(lime.endIWilh{"AM"» { re!Urn "\"" + lime.cooc!lt("IO:IS") + "\"": } else { rc1umlime; ) /I relltrntime; } boole:m h3ndlcBrol.ert.-dMSG(Con\'crulion cor\\', KQ;"IL nHS, String )}Crf) ( idtcn - cOllv.getIDGt'llcrnlofl); Strins id '" idgen.getlD(); "l:,ctKQMLimerprelcr kqml_kqmt_onlology kqmli c {kqml_ kqml_ontolo~y) gCIKqmllntcrprclcr(coll\'); ir(kqmli;:=null) ( System.err.prinlln(ncw O:lle{) + •.> a.nxl_lnwcl.h"ndle13rokertJi\ISG. Could nOI fOtlnd I\:Qr..1L lntcrpl'th:r." + •.return fJ.lse."); rctumfJlsc; ) if(dcbu~) Syslern.err.printltl{new Dalc() + •.> anxUr.wdh:U1dkBrokcredt.ISG. ;etKQ;"ILlnICfprclcr: •. + kqrntil; /I check whether this tell must be fO•..•••• ·2rded to ~e one',' /I some one asked brolerin(? KQ~IL brokemlst: if({brokcr1\I'i: - (KQ!\IL) kqmli.gC1DrokeredT3bJcO,gcl(ml;.gr.:tP'If3metcl(":in·rq>IY-lo")» !=null) { II SOIllC onc :ukcd brokcrins if{dcbug) SYSlcm.crr.prinlln(ncw D~lcO+ "> lI.tlXUr.l.\,cUuUldlcBro!.:cr.:-d;"\SG. ~IUST fvfWUd Ihi. pcrformali"c :as~ 123 +" rc:sponlC ofBrolcr pcrform~i"e"); KQ~IL r\\J~b!;= new KQ:-'IL(): KQ:-'IL inncmll;= MW KQ!l.IL(); 1'1'1 inncrf!.lsg.!K:IPcrform:lti\-e(perO: inncrt.-'s"setP"r:um:tat •:rttei\'Cr", broker:-'Isg. gCIPlmlTleler( ~:~ndcr"»; inncrt.h£.lctPlIr2mClcr(":]&"IU3,£e", mll.tC'{P3rlmclcr(":I.n~~e"»; innCh\bJ:.sctP:munClc,,":OIlIO!O;Y", m5£.;.ttPlr"metcr(":onlolo~"): innl."rMSJ;,.scIColltent{mlg·EetControl{»); f\\~!l.lsg.sctPcrrormJ.li\"c("rorw3l'd"); fwdl\ IllPet P:lr:UllCler~":10" , broL.cr~ 'S£.tctPlrJ.rnclert": Kndcr"»); f\\dhls;.setPar.tlllCh!rt":sclldcr". nllg~clPlirlmCltl'\ ":rct:ci\'cr" H; fwdM.,.lttParamcler(":recei\"cr", brokerMsc:.tetPararnctcr(":sen£kr"»; rwd~h&.lctP:lrnmelc:r(":in.~ply-IO", bro"c:r~15s.&CIP.m1n\etc:r(":rc:pl)'-with"»; fwdMIs..sc:tPararnctcrl ":n:pJy-wilh", id l; (wdl\lsg.~IP.ratlll!li:r(":bn,u~", "KQ~IL"J; fwd~ Isg.scIPilln'lmetC.,~:ontol~·~, "kqml-OIlioloJ.'YM); fwdMsS_S('tContenl(inncrI\15~); } c:uch {E;(ccption ex) { cx.printSt3ckTracc(); ) Convrr'lItion O;:"nllll; 1'1'1 c ""' klll.send~lcs»y(fwd~Is~J; } cltch (SendFlliledExccption cx) ( cx.printStilCkl"r.lcc:(); } cltch (InwllidFormluExccption c.·1!)( cx.printStl\d ..Trxc(); } c:lIch (In\'01Hdt.·lcsllgcScquenccExcqllion cx.printS\;\CkTraC<.;); } cltch (JKQMLExtcptioll ex) ( cx.printStxkTrK'C(); ) if(c-null}{ Systcm.err.primln(ncw D:uc() + "< 'Ul<1CUravcl.h:l.ndkBrokcredMSG: relurnfJise; } cls.c { if(debug) Syslem.err.primin(ncw DJtc() + " < IlnllcUrll"cl.hlndJeBrokcf\'<I~ISG: return true; I ex) { lendin: response menlse railed"); ienl rClpontc 1IIe"3"C SUC«1oS1\11Iy"); I if(dcbui) Systcm.err.prinlln(new DJIe() + " < 'lIacUr;1\~l.hllndlcBrokcred'\\SG: "of broker-xxx pcrfOrmJli\'c. rctumf31s.c; This mIg is not Ihe rc'I)()lJSC" + M ); ) Flightln(o ~rtcAlkContent{I\.Q~IL ms;) { V«1or tokens = ParKColllcllI.parK(Slrin:;) miu:eIConu:nt()); Strinw.~rricr-null: Strin; night ••null; Strin;, dcp:.nurc: = null; Striniarri\"al -null; Strine dcptTimc '" null: (or (int i=O; i < tokctlJ.size{); i++} ( i((Strinc) tokcns.elcmenIAt{i)).equJI!.I&noreCuc(":clrricr")) { c~mil!r" (Strine) tokelll.c!cmcntAt(++i); ir(debu~) S)'Jlem.crr.println(ncwD:uc()+ " - :m3<'1 II'3\'cl.p..1rseA,I.:Conlcnt p..mins; c3rrier: " +cII.rricr); (ontinuc; } else If «{SIring) lokcIIJ.e!cmentAI(i»).cqu:tlll:,nort'0.lIi..\":fli&ht"» { 124 fliGht = (Slrin!;) tokerll.ckmcntAt(++i); if(debug) Sytlcrn.err.println{new D11CO + " • :m:'lcUr.t\'tJ.p:trlcAskContcnI pll'ling: m.llt: + Oi;ht); continue; I ellc if«(Strhr:) tokens.elementAt(i)).equlhlr.noreCuc(":Jep;lrture") ( departure == (Strin¥) lo~cns.elerrH::ntAt(++i); if (debu.:) Syslcm.crr.prinlln(new DlIC() + ~. :'Inlcl_trJ.vcl.p.'I1CAskContcnt porsinl:: deplrlun::,:" + dep3rture); continue; } else if (HSlrin1) loken$,f:lernentAI(i».equlIl"tnor.::CII!c(~:arri\'-:\I~), { :mi\'111 :: (String) lokens.etcmentAt(++i); if(debug) Syllcm.err.prinlln(tlc .•••. DlleO + ". :l.n:td_t~\'.-:J.1)3~C,.\.kC0f1knt p..'\n.ing: J.rri\al: . -.- ;mi\al); continl/(:; } eire if(((Strint;) tokens.ekmcrttAt(j).C<Julh.lg,nori!Ca.l~"(w:dcptTimc")) { dcptTirnc:: (Strirt£J tokcns.elernemAt(++i); if (debug) S)'tlcm.cIT.prirttln(ncw D:ueO + " • IImtCUr:tveJ.pll1cASkCoJllertt plflin!:,: dcptTirnc: "r dcptTimc): continue; I I fetum new fliyJlIlnfo(cnrrier, 11i;ht, dep.Uluf\:, arrinl, lkptTime); I booieJn IUlIldlcSubtcribcdMSG(COII\'ers1tion cony, KQ~IL mig. F1ishtlnfo n:c) { IllubKribcd :"k...,11 Support \':1!mU.:qm!_onto!osy kqmli = tkqmU.:qnrl_ortlo!o;",)·) gctJ..:.qm1!nterprcfcr(conv); if(kqmli == null) ( S)'1l1:m.cIT,prinlln(ncwDl\Il:()+ "> :tn;\CUrJ\'tJ.h;mJlcSubscrjlx.x1~ISG. Cuuld l\Ot (oond KQ!VIL Interpreter." +" return f.-he."); rctumf1l1se; I Vct:lor subscribcLo;;; kqmli.g~tSulm·rjbcLo~O; if(lubKribcLog == null) ( SYllcm.crr.primln(new D~Ic() + "> :tnM:l tl1\\'e1.hlnd1cSubscribcdl\tSG. No lublcribcLog II return Iruc, !x'C3Utcnobody nu\dc wbseription. rctumtruc; found."); I /I somebody rn.wc lublCription! h1ndlc il! inl subLot;Sil.c = lubscribcLo£.sizcO; if(dcbug) Syucm.err.println(new DltcO + "> IIn:w.:Ur.w;:ol.ht'lndleSubKribro~ISG. iub."ribcLo~ size:" + subLogSizc); ror (int i = 0; i < lubLos.Si.te; i++) { /I check whelher lubJiCribc's conlenl is :t5k·I1!1? KQML subl\h(; = (KQ~IL) sublCTilxLog.elcmcntAt(i); Objl."(:t iuhContcnt = urb~hg.gcIContent(); 1(suhContent Inll:mceo(KQML) { KQ~IL subContcntMss = lKQI\IL) subConlcnt; if(subContcnIM5g.ectl)erform:ni\"cO.equlbl;no~C.u.:(~:uk.;iII")) { Slrin!; latl~ '" tll,o;.!>cIPJl':lrneK'rt":I:tn:u~e"); /I AnACL exptttcd String onto = n\ll;4;etParlmcterC:olllolo~)'~);" YcllowPagc expected ir (!( (lubContent~ 1,.:.SctP~r.unelcr( w: Iln£ul:e~).cquJ.lsl g.norcCul.-{l:r.ng» •• & (iubConti.·nt/l.ls~.s.cll'~rJnletc"":ontolo~"l.cqutllll:r\ori!C(\1clonlo»))) I if(dcbu~ Systelll.crr.printlnlncw D~tc() + " > anllCUnwc1.h:mdlcSubscribcJ\ISG. Iln~ :trrd ontulo,y p;tir " 125 + "O(.15I.:-ll1ofsubs-eribc c:onlinue: nOI rnal-eh "); /I lI(subscribc:(uk·l.lI ..))hzndlin,SIOIrU!! /I Fli&hllnfo asl..Content = paTSC!AsLCoolenl(subColllcnl~ls:); Slrin& c::micr '" :uLConlcnl.;c:tCarrier(); Siring m~t '" ;ukContenl.gdFli,ht(); Slrin" depl.r1ur\! '" :u)..Conlenq:etDcp.lrlUri:(); Strin, arrh·,,1 '" ul..Coottnl.gc:tArrivlI(J; Strine deplTimc: = zskContcnl.:,etDcptTimct); if«c::mic:r == nulll"~ (iliJ;ht = null) It •. (dep.;mure"= (:mi\'OII==null» null) && t if(dc:bug) SYllcm.err.prinlln(nc:w DlIC() + > lnxUravc:l.h:andIeSubKriOe<li\ISG." + "no \'~lid query 1pccifioo in C(lnlCI1I of:t"'::.,,11 ofsubJcriuc."); conlinue; H ) if\(rcc-lctC,uricr(J.cquzb(canicr) (n:q;clfliJ;hl{).cqu:tlil,lli;tll) (""'.ccllXpJ.nurc().equah(dcplnUre) (fC4cIArrinl{).cqu;lIl(arrinl) II (carricr &. c", null)).t4. II (Ili;ht == null») II (dcp.lnuf(: II (arriYJi:..= nUll») a:::z null» ~&. t IImllch found! IIscmlinscnrcwrd ... SlringOuflh content -= new SlrinJ;SuITcr(); conlcnl.appc:nd(~ :C2rricr M); contc:nt.appeOO(rec,gctC'1.rricr(); contcnuppe:nd(:ililhl ~}; cOtllcnuppcnd(rec.,etFliiP1I()); contcnl.appendr :ckpmurc M): col11cnl.:tppend{;;.:IAirPort(rcc.!ctDcp;tnure1;)); comenulppcnd(" :arriv:tl ~): cOlllcnl.append(getAirPonll'\'(;·sctArrh·;llt))): contcnt.:lppc:nd(" :dcptTimc ",; cOIllC:n1.~ppl."nd( S"cITime( r.."\:.gcllXpITimc( ll): cOntc!1l.:lppcndt~\n"}; if(debug){ S),lIclll.crr.prilltlninewD:uC()+ ". In:tcUr:t\'CLh:lIldlcSuuKribcdMSG: (lucl)' compJctoo."); SY1Icm.t'fr.primln{new Dlt('(.) + ~. 2n~cI tf\l\·cl.h::lOdleSubJCribcd1l.ISG: result of:"I.:·:t1l ofsubs.cribc: ~); Systcm.crr.println(colllcnl); ) KQl\IL Idll\lsg'" ncw KQ~IL{): try ( Sirin, id = id;.rn.;'C1ID(); IcltJ\IsI·KIPerformllti\'t("lell"); lelll\If~SC1I·;an.mcu:r(·:srn.dcr", sub\lst.£CIPUf\lI11Clert":reccivcr-»: Ie 1111. Is"set P"r~mcl'i:'r( ~:rcc(!iver-, tub1\.Is;. SCIP:lfllmtter\" :Klldtr" )); tcllj\ lJg.tct P;lnlftletert~: in·rc:plY·lo·, JubConlcmMsC.i:,C1Pafllmclcr(· :rcpl)'·with~»; lelll\Is;.leIPIl~l11elcrt~:n:ply-with·, id); tellj\hg.setl)url.meICI\~:l:tnsuJ=c", subContt"1l1~Is~,ctP:ll'l!.meler(":l:ln;u:\&cn); Icllll.l f;"SCIP:trametcr{ ~:ontolQ!!.Y", subConlentJ\ he.gcI P:\r:UlIC'ICr(~:0"10 10S)''') I; Idlj\b~ICIConlcntrr+ ('Omenl +")"): } c:ttch (Exception ex) { ex.printSII1i:I.:TrJcc{); } ComcrsJlionc"'llull; ,cyt c = knl.lemlr-.!eu:lgc(telll\I!f;); } C:'lIC/t(ScndF;aHedExceplion ex) { 126 tx.prim51111:kT raceO; } catch {Im'alidForlll;\tException ex) { ex.primShtckT~ce(); } c,lIch t1n\"a!idt.leu~ScqucnccExC<'plioll cJt:) { ex.printSt3CkTf3CC(); } c31eh (JKQ.\llExccption ex) { cx.primS\!lckTI"l1:d); } i[(c=""l1ull) { SYllcm.crr.println(new D1ICI) + "< an3CUf3\'cLh3nd1eSubscribcd~ISGO: ~nding leI! mcn;)~¢"+ " as response of (suh.cribc (3sk·if»f:ailcd"); cominue; }dse{ i(dcbu~J Syllcm.crr.prinlln(ncwDlIC()+ " < an;)cUnl\'cl.h:tnd!cSllblcrj~df\ISG(): scndins tell menage" +" J.S response of(subscribc (lUk-if)) stll.'Cecdc<n; colllinue; } } IJm!1lch round! } cite { /I no (lubKribc (:uk-311 .. found, continue ... if(dcbug) Systcm.crr.print!n(new Dlle(j + "> ~mcl tr3n:Lh:llldIc5ubsc.rilK'dt.ISG." + "subKribcLo~,cllcme!l!AtI," + i+ ") is nO{(suhKribc (:uk-:tll .... ), continue loop .. "); continue; } }dsc{ /I col1\ent of iubu:rihc i, not KQI\IL lI1CflAl;C. '0 continue .. ifldcbug) System.crr.println(new DlleO + " > ;l!lxl 1r::t\'cl.hlndlcSub.crilx!d;"'ISG." + " colllcnt-o(subscribeLo!:.elkmentAI(" + i + ") il!lei KQ:-'IL mClu~, cotllinue loop .. "); continue; } } II (or ...subs.:::ritreLog return true; ,» I I ,. Flil:,hllnfo.j:m,·/ p:ld:ag,e oom.ibm.u:l.kqml!i;l.!llpk.tr::tvel; importjl\'3.util.DJle; importj:wl.util.H:t>1ltlbk; prin.tc String C3.rrier = null; priV2lc Slrint; night = nul!; pri\'3tc StrinJ:dcplnur~= null; priv;,le Siring:trrivll = null; pri\<.lle SIring dcptTimc = null; pri,,;,tc H:uht:tblc nlmcVlluePJ.ir = new HlIshl:lble(); publicFli~l!ln(o() I } public Fli;.lulnft>(Slring C;trritr, Siring flisht, Slrin~ dCp:ll1urc, Strine ;uri\':tl, String dcptTimc) { thiS.CMricr= clrricr; Ihls.nlghl-m!;hl; thil.JcpJrtuI'C = Jcp"rtlll~; this,.m1\·J.I= :uri\'JI: Ihil.dcptTimc = dcptTime; } publicStrinSf:.ctCJrrierO { rcturncarricr; } public\"oid lCIC.uricr(Strin!;carricr) { 127 Ihis.nrricr-carricr; } public Sirine ICIFIi,hIO { return ni,hl; } public void lCtfliP1t(Strin: flight) { Ihis.fli;hlni:!Jt; } public Sirin, ,cIDcp:uture(J ( return dc~nure; ) public ,oid ICIDeplnure(Slrin£ d<:plrtureJ { this.departure= deplnurc; } public" Strine tC1DepITimc{) { rClurndeptTime; } public ,'oid ,ctDeptTimc(Strin.; dcplTimc) { Ihis.dcplTilllC= dcplTimc; } public Slri", ICIArriv110 { rctumlrri\,11; } puhli.: ,oid sctArri\'ll{String arrival) { this ..arrivlIl-;urivll; } public Object gC'tP:n'.lmcler(Objcct I.:cYJ ( r.ll.lm nlln1.V.lucP,ir.j.ct(koy): } public Object sC1Pmmclcr(ObjcC1 key, Objc~t clem) ( return n3.meV:llucPlir.pul(kcy. cklll); ) ) ,4 FIi~tlnroSublCrilJ('r.j:n-;t.' p.1d:s;c romjblll.loCl."qmlumplc.lta\~I: tmponja\,:I.ulil.·; imponj:w;1.lI,\.\t.Tc:.xIArel; import coll1.ibm.:ad.J..qml.'; II:.dd nOlifydi"lo; imponj3\'3."wt.Fram~; imponj;t",I.11\\1.Color; pri""lc boolean forever = l".tbe; prh',t\c long lim~"Oul; pri".lIeFrnmefl'JJllC; pri\',".: Con\'crcllion cony = null; /I n,,; for leXI eolQr eh3n;.: privale boolean ddJ.),Fb., '" false; IIpri""lc ObjccllcxIArc3 = null; public FHs}nlnr,)Subscdber(Coll\'cmlion cony, ObjlXllcxlArca) ( SUPCr(COII\'.IC\t...I"rc3,0); } public FlightlnfoSubl;;"ribcr(Con\'t'rJ3tion cony, ObjccltcxIAre:., Ions; timeout) { IUPCr(COII\'.ltXIAn:J,limtoUl); } public FHghllnfoSub5criber(Con\'Crs3lion conv, Objoct textAreJ, Fmrne frn.me) ( superlconv. tcxlA~3. 0); Ihis.fmnll: ••rrame; } public synchronized boole;ln h3ndlcRclull~RclumV:tlue nil, ObjCCIIClCIArc ••. ) ( S),l\em.err.primin{"> Fli:;htlnfoSuhr.:ribcr.h:mdkRcsult entcred"); if{nrq:.ctReturnV:tlu~O inSl:mceof Vttlor) { V~·::tor niSlmlnfo - (Vcclor)rln.S-":IRclurnValu~i); if(nigJltslnf<>.siuO:= 0) return false; Fli~hllnfo Oightlnfo '" !F1ishllnro) flighlSlnro.elcllIcllIAttO); Strin; flight '" new StringrC:'lrrier:~ + flishllnfo.1;.CIC:uricrt) + 128 " Flight:" + m~htlnfi).£~FliAhtO +"\11"+ "Dcp3l1ure:" + fHghtlnfo.get[Xp.lnureO +"\n"+ "Arri\'~l:" + ni!hllnfo.~cIArri\'aIO +"\n"+ "DeplTimc : " + flid\t[n(o.tctDcptTime() ): System,err.printlnCFli,htln(oSublCribcr,hand1cRcsu[t"); Syttcm,err.println(flipt); Strin~ oldSchedule '" new Slrin£{ (tTcXIArt::l)tC),1Aru).setTcxIO): if(oldSchcdulc:::" nUll) { (TextArc:I) ttXIArCl).ICITC)!I(nighl); } else if(! oldSchedulc.cqulIls(niYtt» { (lTcxIArcl) lexIAreJ.).KITcxt(ni~lt); if(debyFb; faJu) «TcxtAre:a) tcxtArcl).scIForeground(Co]or,I'td); -= 01", «TC'xtA~l) IcxtArc3.).KIForewound(Color.blxk); dcllyFJag= !dcl3yFIIg.; Pcrson,,1AuinNolifyDitlo!; diag = ncw PersolllIAliistNoti()'Di:tloG(fr.lOlc); di:t:.SI:1rt(); rclurntruc; } rcturnf.tllC; J J /·"CjlI1Ur2\'cLllroktr.j:l\,:\"'1 pxb:e com.ibm.ad.l..qml.intcrpreler; import com.ibm.acl.kqnll.·; import com.ibm.:d.facilila.IOf.F:r.eilil:ltorProperties; import cOlll.ibm .•d.kqml!lo:lmplc.trl\\'d.F1ishllnfo; imponj3\'J..io.IOException; importjan ..ulil.·; prh'3le boolean dcbu;" KQ:-'ILMJnJs-cr.dcbu;; '" • v:Uillblc description &OCShere " priv:lle KQ~ILM"nls.er private Convcrt.,tion '" • \'3.rilblc dctcription km; COI\\'; CotS here " priv.llclDGcnen\loritlgcn; prl\'Jtc Sirin: (.ld1illl0r: 1/ uri o(lllc '" • COOSl1uctt kqmUr.wC'l_brokcr " public: \.qml_lra\'c:I_brol..c:rO FACiliu.torProperties faclilJ.l0r with 110ipttilic:d J»r-'llicter. f fp; try! fp - new F:Kilit;J.lorPro~nicIO: } CJ.lch (IOExceplion ex) ( ex.printSIi\CkTr3Cc(); return: ) f~dlil:uor = (p.;;:tOncURLt"ktp"); if(f!KilililIOr =< nUll) { Srtl~"m,C:rT.println(~ no kip facilili'llOr found, systcm exit!M); SYSlcm.esilll); ) i((debug) SrstCI1l.crr.println{ncwDllt~)+ "> Lq1l1Ura\cl_brokcr.ktjmUr:\\'cI_brokcr(): fuctil"tor uri:" (:a.:ilil:llor); ) '" + 129 • Con\"e~lion calli this method to intcrprctc : the content orlhe r«eivcd KQ!\IL mcJS~c. • @: ~n.1ll con\'e/Ulion rcrercn~ to lh~ Conversation • @~ram mig KQML mcsn;c • !..rctum true ifmcn:q;c is interpreted succeurully. '/ public s)'nchronittd otherwis.c false. boole::m dolntcrprct(ConVCl"I.llion corlVcrs:llion, KQMLms;) ~ i«debuS) Syslcm.crT.prinlln(new D:uc() + ~ > kqmUra,,·d_brolcer.dolntcrprctO: con\' = (Convcrhtion) com~~tion; km" ~·onv.!D<:IKQ~IL~l:ur:lJ,;cr(); Siring perrOnnllli\'C '" ms!}scIPcrRlnn:ltivcO; if (pcrronnali\'e.«iul1slgn()reC~uc( "brcol.:cr':'III")) ( return doBrokcrAll(con\'crsation. msg); } else if{pcrformllli\'c.equ:llslgnorcC.uc("rccruit-ol1c")) { relUm doRecruitOne(coll\'cn:lIioll, nllg); } else ir(~rrOm\31i\-c.e<IUl.lsls.noreC:uc("sorry~)) ( return doSorry{col1\"Cl"ution. Ill',): } clse if(pcrfQnnali\"c.cquJ.lslgllortC;uc("crror"» { rClum doError(corwCrnliQII, I11S1:); }clsc( return lupcr.dolmerprcl(con •••• nuS): I entcrcd~): I '" • Hlndles broker·J.lI perfonnath~. • p:lTam con\~rutioll reference to the Convcn:lllion • fipar1Il1 Ill'; KQ~IL Illcu:s,:c :@n:1urntrueifmCisageisimcrprctedluCCClsfully,otherwisefJlsc. " protected boolean doBrolcrAlI(Crnwen.:uion convcn:lIion, KQML mit) ( if(dclxlSl Syltem.err.primln(new 0:1\(:0 + ~ > \.qml_tl'.wd_brokcr.doBrokcrAIl entcred"); KQtl.IL rtn1\ba - new KQML(}; COII\'cualion COIl\' = (CQlm:I'IJ.lion) convcl'liJ.tion; idgcn ••OO/lv.;.ctlDGcnerl1tor(J; Siring id - idtcn.!:.ctIDO; KQ~IL asKJ\It:; if(ms;.st1ConlcntO inltlnC«lf";:Q~'IL) ( &11.1\11: "(KQ1>.IL) Im.I;.l.ctConlcnl(): if(! Mk.\Is •. &t1Perfonnfllivo().cquaJ51InorcCIl5aeask.all"» ( if(delxl;;J Syslcm.crr.prinlln(ncw Di1te() + ~ ·lqml_Ir;J,\-eI_brokcr.dol3rokcrAII: borkcr-all conl'enlS i. not ask-.,II. try { rtn~IsI·"tP~rfomlJ.live("sorry~); rtn~Is~.lCtP:uamctcr(":k.--ndcr". m""eIPJ.rlllllelcn.":~ivcr"»); nn1\.IJ,g..5ClPJ.r.tmetcr(":rccei\~, mS~SC1Partimeter(":l('nder"»; nn~lsK.5ctP.1r.tlllctcr(";iIl-rcpl)'-lo", ms!;.),"CtPl\r:lIllt!tcn.":reply-with"»; nn~ bg.scIP.1r.lInctcr1":ro:pl),-with", id); nn~Is,.sctP"r.tmelcr(~:I:tngu~e", ml:;,1:,CtParnmctcr(":lsngu3"ic"»; r1n~ IsS;.sctP;\rameten." :OIllO[O;y", mSI.,etPar;unctc.r(" :ol1lo[ogy")); nn~hK.letCo\lIenl("(:crrllls, \"cannot hlllldl~ brolcr-nll" + ;'\s~I'&·ltctPcrf\Jrllloti\'cO+"\")"); } c:lIch(Exccption ex) { tx.primSlnckTracct); I Conn'rUli\}llc=nu!l; 10'1 "); 130 C: km.Jendl\lcl13/:e(nnl .•.ls&); } c~tch ,ScndFailtxlExccption ex) ( ex.printSI3.CkTnlCc(); ) cltch ,lnv.llidFonnntExcclltion ex) { cx.printSlxkTr3CC(); } c.llch (InV3lid~Ic:ss:\~eScqut'ncc:ExcC'plion ex.printSIKkTra.:CI); } Cllch (JKQ~ILExccptioo ex) { ex.prinISlxkTrxc{); ex) ( I i«c-null){ SYilem.err.prinlln(ncw D:ucO + "< kqmUr:l\'c:I_bro\::er.doBrokcrAIIO: retumr3.11.c; s.cnding response } else { if(debut) SYitem.crr.priulln(ncwD!tIC'()+ "< kqmUI1I.\'t!I_brokcr.doBrokcrAIIO: relurnlru.:; , melnge r"ilcd"): !.ent T'CillOnk mCH:I\l.C .uccc.urull)'''); I lelse{ i«debuS) Systcm.err.primln(ncw D.1\t.:O+ ". kqmUr.l\'cl_brokcr.doBrol..crAII broker""II'icontcnl is not KQf',IL. "); II)'{ nn~Is:.setPerromlrllivt1.·sorl)'''); nn~ Is!.iCt P3r3lllctcrt ":scnder", msg'I::.t!lPllrnmcter1" :n:cci \'cr~ rtn~lsg.sctP:uamcler(":recti\,l'r·, lllil.g.ctP;,ramclcr(":iCndcr"»; rtnf',lsg.scIParlmctcr(":in-rcpl),-to", mli:,.\l.ctP"r.llllctcr(":rcpl)'·with"J); rtnl\lsl.scIP<tramctcr(":rcply-wilh", id); rtnl\ls:.k:tPII;r:uneter{":lJn,u:.:c",IllIG·,cll'lramctcrt":lal1l:.uac,c"J); rtnl\lsg.s.ctf\mulIclcr(":OIltolor,:I'". mi~:eIP.1T'i1lnclcr(·:Olltolo;y"»; nnl\'hB.lttCantC'nl("(:eITmII> \"brokt'r-ulrs COnlc-nlis nOI KQML\" )"); } c:uch \Exctption ex) ( ex.printStxkTroce(); } Converulion c: null; try { c '" km.lcnd~k'1».&.c(nn!\"btJ; } CllCh (Sendf:tiledExeeption ex) { ex.prinISt.1d. Tmcc{); } c:lIch (Jrl\'JliJFornllIExccption cx) { t':<.printSIlCkTr.lCC(): I CJtch (In\alidl\ICU3.tcScqucnceException ex) { ex.prinISI:1d:Tmcc{); } c;llch (JKQ~jLE:O(<<,plion ex) ( c)..printStllckTmce(); »; I if(c": null): Syslcm.err.prinlln(new Date() + "< L.olmUr.wel_brokcr.doBrokcrAIIO: n.'tumiallC: } tlsc { if(dcbugl S)il~nu:rr.prillllnlncw D31C() + " < I.qmUrrncl_brokcr.dolll'OkerAIIO: relumtruc: ,, sendillJ; rcspouse: fent ll:'ponlC .1/lOci expirJliolllimc from the content or 3sk-a1l \'~lOrlokcns = Plr1CConlent.p.1.m(tSlring) a1kr-.h~.£etConlcnt(»; /I der~lult C:Xpirt'lliof1 time is 10 scronds StrinliJ c'(pi~tionTime '" new Slrins(,'IO"); fl)r (int i"O; i < loLenuizc(); i++) { menage U\csu:e f;tiled"); succeurull)'''); 131 i((lSlrin~ 10kens.e1cmenIAI(i)).«Ju:a1s1r.no(\.--CUC(H:cxpirnlionTime~)) expirnlionTime '" (Slrins) tokens.ckmentAl(++i); if(debu~) S),stem.err.primln(llcYI·D;ltc()+ kqmUrl.\'el_brokcr.doBrokcrAIl p;loflin:: cXllir.1.Iion"nme: T o:xpirationTimc}; eontinlK; I W _ ( R I KQ~IL rct~lsg '" new KQ~IL(); II crc:ate rcc;ruil-:lll mcs»:.c: uy { rel~ b;..ktPcrform:ui\"c( "recru it.:aII rCI~IsJ,sClrlrolrllCler(":lenckr", mSla:o:tP.tTMl1C:tCr(":rcccivcr")}; ret~Is:"etPll'tlmctcrt":n:et"i\"cr", f,K"iliullor); If retMs,"seIParameter(H:in-reply-to", ms&-£cIParJ.metcr( :rcpl)"-wilh")); 1"Ct~ls"setPlr:nl\etcrt~:rcplr-wilh", id); rclto.ls£..seIP.trnmelcrt":I:tn£.u3~e", "KQML"): rcl~ Ist.I"CIP .tmmeler(":ontolo~yR, "kqrnl'ollto!ogy"); rct~IJ"KICOIIICnt(lUk"lsg); } Clleh(Exeeplion ex) { eX.printSt:tekTmcc(): } " Com'erution c; /I c'" (COII\'CTSlilion) km.send~le"3.£C(rct~lsg); Con\'ers:uione=null; tr)'{ c '" lColI\'crSlltion) km.K"lldl\lc:u:\.&evctMsg}; } Clleh (~ndF3ilC"dExccption ex) { ex.primSI!ld:T~'el); } e;l.Ich (hwalidFonn:UUCC"plion ex) { cx.printSI~kTm~); } c:lIch (InvalidMessag.:SequcnccExccption e,) { e,\:.printStlCkTT3cc:(); } C;lICh (JKQMLExecption e.x) { cx.printStaekTmce(); } if(e-null){ Srstem.err.println{r~w DJ.te() + ".::: kqmU['.tvel_brokcr.do8ro~crAlllr l('uding responte lIles~ge f:tiled"); rctumfalsc; } clie { if{debug) SYltcm.err.println(ncw Dlte{) + "< kqmUravd_broker.dolJrokerAI!O: K"l11 rt:!il>onse mC»lI&.e success(ully"); I/w.1ilforrcsull Ions wlitmills = lIew LOI\g.(expiralionTimc).lon,ValuC()· 1000; long due" SYIICm.CUrrentTimer"IiIIil() + w"lillllills; long len; Vector ni:.hll" new VCClOr(); Slrin~Bun(:r content ••new StringBurrer(); if(dcbu~) S),stcm.err.println{nc-w D:lle() + • - kqmUra\'eI_brokcr.doBrokerAIlO: w.1iling in" + cxpiro.lionTime + • for response recruit-ail.·); "hile ((len'" due - SYllcm.currentTimeMillis(» > 0) ( c .•eIResull().WlitFor(lefi); if(c.~IRe1u1t().ilAv3il:\blc() ( RelurnValue nn - tRcturnValuc:) q:eIRclultO.tctSubseribcdResultO; if (nn.bOKt)) { iftrtn.,,-1ReturnVlhlc() insllllccof V •.. "Clor) { ni:llIl "" (Ve<::tor) nn.tC1R("lurnVllluc(); fOf (int j""O; i < Oidlluil4.iJ; i++) { Flil:,hllnfo niyhllnfo "" (flight!llfo) ni~htl.c1c1l1cntAt(i); if(do:buS) SYllem.crr.println(lIew DJtcO + "- kqmUra\'cl_brokcr.dol3rokerA1l0: got Flilthtlnfo." W ); or 132 + " m:!.Idng tell nles~e·): conlcnl.!lppcndl" :c::lrrier "}; contenl.:lppcnd(nightlnfO.J;.ctC:uricr(); conll-nl.:lppcnd(" :flithl "); contcnl.:lppend{nithtlnfo·t<:tFlightl,)); contcnu.ppendt" :dc\XIr1ure "); COIIlcnl.:lppcnd{"\"" + l;ctAirPor1(Oit,htlulb.s.etlkl».rtUre(j) contCllI.3ppendt" :arri\';\'''); colllcnt.appcndC,\H" + getAirPon(Oi&htlnro..ccIArri\'J.I(» conlcnt.nppcndr :dcplTlmc "); COIlICIIl.!'Ippcnd(,"\ •••• + sctTil1lc(m~t[nrO.'CIDcptTimc()) contclll.:lppcnd("'tn"); + •• \•••• ); + "' •••• ); + "\""); I I I I I id-id,cn.£ctIDO: if(conlcnUcntlhO!'" 0) ( try { nni\ls~.$CII)crronu:lti\'ct·'Ie1I"); rtn~'I.;.lcIP;aranlCtcti.":lendcr". rIlSlu:,cIP!lr.1mClcr(":rcceivcr"»; rtnt\ Isg.sctP;al"amclcr(":rc«ivcr", Il\sg.&CIPIlr3Ulctcr(":scndcr"»; nnMSi:.KtP:H:unelcr(":in-replyolo", msg.tctl'llf"\!,/lICICI\ ":n:ply-wilh"»; rlnl\ill:.scIPar;JmClcr(":reply-wilh",id); nll"h~ICIPn.r.Ul\CI~'f(":I3I1'U;Jtc", ":mACL"); nnl\lsg.scIP:ar:J.met~r1":onlolosy", ~Ir:t\d~); nn"ilK.ICIColllcnl("r+ conlcnt +" )"); } c:ltch (E~ccptioll ex) ( cx.printSI3CkTr3C'e(); 1 else I { ir(dcbuS) S),ltcm.crr.println(ncw Dltc(l + "- I..qmUrn\'~i_brokcf.lloOrokcrAII: No flil:in rL'(;ic\'cd."l; 1,,( r1n"hlf-,lcll'crformllh'c("lOfry"); nn~ hs..~IPn.rnlllelcr(" :sendcr", Illli.£.tci P,lnltr\elcr1 ": receiver")); rtnl\ls£.iCll'itr.llllctCr(":rL'Ccivcr",rnsuo:tl'lrJ,IIlClcr(":scnocr")); rltll\bIPctl':ut\metcr(":in-n:plY-lo", nl1.,.~ctPill1\mclcr1.":r('pl>,·wilh"»; rtn.\bll.lCtPn.r.\lIIctcr(":rcply••••. ith", id); rtnr-.ls~.scll'ar:J.lllctl.'r(":I;mguJl:.c", ":tnACL"); nnl\lsJP('tI"UJlllctcr(":olltolo~'", "tr:1\'e!-brokcr"); nnl\II!:.~IContcl11("(:crrmJ' \" No flithl fOllnd.\"),,); } catch (Exception e.~) ( cJ(.printSt.1ckTr.llce(); I I 1/ c ••(ColI\'t:rJ3tion) J,;m.sendMcu;lge(nnl\·lss); try { c,. (CorlYC'r~'lion) km.sendl\'Icu.."'I;c(rlnMfll; } catch (Scntlf;JiledEx...~ptioo ex) { ex.printSti\CkTr-,lCC'{); ) calch (1rl\'atidFonnJtExcepliOfl ex) ( cx.primSrlld.Tr:wc(); } catch {In\,:llidt.ku3s~Sc-quencc:ExttptioTl (:x) { e_~.printSI:l..:kTr.1cclJ; 'c:ttch (JKQl\II.E)'C'I.'plion ex) ( cx.priTltSL:k:I..Trxc(); , if(c"'" nUll) { Systcrn.crr.println(lIcw])a{c()+ " < kqmUr.m~U)rokcr.dol3rokcrAll: rclUrn false: }o:lscf if (debug) sending rt'Sponsc mesu.gc railed"}; 133 SYIt<:m.crr.println(ncwDJ.IC()+ " < kqrnUr~,,-cI_brokcr.doBmL:crAII: rctumtruc; sent reSI)()lIlC mcua,ge successfully"); I I I '" ·H:.,"dlcJrecruil·onel)Crr~rmlli\C: . • @p3~m con\'crs..tlion reference to Ihe Con\'CfUlion • @pl.r:lm mit KQl\ IL message ~ r(!:rclurn lrue if /lIctSl,~C is interpreted successfully. otherwise prolKled boolcl.n doR~ruil011c(Com"Cru(ion C()[WCl'SatiC)lI, if(debu10 SYSIi!m.crr.prinlln(ncw D:ue() + "> kqmUra\'cI_brokcr.doRec.ruiIOnc entered"); (\lIse. KQ~IL illS!:) ( KQI\'IL nnMlg" new KQ:-'IL{); COIl\'cl'1:\I1ol1 CQIIV= (Coll\'crs:uion) •.. 'OIIV/""f'I3Iion; idGcn - conv.~eIIDGencmlor(); SIring id" id~cn.;ctIDO; KQI\'IL lubJ\ls; '" null; /I sublCril>c mclS~c KQ:-'IL .ukl\bg '" null; lI:ask-311 mcsS3Sc Slrin!:crmllg-null; II error chcck if(msl.,S.cIConlcnll) inltlln.;cof •.•. Q~IL) { subflols:" (KQt..IL) ms~.J;cIColllcnIO; if(! subMIS.SC1l'erfonllati\'e().cqu:tbISrlO~CJ.s.«"lubs.:ribc"» ( crrrnlg = new Strin£l~Con1Cn1 of the ~l'nJil-(lnC is nOI sub~ribc. ~); } else if(sub~'Is£,SC1COn1CnIO inSiancrof KQ~'L) ( :'lSL:~lsg- \KQ!\IL) lub~bg.getConteIlIO; if(! '\lk~bt;;"ctPerfunnJ.lh't'{).cqu:llsl~nortC.ue(~l1Sk-311"» ( crnllSi -= new StrinCl"Contelll ofs.ubscribe of the recruit-one is not" + ~ Uk·311. ~); } else ( 1/ (I'C'Cruil·otlc (subtcribc (uk-all ..») is OK. ) ) clsc { errmsg - new Slrin~"Cont~nl of subscribe of the rocruit-onc is not" +" KQML. ~); ) } ebc { emlllg - new Slrinllt"Conlcnt ofth\! recruit-onc is 1\01 KQtl.IL"); ) if(crrtm,!:::: lIull) ( if(debu;) Syslcm.crr.prilltlntncw DJ.leO + ~ - kqml.-'~\'t'I_brokcr.JoBrokcrAIl: borkcr·:l1l conlcnts ii; ;lIv~lid\:: + "re:lSoo: " + crrmsg); uy{ nn~ls,"selrcrform3Ii\'c(~S()ny"); nn~1s~.5eIParlmclen.":scndcr". msg.~IPaJ'l.lllelcr(":recch'Cr")}; nnl\b,.lcIPar.llllctcre:rC1:ei\-;:r". ml,.getP;a~llletcr(":~ndcr"»; nn~!t,.sctl'.lramctcr(":in·rcply-lo". mS:;.tC'lI':lr:lmClcr(":rcply-wilh")t nn1lo1~g.sctramJJlctcr(~:T('pl)'-with". id); nn~1sg.ICIPI\r.llllelcr(":hmgual::.c". m,uctPar:trnetcr(":lan,u::\J:.e"»); nn 1\ I 51. sc(ParnmetC'r( ":Olllolo:y". ms,.gct P('lr.UllCICr(":ol1lolog,y" ,,; nn~b~.seIConlenl("(:crnnss \ •••• + ;;-rmlSS + "\~)"); } c01tch (Exc(plionc:t) ( cx.primSl;1ck Tmcc(); I 1/ /I Con\'tnltioll C; c ••knl.lcnd~ IcsS:tt,c(nnMs!;); Com'1:rsOltion C = null; try { " 134 c = knl.Scl\d!'o.tcu~!;e(nlll\!JS); } CllCh (ScndF:tikdExceplion ex) { cx.printSlld;TrtKX:(); } cllch (Invl1idFormltExccplioll ex) { cx.prinISI:lclTraccO; } c:ltch (1n\·J.lidl\lcul~cScquenccEn,,<ption cx.printSt:u:kTri)Cc(); I cllch (JKOt-.ILExccptiOIl ex) { cx.printSI:I;;:kTr3Cc.'{); ) if(c=null) { System.err.prinlln(ncw DateO + ~< kqml_tT.we1_brokcr.doBrokcrAI1(): return r.~I3.c; }dle( iqJd)u~) Syslem.crr.primln(ncw DJlc() + "< kqml.)ri\\-d_broker.doBrokcrAIIO: return tTUC: J c.~) { ICndin.g respontc sent respollie mC5So.'1SC mesuge ("lied"); succcssrullyM); I Vector tokens'" P:trscConttnt.p;,rsc({String) ask~hs.g.ctConlelltt»: Slril\f:, cl'lTrier= nul!; String c.micrURL:::> null; for(im i=O; i < tol..cns.si:tc(J: i++) ( if«(lStrinsllok(''T\.\.cJclllcntAt(i)).cqu:lls's"orcCJsc('':c:micr~)) ( c3.rricr::: (Stringllokcns.ckmcntr\I(++i); if (debug) Systcnl.err.prilltll1(ncw D:1t',() ~. " - kqmUr1vcJ_broker.doIV:cruitOne p:1f1,inS: c;trricr: " tc~mi",r); continue: , I if(carricr == twill { if{dcbu:,:) System.err.println(n..:wDJ.1<."()+ "- kqm'_lrJ.vcJ_brokcr.doRccruitOnc: cJ.rricr nOI detccted in ~ + "oontCn( ,,/ ,'~IHlrll'er(orm;l1 iv\!." \: try { rtn~ IIi:. ,~·t P~r fllrmJ.l i\"C("sorry"}; rtnt.h-g.K'"tr'.lr:lmel\~rt":s<:nJcr". rns:;.;ctP:lramctcr{":recciver")I; rtn~I$.&.selPM:tll1etcrt":ro:cein~r'·. nlSg.I,tr:tP.lr1metcrt":scndcr"); rtn~ hs;:.~cl P:u""."Imeten. ":i n- rep! Y-IO". tlIS&.J:t.1Pnrltl11eh.'-rl" :reply-wit h")); r1n~lsg.5dI':lr ..'hl\eter(":rcply-wilh", id); r1n ~ Isll.sctPar:lI11ctcrt ": 1:111 gIH'lSl''', Ill,.g..set P aT."ImClcrt ": 1anSun;:.;;")); rtnl\ hg. ~..:tPar .unctcr( ":01110 logy", m5;.getP."Irnmclcr(" :ontology"»; r1n~lsS.seIC"')l1Icrll("l:crrmsg \"no carrier J.pe(ified in contenl.\" f); } c."ltch (E;..cepti~)\l ex) { cx.printSt,KkTr:lCe(); } 1/ Com-en:ttion..:; COllvcrs3.tion c"'null; \ry{ c = km.scnd:-.t.:sSlg~rtn/l.h&); } c:itch (Scndf!tiledE:\ceptioll eX) ( CX.priIlISt!'k:\.:Tr3.cc(): } catch (lnv:11idForm:lIExccption cx) { c){.printSt-'ClTr.lCC(); } c:ltch l[llv"'idi\leuJ.~cScq\lenceExccption cx.prinISta.:~TrncI!O; } c"t..:h (JKQlI.1LExccption cx) { c){.printSI:lcl Tr3CC(); } if(c"''''l1ull){ ex) { 135 S)'1tcm.crr.println(new D:lleO + < l.qllll_l~vel_brol.:cr.doRttruitOnI!'O: "+ " sending rcspomc meslage (:tiled"); rclurnf.tlsc; } cls.e { if(debug) Syslcrn.crr.primln(llcw DaleO + " < kqmUra\,d_broker.doRccruitOnt.'{): "+ "lent response IIlCU3g,C sUCCCSJrully~); rtturntruc; M I I else (lIiflc:micr-"'null) KQI\IL ukOnc'" new KQML(); ir{deb\J~) S)stcll1.err.printin(ncw O .•I<.'() + " < kqmUr;l\'cl_brokcr,doRlx:(uitOncU: "(:'IIk-one LC (:n3mc H + " + c:uricr +" )) Clc:lled."); '0'( lukOn\:: .H~I Perf onn:1I iYe'( ";'15\;:-one"); ukOne.~tl'J.rnmclcrt":scndcr", msg.cctp.uamCRr( ":~ciycr"»; IlskOnc.!CIP:l.r:llIlctcr{":rcccivcr". (1ICilitnlor); ukOnc.k'IPammClct(":in-rcpIY-lo", msucIPlI.r;lmclcr(":~pl)'-with"»; :ukOnc.scIPilramcterl":rcply-with", id); ukOnc.SC1Pammctcr(":13nsu:tge", ":.1nACL "); :askOnc:.setP;v3mctcrt":olltulogy", Hli(I!Cyclc"); askOne.lCtCOnlcnl(~I:nanK' ~ + c:\rrier +" t); } c:!.tch (Exception ex) { C'x.prill\SI;tckTr~): I 1/ 1/ id- id.cn.l:,c:lID1,): Con\'cl'$:I.lion c: C "lConvcn':lIion) km.~lIdMCf,S~e(a.sl.:Onc); COII\'cf1:tlion c :;::null; '0'( c:;:: (Coll\'crs:!Iiun) km.send~less'-S.e{3iI.:Onc}; } c:tlch (ScndFailcdExccption ex) { cx.pdmStl\<;I.:Tr~); } C>ltch (Inv;,lit!rvrm:ltE\,ccptioll cx) { "'·llrimSI:lI.:kTmtc(); } c:tlch (In\',,1iJ~leU3!>c:ScqucllceExlXption ex) { cx.printSt:tckTr~cO; } CJlch (JKQi\II.Exceplian ex) { cx.printStx\..1hcc{); I ir(c==null) ( Syslem.crr.println(nL'w D:tteO + " < kqmUr:wcl_brokcLllof{ccruitOne(): "+ .•Knding :ul.:-onc mCS13g.c (itiJcd I\:tum(JIk:; } elte{fli((c"''''llull) ( ir(tkbu!:) S),stC1n.err.printlnlncw D31c() + ..< I.:qmUravcl_brokcr.doRc-cruiIOne(): .•+ ~Icnl.uk·onc mc»3&c 11I<x.'curully~); If •••• 71il for Ii(d:ycie respon~ c.gI.1Rciult().\uitFort,IOOOO): If 10 teconds •••• '3it ir(C·CCIRcsuIIO.isAnil:tblc(») ( RcturnV:tlue nn ••(f{C:lumV:l!uc) q~cIRcsult().tctR«ult(): ir(nn.~i.'IRclurnV:\luc:{l inst:tnceof Asclltlnfo) ( Atentlnfo ;"g.cnl = (Agcmlnro) nn.s,etRcturnV:'Ilue{): c:mil'rl'RL = ag.(!nq:(;IUI~L(); ir(dcbug) System.crr.println(new Dllli.) + " -< kqmUr.t\';:U)ro\.:cr.dnRceruitOnc(): ., + "tell oraslr.::·onc r~"'Ci\'ed: URL:· + c:lrrierURL}: ft ); 136 I ir(c:.rricrURL""'"Ilutl){ if(dcbu~) S)"Ilcm.crr.prinlln(new DaleO + "- L:qmUnvcl_broL:er.doRt.'CruitOne: c3rTier URL not resolvcd. M); 1')'( rtnMsS·«tPttforrn •.•. tivc(·soo,y ••); nnMsg.scIJl"mlll('tcr{~:'cndcr". I11sg.,etll:lrJ.mclcr(":rccciv-c:r"»; rtn~Is;.I.:tI}:Ir.'ImCI~r(":rc.;ei\'\:r", msc.,eIP~r2mctcr(·:scndcr"»; rtn~lsH.iCIP.U'''meler{":in-rcpIY-lo", mls.;cll':ualllclerl ":rcjl'y •••••. ith·); rtn~hg.sctP:mlmelcr(":n:pl)'-wilh .••id); nnhlf&.sCIP •••. rotlllClcr(":I"'nc.uJ.G.C", lIug_tL1P.:tr.lIllClcrI,":lan;u:lIGc")); rtni\"'.ICtP~r:trnclcr(":onloJogy", msg..gcIP:uIIlICH.'1"(M:onlolol:)'")); nni\lsll,K1Conlt'nt("(:crmlSS \"cllrricr URL C:II1I\OI mol\'w.\" )"1; } c:llch (Exo:eplion ('A) { ex.prilltSlad. Tmcc(j; I c = (Convcrs:uion) km.scndp..ku3,go(rtn!\-bg); II)' { c - (COllvcfI",ion) Iml.l('mJ!"'lcn3l:.e(rtn~'IIg); ) c..nch (Sendf:l.ilcdExc~plion ex) { ex.printStackTnK'C!(}; ) c:uch (In\'''lidForrll:lIExc~rlion ex) ( ex.prinlSI~kTrnce(); } C31ch (lm'31idMcsu,l:,eScqucllCcExccplion cx) { cx.prinISllid. Tm.:e(); ) C31ch (JKQ~ILExccplion ex) { cx.prinISllld ..Tt3Ce(); } if{cl::.Zllum { Systclll.crr.println(ncw Dale() + ~< L:qml_Ir3\~I_broL:~r.doRC'CruiIOne():" + "sendin; respons~ rncJ,J3:e failed"); returnfJ.isc; ) else { if(debu£) SYSlcm.crr.primilllnew 0;\1(:0 + "< I..qmUra\'CI_broL:er.doRocTlliIOnc();" + "sent ~ponlC nlC1s",c succcufull)'"); rcluTIllrue; } } else (/I iqcarricrULR c-"< nUll) KQ1-.1L f•••• -elMs!: ro new KQ~IL(); iqdebug) S)'Ilcm.crr.prilllln(ncw DateO + ~ - kqml_lr.n ei_brol:cr.doRecruitOne: forward subtcribe ,""-all" + "mcuageicnding."j: try ( fwd~ Is!:.sc[ PerfonnJ.t iyei,~forward"); (wd/rllsg.KIPar3metCT(":to". c3rricrURL); (wd~ls,.scIP;munclcli.":rrom", msS-,CII';tr:lnIClcr{":S4..'ndcr"J); fwd~ls~.scIPa.r.ullelerf":n.'CciYer". c;mierURL); (wd~ls£.scIP:lrllmclert.":scndcr". ms&.gt1Pi\ranlctcr(":rccci\·cr"»); fwd~hJ:.sctP"r.unetcrt";rcpl)'-with". id); fwdl\II"ieIP:m\lllct~r(":l:.\ngu,~~c~, "KQ~IL ~); fwdl\158.,cIP:tr1lmctertM:oJlloio,)'~, ~kqmi-onlol0.Y"); fwd/\. hl,;.fCtC olll~nll~ub~ Isg); sllbl\lsy.ICIP;tt-alllctcr{M;recti\·cr", c:micrURL); If I should h:tlldlc ncsted subJcribed pcrforllllll\'c ... «KQ1-.IL) subl\hS·gcIC(lntcntO).sctP:tr1'mcler(":~ci\'cr", clrrierURL); } ctlh:h (Exccplioncx) ( c)(.prinISI;tckTr:we(); } c" (ColI\'crs:Alion) km.scndl\lesugC((wdMs\:); I')'{ c.., (Con\'erntion) knl.lcnd"less..,!;.C\fwd"ls~); } c.:lIth (ScndF~ilcdException cx) { C:X,flrintSlad:Tmcc{); } c:ltch l!nnlidForm:lIException ex) { cx.primStsckTf3CC!(); } c;'Itch (lrwalid!\lcsJ:ll.cScqucmxException ex) { ex.prinI5Ild •.TrnceO; } C31th (JKQMLExceplion ex) ( c"(.printSlxkT~O; l if(c = nUll) { SYSlcm.err.primln(ncw D:ucO + "< k(IFl1Ur:wc:l_broL:cr.dolh.'CruitOnc(l: "+ " knding forwa.rd menage rttumflllse; flikd"); lel ••( if(dcbu~) Syslcm.err.prilltll1(ncw O;llc() + " <: kqrnUravcl_brokcr.dolkcruitOncO: "senl forwlrd rn{'nJ~ rctumlruc; I I } II if(C2rricr .. "+ luccessfully"): "'••null) I / • 1·1:\l1dlcllOrry perform.uive . • @p:u,,1l\ con\,~I'1:\Iion rtfcrence 10 Ihe Con\,crs •. \Iion ·@p;mtm illig KQ"IL rncu:\!:c :@.I\.'tunltrueifmcsJ:lteisinterpretedsuccessfully,otherwise(:2I5(. protl.'Cll.-d boolean doSoI1)(Collvcrsalion cOlwcr\:uion, KQ~ ..IL Illss) ( if (debug) SYllcm.crr.prilltln{ncw D:'ItcO + " > kqmUr.:wcLbrokcr.doSorry entertd"); Corwcrs:ttion call\, '" (Co/l\,cfution) convel'1ltion: Result res = cOI\\'.,cIResult(); 1~'{ Vector tokens" I'III"KContcnt.parsc«(Strint;) rmj;.1:.ctContclltO); Srringcrrms,,-null; ror (illt i=O; i < tokcns.si:r.c(); i++) { if(((Strin~) tol..cnl.clclIlcnIAt\i)}.;,.-qu:tls[t:.norcCJ.S(";crrmsy·'» errtllSa "lString) tokcns.clcmentAr(i + I); brcJ.k: I I if(dcbu&) { S)'lcm.erq>rilllln(new OJtcO + " • I..qmUr.wd_brokcr.doSorry crruIS};: " + emus,); System.crr.printlnlncw D:'IIc(} + ~ • kqmUr.wc\_broker.doSony Result: ••+ 1\.""); ( l res.ICIRct:ult{ne'W Re1ltrnV:lIuc(r"lsc. crrms.gl}; 1'\.'1.complctc(): iildebu.) Syllcrn.crr.prinlln(llI:w D:llcO + ~ <: kqmUrnvel_broker.doSorry completedM); rclurnlr\le; } c:ltch (RctuhExceplion cx) { SYllcm.crr.prinlln(cx-i;ct1\!cU-;!I;e()); if(dcbu,) Systcm.crr.println\ncw D:\I\:O + n < kqmUr:wcl_brokcr.cloSoTry: ResultExccplion cx.~ctt.lcss~r(»; Tclurntrue; I C~u1:..ht." + 138 I /" • !-I:\ndJcs error IX'rfOrnIJli\'t~. ·@p;tr:tmccl1\'ttUlion reference 10 the COII\~I"I.,tion • @'p:tram milt KQML mcn."s.e ~ @relUrn true i(l11cn~c is interpreted Iu'-'."'Cslfully. olherwi~ fibe. ,/ protected boole:tn doError(Com'Crs;nion COIIVCrtllion. KQML nn~) , if(dcbuy) S)'Slcm,err.print[n(nC"lY DaleO + "> kqmUr.tvc[_brokc:r,docrror entered"); COllvcl"I:uion cony = (Com-crs,.,tion) COf!VCI"I.1tion; Result res"" ,onv.gcIRclult{); loy I V«tor tokens = P:uscConlcnt.p.lrtt'(JSlrin£) msa,:..t.CtCOfllcnIO); Sirin; crnllll= null: fur lint i=O; i < coken5.lizcO; i++) { if«(lSlring) lokcns,c1cmcntAt(i)).equloI!llj;.norcCasc(":errnu&"Jj' c:rrms~ = (Slril1l:;) lokcns,clemcntAt(i + I); break; I I if(dcbu;.){ Systcm,crr.println(ncw DallX) + • • kqmUr.wcl_brokc:r.doError emnsg: • + crmlS;:); S)'Stcm.err.primln(ncw D;JlcO + • - kqIllUl'avd_broL.er.doErrnr Result:· + res); ) reuctRcsull{new RelurnVillue(f.llse. emnsg)); Rs.complc1e(); if(dcbu.g) SYSlclI1.crr.println(ncw OJIc() + • < kqml_tr;t,·cl_broker.doError completed"); return true: } e:llch (Re5ultExccptioll I.'x) ( S)'Stelll.crr.println(4:x.l:;ct1\lcsJ3Sc(»; if{dcbu~) SYSlcm.crr.println(ncw O;"lICO+ "< kqml_tr:1vcl_brok(Or.doError: RCtu!tExocplion caulghl." + cx.gc,I\leul1.g.c(»; rClurnlruc; ) ) / .. .• Handles ~rformati,~s COfI\·CNiation msg KQ~IL truc ifmcn~c whieh not supponcd ~fcrellce in this chi". to the Convcmtion 1lll"U.."\gc is interpreted succt"fully. otherwire fJ.lse. '/ /' protccted boolean doOlhcrPcrfonn:uives(Convc:!rutiofl com·cn:uion. if(dlbuyl( SYSlcm.crr.priI1l1n(ncw Dalli) + •• kqrnUm\'cl_brokcr.doOthcrPcrfomlntivcs:· + "unknow pcrfonmlti"c: "+ mse-;cIPcrfornll.livC(j + rccil'\'cd. 1I1ClS~gc: is ig.nored."); ft I f'Cturnfulsc; I '( String g.c:tAirPon(String :lirpon) { if(l1.irport.cllllnlsli;.llor.:CaKi,"NRT")) ( n:turn nC'o'l' Slrilli:t',\"(NRT) To~')'o, J:tp:,m (N:lrilll)\""); KQ~IL 1111;) ( 139 } else if(3irporl.cqu:!.lslplOrt"C:Uc("CDG")) { return new Slrint("\~(CDG) P:!.ris, Fral1C'C(Ch:.rlcs Dc G:!.ullc)\ •••• ); } else if(:lirport.equ:tlsl~loreCllsceSFO~» { return new Slring,"\"(SFO) 53n FrnnciKo, CA, USA' •.•• ); } cI~ if(:l.irport.cqu;dsl~no~CMc("JFK"» ( rclUm new Slring("\"(JFK) New York, NY, USA (Kennedy Inll)\U); } else if(llirporc.cqu:tlsl;.noreC:ue{"LHR"» { f'C'IUnl new Slrins(',\"(LHR) London, Engl:md (HCJlhrowi'·~J; ) else if(:.irpon.equ:J\sl,"orcC:m:("HKG"» ( !'\:turn new Slril1J>(."\"(HKG) HOII~ Kons., Hong Kong\U); } clec ir(:r.irp(lrt.cqu:d'I;J1on:C:as~.'("HNL"}) ( return new Slrinc("'"(HNL) Honolulu, HI, USA\""); } else ( return airport; 1 1 SIring ~eITilll'iSlrirl8 time) { ifllimc.cndsWith("P~''')) { return "\"" + lilllc.conc:tl("12:1,5") + "\""; } ct'<: irltirl1t~.C11ds\\'ilh("A~'''» { return "\"" + timc.eone;'u(" 10:15") + ~'''''; ) cit<: { rcturntimc; 1 1 1 I" Ptrioll~IAuiiil.j;n·:t"J pxk:1gc com.ibm.KI.kqmls."lmplc.tnwt:l; impon l.'Om.ibm.:ld.kqml.·; impon com.ibm.:KI.ril('ilil:ltor.Facilil:llurPropcnics; imponj,wa.la.nt-·; irnponj:tvajo.·: irnponj:w:l.nct.·: imponj:l\'3.Ulil.·; '" • This ~nt has the rer •..rencc of KQMLM:ln:lt:,cr.lhis • KQ~lL·SIK':lk:lblc. " pri\':lle ,,, KQ~'ILM::II1:1&cr lJ.l:Ul:l\:.cr; ·~cntn:Il11C: " pri\':llc Strill}; ag.:mN:ullC'; '" • local hOllll:l.OlC (kIp fonn:a!) " pr;v:uc String loc-:1I1·losl; '" • f~;litator ilddreu(ktp " priVo\lcStrin: (onnat) fltCilitllor; '" • lil\"'C)"C!CID " priv.lIc Strin,lircc),clcID; I"~ • )'cllowl>a;.c1D " privlle String rcllowp;tgcID; '" ·rnl1lc " priV:ltc Pcrson;llt\uiSltr:unc '" • (TI1tllC " frome; :\tcnt is 140 pri\':lIC PCrJoIIJ.1Scl«tW;l\dow sdeetWindow; '" • port number " private inll>Ort; '" tTfIl\'clBrokcrAddrcu " ,., priv'3.lc SlringtravelDrokcr; • COllilructor • @p:mllll port socket I>on numOCr. " public Pcrson~IAn;SI(int Ih;l,port'" port; FacililllorPropcnics portH fp; tl)'{ fp '" new Facilit<llorPropcrtic1(): } catch UOExceptioll c)t) { c)(.prinISttlckTr3C-Cl); return; ) ftlcililJlor = fp.gcIOncURL("klp"); if(r.lcilita!Or== null) { priru(" no kip f:lcililalor found, 1)'SlclIl t'xil!"); SYit¢nI.c.xit(I); ) ~cntN:\ll\c::: new 5IrinJ;("Pcl'loll;\IAnisl"); print("port" + port); try { InctAddreu home = InctAddreu.£cILoc:lIHOlIt); Strin&BuiTc( bur= new StringBuffcr("klp:/r); buf.!1ppcndfhome.£,(1J-iostN:une() + ":"); bur.:tppcmJllnlc~cr.toSlrin&(port»; loc31Host = new Slrinl,O(burJoStritlSO); } c::uch (UnknownHoslExccplion e) ( S)'1.1em.crr.println("Unkllown H01IN!1!l1c"J; /I Syttcm.c.'l:il(1); ) ir(-I !""pon){ kM:Ul~cr = new KQ~ILManlJ,;cr(:l.S;::nlName, (mme = new pCf1()rll'AUisIF~mc{lhil); fmmc.lho\,.{); {/sccn.uio -(35) lCtRegilterL{); /I sccII:\rio -l2~') sctAsk3I1Vl); I public KQ~IU.llln:t:Cf rcturnkl\[J.113g.cr; "lop", poOl; £ctKQl\ILM:I.n;t,ge-r() { ) public SlrinS sctTT3\,clBro!:cr() return trl.\'clBrokcr; { ) public Siring gi.'tl.oc:tIHo110 return IOCllHoll; { ) '" : Jhowfll~hISch~llllh .•clIU"d by " fll:fKllllll •.•.• ultfrJ.me. public \"oid JhowFlightSchcdulC\Flightlnro prinl{"timc Khcduk "); printl"c:lrrier + fln(o.,SctC:uricr(»; M flnfo. int expirooTime) { 141 IIprinl(~nidll prinll"dcp3r1Urc prinlr:mivtll print("dcptTimc prinlt"ExrirtdTimc .•+ nn(o.); .•+ nnfo,£ctDep:lrturc:(); .•+ nnrO.tctArti\,1I1()); .•+ nn(o.tc1DcptTime()); .•+ expircdTime); if( nnfo.tcIArri\'3.10.cqu:lh("lNRT,Tokro, nnfo.scIArriv31("NRT"); } else if( nnfo.;ctArriv:!.IO.equ:lIs(',\CDG) nnfiucIArriv31l"CDG"): } dsc if( nnfo.i:,CIArriv31().cqullse(JFK) tlnf').IcIArrivJI("JFI.:."); Jlp:tn",) ( Puis. Fr.tnce~» ( New York, U.S."» I if( nn(o.~(:IDcplnllrc().cqu:tlS("lNRnToi..)'O, nn(o.u,Dcp.'utufC\"NRT"): } elK' if( nn(o.GC1lXp:lrlurc'().c<\u31tl"(CDG) t1nfo.tctDcp3r1UI'd, "COG" J; } elle if( nnfo.l,;.eIDcp;lrtlln:O.cqu(\\s\,'(JFK) nnfo.lctlXp.,nurc("JFK"); Jallan",) { t Pari" I'moce") Ntw Yorl, { U.S.") ){ I IIsccn:uiol:!-3) Vc<:lor :airLineCandidltes = sclBrkallAsbllTtllnfo, if{llirLincCrmdidM,,:s!=llull){ IclcctWindow - ncw Pcrson:llSclccl\vindow(lhis, } clsc { SYIICIll.CrT.princlnrno result l\.."'Crl3rio(2-3n; cxpircdTimc); :tirLineCandid:ucs); I I "' - Person:llAuill:ml -l«nario(J.5) rtt;.isCe:r on LifeCydc " rrivate: void sctRe~jsterL() { KQML kqml <K new KQMLO; Slril\, rw" new Scrin.t{kf'.·bnaser.g.ellniti311D(J); kqml.ltt Pcrfornl3C ive{ Nrcti"cr~); kqml.sctP3r:UllClcr{N:n3mc", a~ntNilmc); kqllll.~IPni.\meterl..":kndcr", IOC3IHosI); k(jml.sctP3ramCler(":r«ch-er", (l\Cilillllor); k:qml.lttPnr.:uneler(":reply·wilh", rw); kqml,lcIP:tr:mlc'{'((":I:lniU~CH, ":1IlACL"); kqml.s.C:tPnNUllclcr( ":onlology". "tif«yclc"); k<1I111.SC1COtlICIII("(:cllu Pcrsol\J.IAuisllnl)"); Con\'crs:tlion con\," null; '')'1 (Con,'cr1:1.lion) kM3n,,!er.5cnd~len3ge(kqml); } C31Ch lScndF3iktlExCC]lIion ex) { cX.priI1lSIIle\.,Tr:"l«O; } eltch (In\':"IlidFonn:uExccption ex) { cx.printSlnd.. TflICc(J; } c:uch lln"J.l1d~·les~cScquenceExccption ex) { cx.printStack:1"r:k-e(); } c:ltch (JKQI\ILExceplion ex) { ex.prinISt.:"lckTrntt{); I con\,.gcIRclull().w3itFor(45000): Result res "" oonv.&ctResu1tO: if( rcs.ilA\'Jil.:"1bIcO) { RcturnV31uc nil =IRctumVl'Ilue)res.gC1ReJul1{); irlrtn.i!OKl)){ lifccyclclD'" new Strit~tString.)nn.:eIRC'lurnV:\lucO); print("rcGiucr:" •.lifC(}·c1c1D); ) clse{ S),Slcm.crr.prinlln("JCIRcsisti.'rLO :Error in rcgi~t(ml Syslem.crr.println«Strins)ctn.l;ctRelurnVJluc()\; proceu",; 142 Syslcm.cxiu,-I); ) } elsc { Syslern.t:rr.priOllnl~setR('&iltcrL{) :Error Retull iSn'11\'3ilable"); /I SYllcm.cxit(·I); ) I '" • PCI"IOf1:aiAuiI3sk-a1l yp on Ycllowp:s:~ • scenllrio(2-n '( privatc void KI .••.• sbIlY(j ( KQ~IL kqml::: I1('W KQ:\ILO; SIring rw II: rlCWSlril1gtkJo.I3n,,~r.g~llnitj:sIlD(J); kqml.1CIPcrform3tive("3sk':'Ill"); kqml.lCIP3rnmclcr(":n:lI11e". "t~ntN3.mc}; kqml.KtP:munclcr(":ltntkr",loc\llllnst); kqI111.lCIPammctl'r(":recci\'Cru• fllciJilllor/; kqml.scIPl1rnmClcr{,,:r-cply-wilh", rVl); kqllll.sctParmnch:r( ":llItl.ll:U;\l:.C", "3n,~CL"); kqnll.sctP3rnmclcrtM:onlol~", "ycllowpl:es"); SIring COl\lenl ••new ~Iring( "(:c;ucl:0ry Inwd" +'~'n"+ ":lubCalc£Ory Ir3sd·broker)" ); kqml.k1Colllc11I(contcl1Il; Conversation con\' '" null; try { cony = (COIwcrs:llion) k~l:\n:tgcr.lcndr-.lcsusc(l:qmIJ; } c::Ilch lScndF:r.ilcdhccption ex) I cl(.printSlad.Trxcl): } c:!.Ii:h (In\'3IidFonnat[).ccption ~x) ( u.printStackTra.:ct); } calch (In\'alidi\kna};cScqucnccE.\ccplion e.,<) { cx,primSlxhTroccf'r: } catch (Jt-.::QMLExceplion ex) ( cl(,prinISllcLTr;w;e(l: ) COIl\'.,CI Rcsu 11\).\\ .lil r: 01'14.5000); RClullrcs·cClllv.£etRcsllh(); ir(~jsA"ailablcO){ RClurnValuc rtn '"' lRcturnValuc)rci.SctRc,u!tU; if(rln.isOt-.::() : .,,&cl1llnfo ~clliinfo '" new A~cnllnfo(); Veclor :t&cnllnfos = (Voclor)rtn.;cIRctumV3IucO; EmnncrnllOn enllnl = 3gcnllnfos.clcmcnts(): .••• hilc (clltull.hasfo.loreEkmcnuO) { 3&cminfo = (AtcnllnfiJ}cnum.ncxtElcmcntt); prinWNmnc : ~ + 3ttnlinfo.:cIA;entN:utlClI 1; print(~URL :" + a,!;cntinlo.setURLO); prinWCI;lilN:\lllC : " + 3gentinfo.tetCluIName()}: 1r.\Vcl/]l'ul;cr'"' ncw Stringtagentinfo.£etURL()); ) }cJ5e{ S)'Itcm.crr.prinlln("SCIAlbIlYO :Error in :"\;'::111 pcrformJli\'c"); Syslclll.crr.println(lStrillg)rtn.,£ctRetumV31ue(»; 1/ SYllcm.cxit(-I); I ) C:lsc { SYSlcm.err.prilltln~"lcIAsbHY() ) I '" , sccn:trio(2-3) :Error Re5ult isn', :anilnblc"); 143 '/ pri\':ttc Vector IC1BrkJIlAsbIlT{Flid!tlnro nnr\). int c>:piredTimc) ( KQML k.qml- new KQ~IL(); Siring rw = ne .•••. Strin:(kM:aIlAl:..-r,ttliniliJlID()); SIring "",2 - !le\\ StrinJ,;(k.\I:r.II~cr.~'nili;rIlDt.H: kqml.scIPcrrormlth'C(~brokeNIl~); "ql11l.lcIPmmcter(~:nlrl)e", :3ig,cnlNanw:); kqml.scIPJ.ramt'lcr(":~ndcr", ]oc01II-1osl); kqml.U1P.lrJmCler(":rccch'er".I",~lBroker}; kqmi.scIP:lramcu::r(":rcply-wilh", rw); kqmJ.sctpjJ,r;unclcr(":bn~u1g.e". "KQML "); kqmI.KtP3rJ.rncter(":onlolo~y". "tra\'t:l-brol..er"):: KQ~IL kqmU = new KQMLO; kqml_i.scIPerfvrnllui\"C("uk-:llt"); kqml_i.ICtPllramelert":namc~. 3;enIN:!mc}; kqml i.scIPOlmmCICI'I.";scntlcr",locaIHOlt); I..qrn(i.scIPnrnmclcr(":reccivcr".lr.m:1Brokcr); kqrnU·setP;u-:tmctcr(":rtply-with",1'",,2); kqmU.kIP;\r:l11lCICr(":I;tllSuagC", ":tnACL HJ; kqml_i.~tP3r.alllctcr(":ontolo&y". "1f3\"tl~); Stringoontcnt; int cxpirtltiol1Timc '" I:xpircdTimc. 10; 1110 k"'Condl for.::Olllllni;::ation with Tr:!vel broker if (nl1fO.CCIC:uricr( ).cqualllglloreOuc\ "I!lny"») { content = new Slring( ~( :ck-p.1ClUrC ~ + nnfo.i:etDc~nurtO +"\n + ~::uri\·31 + nnfo.tctArri",,]O +"\n"+ M:dcptTime \-" + nnfo.:etDcptTilllc() + "\"'n" + ":cxpirationTime "+ ncw Intcrcr(c)(l'irntionTimc} + 'T ); )clse{ cOlllcllI""ncwString( "( :carricr" + nnfo.~ctC!lITicrO +"\11"+ ":dcp.1nure + nnfo ..tctDep:\nurc() +"'.11"+ "::mh·al" + fln(o-letArri,,;al() +"\n"+ ":dcptTime \0. + nnfo.:ctDcp'TimcO + "\"\11" + ";c1:pirltionTimc .•+ nrw IlIto!;:.:r(c"<pimlionl'ime) + ")" ); ) kqml_i.scIConlcnl(COlllcnt); I.qml.lCtColllcnI(kqml_i); print("qucry ,trin; :" + I..qml.toStrintO); COII\'CI1o:ttionl..'On\': null; M M 0 ."'( con"" (Com'c~tioll) kMJn~cr.S(nd}'ICin.ge(l..qml); } c:uch (ScndF4ilcdExccption ex) ( ex.printStxkTrnee(); } c:ltch (In\'31idFonllltExccption ex) ( cx.prinISI~kTrxc(); } c:lIch (I1l"OllidMcu3gc$equcnceExccptioo ex) { cx.printStkkTnlC~): } ulch (JKQMLExl.'eplion ex) { cx.prinISlxkTroceO; } Jt~Jutl r« '" conv.tetR~5U[I(); RClumV:tlucrtn: VI..'ClorcJndid:lles '" new Vt'CtorO; rcs.w;liIFor(expireJTimc - 1000); if(r.:s.iIA\':Ii1l1bkO) { if(nulll'" (rtll" (RClumV:tlll.::)rcl,t;ctSubocribcdReiuhO»' if(rln.v:tRclurnVOlluc() insl3rlccof VI..'Clor)( Veelor m~hll = (VI..'1;lor}nrq;..ctlh:turnV::ilue{); Enumcr:ttion enullI:II nighlS.clcmcnU(); whIle (~num.lrlUl\IOreEI~'rl1elllS()) ( Flightlnfo rcsuhFlnr.., : (fli;hIInfo) cnum.ll<:xtElcmcntt); 144 c:andid:llcl.3ddE1c:mt.nt{rcsuItFln(tJ): prim(-C:l.TTiC'r : ~ + muhFlnfo.\:C'ICarrierO): print("F1ilOht :" + rcnlItFJn(o.G.etFli~ht(»; printl"Dcp.1nure: + reiultFln(o.J;clDcplrtuf1'(»; print\"Arri\'31 :" + r~whFlnro.tetArri"21()); printpkptTime :" + resuhFlnro.;ctDeptTimc()}; M I I I } else { Srstelll.crr.println(·sctBr~J.lIAd"llllT() } f1.!1urnc;\ndid:lIel: } public void st:l.rtSubscribe(FIiJ:lilinfo I ,.. :Error R"ull iSI1'\av-.tilabJe"); finfo) { : print for d~buI:. ·@JXlr"rn mig print rncSS3tc ,/ pri\,Jlc\,oidprint{Stringmsll) ( ir(KQML~lrm:\&('r.dcbug) { SY'ItcllI.crr.prinlln("Pcrson:itlAnisl."'" I tn.,}: I r' * n13inroU1inc aoo • @p:lT"m :tf",;sl] port number. The def.lult number is I. '/ public SI:l.lic void lI1:1in(Strin, :u'j;.s[J) ( ililpoo-IIOI; :!Iulnsusa;;,," new Slring(·U~c: PenonalAuist [-Ir3C'C] ,-port <ponH» in! :1I~c".u&S.It.'tl~lh; ror (jm i '"0; i < :utC; i++) { try { ir(:tr,t[i].equ!lIW·tl";1ce~» { KQ~lLl\l!1n.,I1:~r.dC'bu~ '" true; } else ir(n'11l!i).equJll("·pon~n { port ••lntcgc:qurselnl(llrgs[++ij); } el-,cif(:Hi;l!i].equah.("·hdp"» { SY:llc1I1.err.println(ulltC): S}'Ilcltl.cxil(O); }CI5C{ Sy'tcm .•.• rr.println\uu:el; S)'lclll.exit(I); } } c~tch (Am'lylndcxOuIOfBoundsExccplion e) { SYJlclll.crr.prinllnlun:cj; Srslcm.exil(l}; } calch (NumberFonnlllEAceplion nfe) ( SYSletll.err.prinlln(u~e): S>"tlcm.cxh{I); I I PersonalAuiSI 2pl' '" ncw PcrwnaIA:l1isl(pon); I I '"''crlon:IIAuiitfr,lllIc.j:ln.''' p3d:"tc com.ibm.acU.:qml!ampJc.ll"ll\·cl; import com.ii.>m.:'oCI.i:qml.'; importjava.lnn.(:.': imporlj:w;l.Ulil.': importj:wa.3wl.'; illlportj;!'\'a.3wl.imJSc,'; [.hclp)~); 145 imponjll.\".l.io.'; private Pcrson:dAuiil ogene; priv;,tc Choice c.lrricr = ne .•••. Choice(); priwllc TcxtField ni£ht = new TcxtFicld(,"'); priva!¢ Choicc dCplr1UrC '" new Choicc(); private Choice :mh'.ll '" new Choice(); pri\'llC Choice monch '" ne ••••. Choice(); pri\'\ltc Choice d;ty '" new Choict(); priV3tc Choice time Range '" new Choice(); priv:!.!c TntFicld expired '" new TexIFicld("30"); pri\'.ltc Button lhow ::: new BUllon("Show Flil!.ht~); priv~uc [)ulton clelr '" new llultoo("Clt1r"); priw\tc Button do:>c ::: new Buuon(~Closc"); pri\";l1c F1ithtlnfo ni~htlnr" = new Fli;htlnfoO; ,.. .• Conllructor .•@p3ntlll.li;cntrderencetoKTI'Agetll '/ public PCriOllaIAuistFuntc{,Pcrwn:llAuis\ supcreFli;.ht Pbn in PcrromllAuil\llnt"); this ..lscnt= 3.1cnt; :.~cntl ( Hearrier sclauder\); I/dcp..uture scIDc~rtur~O; II :trriv~1 ~tArri\'310; II month tttl\fonth(); IId;\y 1CtD~)~); IItimcR3n~c timeRnnr,c.3(!dltcmrAi\\"); tinlcR:lr\~e.:lddltcm("P/l.I"); II title label LnbcltitlcLilbel" new LabcWTrl\,c! Aniu3nq; IfLlbcltitlcubd = new L:..bcl("Pcflonal .4..uist:lnt"); tit1cLzlbcl.sctFont(new Font("Hch'cti~", Font.BOLD, 36)); tit1cL.1bcl.leIFofo:srollnd(ncw Co\or(60, 170, 60J); 1/ green PaneltitlcPanel = new PandO; litIcPancl..,dd(ljlleL~bcl); titIcPllncl.sctBl\Cl.:ground(Color.white); /1 PAnel I ....--..-.-----.---...----... GridB3£l....lyout Srid~ = new GridB~L:\)'OutO: Pand p.,nd I = new PandO; p;lnd 1.~luyout{ tridb~1:); p;tn~ll.sctB)Ck:round(Color. while); DePlrture LnbellllbelDcp'" new L:lbcl("lXp:mur;!"); l:IbdDep.sctFont(ncw Font("Time1RlJm:ln", fom.BOLD, eotl!lntin(p.lncll, bbdDcp, 0, 0, 2,1,5,5.5,5); J':I)'lrtur~.ktFont(n<.:\\ Funl("Tim<.:~Rolll:mM, Font.BOLD, constr:tin(p.1nel1, dcp.lrtllre, 0,1,1,1, 5, 5,5.5); IIICI 1&)); 15)); IIlctArrh':tl L:tbel hlbdArr '" nc\\' Label(" Arri\,.ll"); l<'!bclArr.setFont(new Font("TimesRQI1l3n", Font.BOLD, II); cotlltra.in{pal1cll, blxlArr, 0, 2, 2, 1,5,5,5,5); :mi\~I.sclF'om(new F'ont("TimelRonnn", Font.BOLD. 15)); conslruin(p.lndl,:uri\'al,O,),I,I, 5.5,5, 5): II set C~rricr L:lbel1:t1x:1Caf = new L:llx:l("C;trricr~); labcICnr.sctFol1t(ncw Fom("TimcIRoJtlan", Font.BOLD, eonslmin(p.,ncll, !JbclClr, 0, 4, I, 1,5,5,5,5); II»: 146 c;mier.lttFont(ncw Font("TimuRoman", Font.BOLD, cOIl1train(p:l.llel1,c~rricr,O, 5, I, 1,5,5,5, 5J; 15»; llioCl~lonlh L1belllbelr.lon:= new Label("i\lonth "); Ilbcl1'.lon.leIFont(ncw Fon!("TimcsRom;lIl". Font.130LD. IS)); COnSlrl.\in(p:lncll, l.bcl~'lon.2, 0, I, 1,5,5,5.5); rnonthsctFont(llcw ronl("Tim~'Romln", Font.BOLD, 15)); IIconltfain(plnell,monlh,2, 1, I, 1,5,5,5.5); constr.tin(p3.ncll, month, 2,\.1,1, 12,0, GridB3.:Constraints3"':ONE, GridB:\,gConstr.lims.NORTHWEST, 0.0,0.0,5,5,5,5); If let TimcRlI.n,c Label bbclTimc = new LAbclt"Till\eR.ln~c"); IJbeITimc.$dFom(new FonWTIrnctRom:m". Font.BOLD, COllilfJ.in()X'lIcll, l'lbcITirnc.2, 2,1, J, 5, 5, 5, 5); timcRangc.iCtFont(ncw FOnl("TimclRom:tn", Fonl.BOLD, cOnl:tmill(p.:mc! 1, timcRange, 2,3, I, I, 50,0, GridB:agConstrllintl,1\ONE, GridB,,~Conltf:\ints.NORTHWEST, 0.0,0.0,5,5,5,5); II set DJY LOlbcl bbelDly = new Lltbel("DlyK); 100beIDJy.ICtFOIII(IlCW Font("TilMsRotl1nn", Font.OOLD, conmOlin(plllCll, [~bcID~y,4, 0, I, 1,5,5,5,5); dlly.sctFont(ncw Font\"TilllcsRom:tn", FOIlt.IlOLD, IS)); /lcof1Slr:lin(p:mcll, d!lY, -I, I, I, 1,5,5,5,5); COI1IIr.1in(p:allell, dllY, 4,1.1,1, ::!O.O, Gridlll,SCOlUlrJinl1.NONE, GridBJ!.:Consl~inlS.NORTHWEST, 0.0,0.O,5,:i, 5, 5); II)); 15»; 18)); II rei Expired Ll.bcl bbclExp '" new Llbcl("Expired Timc bbclExp.~tFonllnew Font{"Tim~sRom:tn", Font.BOLD, II»; conllmin(plncl1, bbclExp, -I,::!, I, 1,5,5,5,5); cxpircd.lctFonl(new Font("TimcsRolll:Ul", FonI.130LD, IS)); IlcoflSlf:lin(p:mcll,cxpircd,-I,J, 1. 1,5,5,.5,5): constrOlin(plncll,cxpircd, 4,3,1,1, 21,0, GridB:tgConSlrlinu.NONE, GridBlg,Conllflinls.NORTHWEST, 0.0,0.0.5,5,5, !i); IIlcll3ullon .. •.... ••••.. •••·•••••.·•••• Panel bu\lonP:md '" new P3nelt); buItOnP;tllel.sell.:I),ouUllcw FlowLll.yotll(FlawLlyout.CENTER»; butlonPancl.s<:'11J3"::\.:!lcound(Color.white); M ); show'" new j"\'3.:l\\1.Bullon("Show Flight"); t.how.IctFotlt(ncw Fonl("Couricr", FOllt.BOLD, /It.how.rt"Shll>C(j.!i,IO.23); IIshow.lct13oundl(ncw Rcctmltk(5,5,SO.23 bu!\onPanc!."dd{.Ihow); 13»); »; close'" new jl\·:u.wt.l3ul\on(" Clo!c "); clO1C.ktFonl{IICW Font("Courier", Font.BOLD, IIcl05C.rc$h~p<.>(IOO,5,SO,21); IIcIOl~.t.etl3oundi(ncw R~J.ngII!{IOO,!i,SO,23)); 13»; 147 bU!lonP"ncl.~dd(close); /lconmllin(buIIOflP:mcl. show, 0,0,1,1 ,GridBatConSlrllints.NONE, II GridB3sConstrainls.CENTER, 0.3, 0.0, 0,0,0.0); llconsl~in(bu\lonPancl, close, 2,0.1, I.GridB;t;Consl~ints.NONE, II GridB~ConSlrllints.CENTER. 0.3, 0.0, 0,0,0,0); II 1<1Layout o( ~ hole (rame ••••._ .••••.•__ ..• SoeIL3yout(;ridi»l:l; setB3Ck:C.round(Color.whitc); conllrain(lhis, litIcP'ncl.O,O,I.I, GridBagCooslrainlS.NONE. GridBlgCofUtrainlS.CENTER, 0.0, 0.0, I, I, I, I); conmolin(this, JWlCII ,0, 1,1,1, GridB~ConS(f;'linlS.BOTH, Gridlh:Conurolints.NORTHWEST,O.O,O.O, 1,1,1, I); eonslr1lin(lhis., butlonPoln~I,0,2,1, I, Gril,\l3,,:Conllr.lints.HOR IZONTAL, GridB;1sCOnIIT.lints.CENTER, 0.0, 0.0,10.0,10,0); IISClinilial\''\lue :mi\".lI.scl«ll·'(CDG) P~uis. Fraocc"); mOlllh.lCl«I~"t..l;uch"); d3y.icl«t("2IM); limcR3.nl:c.lctecl("A"'I"); 1I~ISil.c(400.J2S); p3ck(); .how(}; ,,' 1 , aclion on Button and Choice ·€PJ.f3ll1eC\'~t • 4Ep3.nm oobjcct " public book.m :t.:liunl..Ewnt e. Object oJ { i((c.I:1IJcl inll1ncco(Bu\lon) { i(C.I'-'"ICI =co mow) { Oi&hlln(o.letC:urjc~c:mjer.,ctSdl!(:lcdllcm{J); i1i:I\llnfo.«IDcp3nur;!(dCp3nurc,~ctSclt'Cledllcm()); ni,htlnfo.LCIArrivll1(:uri\';\l.gdScil'CtcdltemO); Strin:Buff~r 11rbuf '" ncw StringBuITcr(momhToNumbcr(moTlth.:cISelcctooltcrnO»; Slrbuf·JPpend(~I"); strbuf.3ppend(dly·tctSck'(lc:dltcm\)); mbuf.artX'00("!97"); Ilrbuf.3ppend(timcR3n:.q~elxl«lcdIICm\)); fli~hlln(o.IeIDcpITilllC(llrbuf.toSlring()); imex]ljr~dTillle; S!rina lemp" cxpi~d.~cITI:"'tO; if( temp"= null) expiredTimc:= IS; ,I., cxpircdTinu: =lntcJ;.CT.p::U1;c:lnl(lemp): 2~enuho\\FIi:hISchedule(ni£htlnfo. cxpircdTimc); rclurntrue: }el~if(c.llr,ct"c:do5CI( JiJpos~,\,: Sysll'lll.exil(O); } } elst ir(~.urgct inSIl.ncl.'OfChoicc) print("~I~""1. Choice~); } return super.3(lion(c. 0); ( 1 '" , h;J.ndlcc\,cnt '@p:mmttc\,crtt " public boolcllI if(e.id h;mdlcEwnt(Evcllt c) ( """ E\,cllI.WINDOW_DESTROY) { 148 tlisposC!(); Sysletn.exit(O): rctumtruc:; , } return luper.h!lndlcE\'Cnt(e); '" 'sclcl1rrier. ,/ pri\'3tcYoidscICmier(){ c:micr.xldr'em("J.ny~): c)rricr.:addIICm("]AL"): cmicr.:lddllcm(".A.NA"): , '" 'sct dep1J1urc '/ pri\'Jlc\'oid 5C1[kplrlUrt() { dep:mure.addllc!1)("(NRT) Tokyo, J:l1>-1n"); dCplrlure.iJddltclll\"\CDG} P,uis, fr;\Ilcc"); dCPJ.rturc.~dJ1Cm("tJFK) New YOfk, U.S."); , '"'sct,minl '/ privillcvoid scIArri\"Jh) ( lrri\'JI.!lddllcm("(NRT) Tokyo, );\Jl.111"): :lrri\"ll.\!ddltcm("(CDG) PlHi1, Frnncc"): 3rri\'lbddIICm("lJFh) New York, U.S."); , '" 'sctrnomh ,/ printc void set1l.Iomhn { month.Mdllenl(" Jlnulry~); mOllth.1!ddIICm("F.:brary"); month.ldd[tem{~\ 13fCh"); month.lddllcm("April"l; month.:sJdltemi"\I:w"); month.:lddllcm("Jun~·'); mOmh.3ddllemi"Jul>"); lllonth.lddlle'rll(~:\U:LJ'I"): 1ll01lIh.;U!dlICIll!"s.;ptcmbcr"); nlonth.3dd!tClllt"O~h)Ucr"); monlh.addlICm("No,"r.'mbcr~); montlu.ddltctn("Deccmlx"r"J; , '"* seidl), ,/ priVJICYoid sctDJ)"tl { d!l,y.~ltcm("OI"): d3y.:lddltcm("O::!"j; dl\y ..,ddltcm("03"j; d"}·.:l.dd!tclll("O-t"): dtly.:.ddllenl("05"J: dly.:sddhcm("06"l: d:ty.:'Iddltcm("07"): uly.:multC!1l("Oh"): dly.:KIdltem{"OQ·'i: mp.ddltem("lOl: d:ly.:\C[dlti.'m("I 1"1: d:l}'.3ddltcl1I(" I~ .,: d:ly.:adrlltcm("13"l: ulIy.MdHemr I -1"1: uly.addltcrnt"15"): U:ly.3ddltcm("16"): 149 dsy.addltem("lr): dOl}'.lddltcm(~IS"); (by.::addltcml"\9"); d3)'.addltcm( ":!O"); d:ly.addllcrn{"21"); d:1y.:l.ddlteml"22"); d:w.3dd[tem(~:!3"); dl~·.2ddltem("2<1N); da;,..ldd1tcmr25"); day.!\ddllcm("26"); dly.llddltcm("27"); dJ,V.3ddlh:m("21"); dl)·.~ddltt:m("29"); tllY·llddltem("JO"); dl),.S(ldllcln("31"); ,.. I "(ramcutility '/ public \'oid constr:lin(Cont;'lincr cont:l.incr, COlllpQncnt con'ponenl, inl ;rid_,'(, int ;rid~v, int srid_width, int SfidJtci£ht, int ipld_x, int ip:KI....>'. illlli1l, int :mchor, double wcisht_x, double wci~ht3, int lap, int left. int bonorn, int riShl) { GridB3gConstr3ints c =: new GridlhgConstr:lints(); q:ridx =: ;rid_x; c.gridy ••£ridy; c.ipldx =: ip3d_x; c.ipJ.dy:: ip3d..J·; q;,ridwidlh =: grid_width; c.tridheight '" srid_hcithl; c,till at fill; c.cnchor = ~nchor; ('o\\ei;hIX = weighl_x; c.weig.hl)' '" weiShtJ; if( lOp + boltom + left + ri£llt > 0 ) c.in!C1S '" new lntcts((op, len, bonom, righl); (l G r;dl3 :\ILlYOUI )coll\:lincr ,teILayoUl()).IoCIConslT3 iillS{componenl,c); coo!Jiner.:.dd(componcnt); } /" ·fr:l.meulility '/ publk \'Oid cons\rain(Conlaincr COlllllill~r, Componenl componenl, illl :,riu_x, inl ;.ridJ', inl ,rid_width, illl grid-'lci~l\, i1ll fill, illl :.nchor, double wci£hUI(, double w;:itht~', int lOp, int leil, inl bottom, int risht) { GridB3gConmaints C '" new GridBngConsIF.linti(); q:ridx '" grid_x: c,gridy '" 1!ridJ; c.gridwidth '" :;rid_witllh: c.;ridheighl '" grid_hci£ht; c.fill'" fill;c.ilIllchor=:Inchor; c.wci:hlx =: \\ci •.hl_,'I:; c.wci:.hty '" \\'eightJ; if{ lOp + bottom + len + risht> 0) ~.inlclS '" nl:'Yo<lnscli(IOp, len, bottom. riaht); Ilprinll"cOntliJ1cr.gc!L:t),OIlIl)" + cont:lincr.j;ctl...2youl(); l(GridB~Lil}'out)conl:liner·tcILayouIO).JeIConsll1\inls(coml>oncnl,c); cOIIl.lincr.:sdd(compollcnt); ,.. I tfT3J1lculility '/ publi,; \'Oid ~""IHtmin(COnl;lincr conl:'lincr, C0Il11lOJ1Clll component, int grid_x. int ;ritlJ, int lOI'id_wiulh,int grid_hci,sht}{ con1tr'.Iin(conIJincr. ctltllponcnt, nrid_x, ~id"'y. ~rid_width, IOrid_hcight, GriJ8:t~C01111r:tinls.NONE, GritlB:~ColI~tr.liIl15.NORTHWEST. 0.0, 0.0. 0, O. 0, 0): I "' t '/ {mJl1culility