UNIVERSIDADE FEDERAL DA BAHIA LABORATÓRIO DE SISTEMAS DISTRIBUÍDOS ESPECIALIZAÇÃO AVANÇADA EM SISTEMAS DISTRIBUÍDOS MARCUS VINÍCIUS ALMEIDA SILVA TRANSPLAN: UMA SOLUÇÃO PARA MAPEAR E PLANEJAR SERVIÇOS WEB SEMÂNTICOS Salvador 2008 MARCUS VINÍCIUS ALMEIDA SILVA TRANSPLAN: UMA SOLUÇÃO PARA MAPEAR E PLANEJAR SERVIÇOS WEB SEMÂNTICOS Monografia apresentada ao Curso de Especialização Avançada em Sistemas Distribuídos do Laboratório de Sistemas Distribuídos, Universidade Federal da Bahia. Orientadora: Drª. Sc. Daniela Barreiro Claro Salvador 2008 MARCUS VINÍCIUS ALMEIDA SILVA TRANSPLAN: UMA SOLUÇÃO PARA MAPEAR E PLANEJAR SERVIÇOS WEB SEMÂNTICOS UNIVERSIDADE FEDERAL DA BAHIA Monografia apresentada ao Curso de Especialização Avançada em Sistemas Distribuídos do Laboratório de Sistemas Distribuídos, Universidade Federal da Bahia Aprovada em 13 de Outubro de 2008. Banca Examinadora Marco Simões Orientadora: Drª. Sc. Daniela Barreiro Claro, LaSiD/UFBA Salvador 2008 4 A Meus pais, Antoniel e Gilvanda, pelo seu amor e carinho, e a minha esposa, Vilmária Silva. AGRADECIMENTOS São tantos e tão especiais... À Deus, em primeiro lugar, por me ter concedido vida e saúde. À minha esposa, Vilmária Silva pelo apoio incondicional. À meus pais, Antoniel e Gilvanda, pelo amor fraternal. À meus irmãos e amigos, Lucas e Gabriel pela cumplicidade. À Daniela Claro, minha orientadora, que me conduziu durante o processo, sempre tão atenciosa. À Carlos, Monique e Fábio pela ajuda na revisão do trabalho. À todos meus amigos e professores que de alguma forma contribuíram para elaboração deste trabalho. Muito obrigado por possibilitarem essa experiência ímpar que contribuiu para o meu crescimento como ser humano e profissional RESUMO Os serviços web têm sido cada vez mais utilizados pelas organizações para prover funcionalidades aos seus parceiros. Em determinadas situações, apenas um serviço não é suficiente para atender uma requisição de um cliente. Neste caso, estes serviços devem ser combinados dando origem às composições de serviços. Por se tratar de um ambiente dinâmico, a composição manual pode envolver muitos serviços e se tornar muito onerosa. Para realizar essa atividade automaticamente é necessário que os serviços web sejam descritos em uma linguagem que máquinas consigam compreender, ou seja, de uma maneira não ambígua. Assim, a linguagem semântica utilizada para descrever os serviços e o planejador utilizado para compor estes serviços necessitam trocar mensagens para que o processo seja automático. Diante deste contexto, o objetivo deste trabalho é desenvolver uma solução para o mapeamento e planejamento dos serviços web semânticos descritos em OWL-S para o planejador JSHOP2. Foram avaliados dois cenários de testes, um deles presente dentro do framework SAREK. O Transplan obteve resultados satisfatórios no mapeamento destes serviços. Palavras-chaves: composição de serviços Web, owl-s, planejador JSHOP2. 7 ABSTRACT The web services have been increasingly used by organizations to provide functionality to their partners. In certain situations, only one service is not enough to answer a request from a client. In this case, they should be combined leading to the compositions of services. It is a dynamic environment, the composition may involve many manual services and become very costly. To automatically perform this activity is necessary that the web services are described in a language that machines can understand, ie, an unambiguous way. Thus, the language semantics used to describe the services and the planner used to compose these services need to exchange messages that the process is automatic. In this context, the objective of this work is to develop a solution to the mapping and planning of semantic web services described in OWL-S for the planner JSHOP2. We evaluated two scenarios for testing, this one within the framework SAREK. Transplan has satisfactory results obtained in these mapping services. Keywords: web services composition, owl-s, JSHOP2 planner. LISTA DE ILUSTRAÇÕES FIGURA 1 – CICLO DE VIDA DO WEB SERVICE. ........................................................... 14 FIGURA 2 – ARQUITETURA DOS SERVIÇOS WEB........................................................ 15 FIGURA 3 – ESTRUTURA DO ENVELOPE ........................................................................ 16 FIGURA 4 - ESTRUTURA DE UMA MENSAGEM SOAP.................................................. 16 FIGURA 5 - UMA REQUISIÇÃO SOAP SOBRE HTTP. .................................................. 17 FIGURA 6 - UMA RESPOSTA SOAP SOBRE HTTP. ......................................................... 17 FIGURA 7 - ELEMENTOS DO WSDL. ................................................................................. 18 FIGURA 8 – ESTRUTURA DE UM DOCUMENTO WSDL. ............................................... 18 FIGURA 9 – SERVIÇO DE CONVERSÃO DE ARQUIVOS ............................................... 20 FIGURA 10 - VISÃO DE ALTO NÍVEL DA ONTOLOGIA OWL-S ................................... 23 FIGURA 11 – EXEMPLO DE DEFINIÇÃO DA CLASSE SERVICE .................................. 23 FIGURA 12 – EXEMPLO DE DEFINIÇÃO DA CLASSE SERVICEPROFILE .................. 24 FIGURA 13 – EXEMPLO DE DEFINIÇÃO DE UM PROCESSO ATÔMICO .................... 25 FIGURA 14 – EXEMPLO DE DEFINIÇÃO DA ESTRUTURA CONDICIONAL .............. 26 FIGURA 15 – EXEMPLO DE DEFINIÇÃO DA CLASSE SERVICEMODEL .................... 26 FIGURA 16 – EXEMPLO DE DEFINIÇÃO DE UM PROCESSO COMPOSTO ................. 27 FIGURA 17 – MAPEAMENTO DE SERVICEMODEL PARA WSDL ................................ 27 FIGURA 18 - MUNDO DOS CUBOS .................................................................................... 34 FIGURA 19 - LISTAGEM DA AÇÃO MOVER EM STRIPS. .............................................. 34 FIGURA 20 - DESCRIÇÃO DO DOMÍNIO DO MUNDO DOS CUBOS. ........................... 35 FIGURA 21 - MACRO-FLUXO DO JSHOP .......................................................................... 39 FIGURA 22 – DOMÍNIO DE EXEMPLO PARA SWAP ...................................................... 40 FIGURA 23 – PROBLEMA DE EXEMPLO PARA SWAP ................................................. 41 FIGURA 24 – PASSOS PARA EXECUÇÃO DO JSHOP2GUI ............................................ 41 FIGURA 25 – AMBIENTE GRÁFICO DO JSHOP2 ............................................................. 42 FIGURA 26 – PLANO SWAP ................................................................................................. 42 FIGURA 27 – SOLUÇÃO DO CENÁRIO BOOKFINDER ................................................... 43 FIGURA 28 – EXEMPLO DE USO DE AXIOMAS EM JSHOP2 ........................................ 44 FIGURA 29 – EXEMPLO DE ESTRUTURA IF-THEN-ELSE ............................................. 44 FIGURA 30 – EXEMPLO DO PROBLEMA PARA O DOMÍNIO BOOKFINDER ............. 44 FIGURA 31 – SOLUÇÃO DO CENÁRIO BOOKFINDER ................................................... 45 FIGURA 32 – INTERFACE GRÁFICA DO JSHOP2 ............................................................ 45 FIGURA 33 – RETORNO DO JSHOP2 .................................................................................. 46 FIGURA 34 – NOVA ATIVIDADE ACRESCENTADA AO PLANO.................................. 46 FIGURA 35 – ALTERAÇÃO DO DOMÍNIO ........................................................................ 47 FIGURA 36 – MACRO FLUXO DO TRANSPLAN .............................................................. 49 FIGURA 37 – ARQUITETURA DE ALTO NÍVEL DO TRANSPLAN. .............................. 51 FIGURA 38 – DIAGRAMA DE DEPENDÊNCIA DE MÓDULOS. ..................................... 52 FIGURA 39 – DIAGRAMA DO PACOTE MODEL. ............................................................. 53 FIGURA 40 – DIAGRAMA DO PACOTE SERVICE. .......................................................... 54 FIGURA 41 – DIAGRAMA DE DEPENDÊNCIA DE MÓDULOS ...................................... 55 FIGURA 42 - CONVERTER PROCESSOS ATÔMICOS PARA OPERADORES ............... 56 FIGURA 43 – TELA PRINCIPAL DO TRANSPLAN ........................................................... 57 FIGURA 44 – CUSTOMIZANDO O TRANSPLAN .............................................................. 58 FIGURA 45 – ARQUIVO DE CONFIGURAÇÃO DO TRANSPLAN ................................. 58 FIGURA 46 – CENÁRIO PARA CRIAÇÃO DE ESCADAS ................................................ 60 FIGURA 47 – SOLUÇÃO DO TRANPLAN PARA O CENÁRIO BOOKPRICE ................ 61 FIGURA 48 – SOLUÇÃO DO TRANPLAN PARA O CENÁRIO RFQ ............................... 61 8 LISTA DE TABELAS TABELA 1 CLASSES DO PACOTE MODEL. ...................................................................... 53 TABELA 2 CLASSES DO PACOTE JSHOP2. ...................................................................... 55 TABELA 3 AVALIAÇÃO DO TRANSPLAN ....................................................................... 61 TABELA 4 COMPARAÇÃO COM OS TRABALHOS CORRELATOS. ............................ 64 9 SUMÁRIO INTRODUÇÃO 1.1 1.2 2 TRABALHOS CORRELATOS ORGANIZAÇÃO DO TRABALHO SERVIÇOS WEB 2.1 TECNOLOGIAS BÁSICAS 2.1.1 SIMPLE OBJECT ACCESS PROTOCOL (SOAP) 2.1.2 WEB SERVICES DESCRIPTION LANGUAGE (WSDL) 2.2 COMPOSIÇÃO DE SERVIÇOS WEB 2.2.1 ONTOLOGY WEB LANGUAGE FOR SERVICES (OWL-S) 2.3 AUTOMATIZANDO A COMPOSIÇÃO 3 PLANEJADORES DA INTELIGÊNCIA ARTIFICIAL 3.1 CONCEITOS BÁSICOS 3.1.1 ESTADO 3.1.2 PRECONDIÇÃO 3.1.3 EFEITO 3.1.4 AÇÃO 3.1.5 PLANO 3.1.6 AMBIENTE 3.1.7 REPLANEJAMENTO 3.2 TIPOS DE PLANEJAMENTO 3.2.1 PLANEJAMENTO COM BUSCA NO ESPAÇO DE ESTADOS 3.2.2 PLANEJAMENTO DE ORDEM PARCIAL 3.2.3 PLANEJAMENTO DE REDE HIERÁRQUICA DE TAREFA 3.3 JSHOP2 3.3.1 EXEMPLOS DE UTILIZAÇÃO 4 10 11 12 13 15 15 18 19 21 28 29 29 29 29 30 30 30 30 31 31 32 35 36 38 39 MAPEANDO E PLANEJANDO COM O TRANSPLAN 49 4.1 ANÁLISE E PROJETO 4.1.1 PROJETO ARQUITETURAL DO TRANSPLAN 4.1.2 PROJETO ARQUITETURAL DE BAIXO NÍVEL 4.1.3 UTILIZAÇÃO DO TRANSPLAN 4.2 EXPERIMENTOS 4.2.1 CONCORRÊNCIA PÚBLICA 4.3 AVALIAÇÃO DOS RESULTADOS 50 50 52 56 58 58 61 CONCLUSÃO 65 REFERÊNCIAS 67 APÊNDICE A –BOOKFINDER EM JSHOP2 70 APÊNDICE B –BOOKFINDER EM JSHOP2 COM DOIS PLANOS 72 ANEXO A - MUNDO DOS CUBOS EM JSHOP2 75 10 INTRODUÇÃO Com a evolução da Internet, a web tem sido cada vez mais utilizada. Inicialmente as organizações utilizavam os documentos web para oferecer aos seus fornecedores e clientes um ambiente interativo de fácil acesso, por meio do qual fosse possível a execução de rotinas semi-automatizadas, por exemplo, solicitar um pedido. Entretanto, esse modelo é custoso, sendo necessário que sistemas possam interagir entre si sem a necessidade da intervenção humana. Para atender tal demanda desenvolveram-se tecnologias de sistemas distribuídos, dentre elas os serviços web, pelo qual uma aplicação cliente interage pela internet com um serviço que possui uma interface bem definida e padronizada (COLOURIS et. al., 2005). Com o advento dos serviços web, muitas organizações passam a desenvolver seus próprios serviços e a publicá-los na web. Entretanto, um serviço isolado pode não atender a um objetivo de um cliente. Neste caso, observa-se a necessidade de encadear um conjunto de serviços já existentes. Este encadeamento pode ser realizado de maneira automática através do uso de planejadores da inteligência artificial. Uma das linguagens utilizadas para agregar valor semântico aos serviços web é a OWL-S. De forma análoga, cada planejador possui uma linguagem própria para compreender o ambiente modelado. Sendo portanto necessário desenvolver uma mapeamento da linguagem OWL-S para a linguagem utilizada pelo planejador, nesse trabalho, JSHOP2. Assim, o objetivo desse trabalho é propor uma solução para o mapeamento e planejamento dos serviços descritos em OWL-S para o planejador JSHOP2. Dessa 11 forma, as principais contribuições desse trabalho são: converter automaticamente a descrição semântica dos serviços para uma linguagem compreensível para o planejador JSHOP2; planejar a seqüência de execução dos serviços web exibindo todos os planos encontrados no espaço de estado. Para elaboração desse trabalho foi necessário desenvolver um estudo na literatura específica para localizar o planejador da Inteligência Artificial que mais se ajustasse ao problema de composição de serviços. Embora existam diversos planejadores já implementados (CALHAU, 2006), o fato é que dadas as características especiais da composição de serviços ainda não existem tecnologias de composição aceitas em geral pela comunidade científica. No estudo desenvolvido observou-se a preferência pela utilização da técnica de planejamento HTN -JSHOP2. 1.1 TRABALHOS CORRELATOS Murtagh (2004) apresenta uma solução para composição de serviços web que contempla a fase de planejamento, utilizando como planejador o JSHOP. A OWLS2JSHOP demonstra a pertinência da aplicação de planejamento HTN para o planejamento de serviços web. Contudo, segundo o autor este sistema poderia ser melhorado em vários aspectos, dentre as melhorias encontra-se a compatibilidade com outras estruturas de controle de decomposição, além da já suportada estrutura Sequence. Essas estruturas serão discutidas na seção 3.2.3. Sirin(2004) propõe uma solução que contemple as fases de planejamento e execução da composição de serviços web. Para a conversão OWL-S para o SHOP2 é proposto o mapeamento de processos atômicos e compostos para respectivamente operadores e métodos. Esse último contempla todas as estruturas 12 de controle suportadas pelo planejador utilizado. Na fase de execução é possível, em caso de falha, replanejar em busca de uma nova solução, e permite a invocação de programas externos. Diferente do TransPlan estas soluções são incompatíveis com a versão mais atual do SHOP que é o JSHOP2. Elas também não são flexíveis para permitir a sua utilização com outro planejador. Este trabalho apresenta um comparativo mais detalhado na seção 4.3, onde se destacam as principais diferenças e semelhanças. 1.2 ORGANIZAÇÃO DO TRABALHO O trabalho está organizado da seguinte maneira: o capítulo 1 apresenta os conceitos de serviços web, as principais tecnologias envolvidas e a utilização de semântica para definição desses serviços. No capítulo 2 são apresentados conceitos relacionados aos planejadores da Inteligência Artificial, e algumas das técnicas utilizadas para planejamento, dentre elas a Rede Hierárquica de Tarefas (HTN), ressaltando as vantagens de sua utilização na composição de serviços web. Já no capítulo 3 é apresentada a solução proposta nesse trabalho, os cenários utilizados para validação e os resultados alcançados. E por fim, o capítulo 4 destinase as considerações obtidas sobre o trabalho e são apresentadas possibilidades de melhorias e ampliações em trabalhos futuros. 13 2 SERVIÇOS WEB A globalização alavancou grandes transformações mercadológicas, o que impactou diretamente nas soluções tecnológicas. Essas soluções foram revisadas e hoje existem propostas como a Arquitetura Orientada a Serviços (SOA), em que aplicações monolíticas com escopo bem definido são substituídas pelo conceito de aplicações compostas por um conjunto de serviços web. A utilização de uma arquitetura orientada a serviços facilita o reuso, fazendo com que se tornem dinâmicos na medida em que serviços podem ser substituídos em tempo de execução de maneira transparente. Como as organizações estão em constante atualização, sempre buscando vantagens competitivas, a dinamicidade dos sistemas torna-se uma questão relevante (MACHADO, 2004). Segundo Peer (2005) os serviços web são componentes de software disponibilizados e invocados pela internet usando protocolos padrão da rede. O serviço web quando invocado por uma requisição HTTP pode provocar a execução da rotina de um programa local ou de serviços diversos. Segundo Colouris (2005) um serviço web e um servidor web possuem diferentes definições, enquanto o servidor fornece serviço HTTP básico que pode ser acessado pelos browsers, os serviços web é baseado nas operações definidas em sua interface não sendo possível o acesso diretamente pelos navegadores. Contudo, um serviço web pode ser fornecido por um servidor, junto com páginas web, ou como um serviço isolado. Como pode ser observado na Figura 1, o ciclo de vida de um serviço web é constituído de quatro estados: publicação, descoberta, descrição e invocação. A publicação é um processo opcional, através do qual o fornecedor do serviço torna 14 pública a existência do mesmo, registrando-o em um repositório, e.g. UDDI. Figura 1 – Ciclo de vida do Web Service. Fonte: Lopes et al.(2004). A descoberta é um processo no qual uma aplicação cliente toma conhecimento da existência do serviço pretendido pesquisando-o em um repositório UDDI. A descrição expõe a interface do serviço, onde se encontram descritas todas as funcionalidades por ele disponibilizadas, assim como os tipos de mensagens que podem ser enviadas e recebidas. A invocação é o processo pelo qual o cliente e o servidor interagem através do envio de mensagens de requisição e de eventual recepção de mensagem de saída - output. Na Figura 2, é possível ser visualizado uma arquitetura para os serviços web. As aplicações, representadas na camada superior, acessam os serviços web descritos em Web Services Description Language (WSDL) (W3C, 2007), utilizando um serviço de diretório (páginas amarelas para os serviços web) ou diretamente quando possui o conhecimento da sua Uniform Resource Location (URL). 15 Figura 2 – Arquitetura dos serviços Web. Fonte: Adaptado de Coulouris, 2005. Os dados são empacotados usando geralmente o protocolo de troca de mensagens Simple Object Access Protocol (SOAP). O uso de protocolos como o HTTP permite que o tráfego de informações se efetive facilmente pela internet, uma vez que os firewalls das organizações geralmente permitem esse tipo de tráfego. As tecnologias básicas utilizadas pelos serviços web serão descritas com mais detalhes a seguir. 2.1 TECNOLOGIAS BÁSICAS 2.1.1 SIMPLE OBJECT ACCESS PROTOCOL (SOAP) O SOAP é um protocolo utilizado pelos serviços web para troca de mensagens entre as partes envolvidas. Esse protocolo utiliza mensagens – requisição e resposta – com conteúdo em eXtensible Markup Language (XML). Essa mensagem XML é encapsulada em uma mensagem HTTP, mas a versão mais atual desse protocolo também pode ser utilizada sobre SMTP, TCP ou UDP. A especificação do protocolo SOAP define basicamente como o XML deve ser usado para representar o conteúdo das mensagens e como os destinatários das mensagens devem processar os elementos XML. 16 Figura 3 – Estrutura do Envelope Fonte: Adaptado de Coulouris, 2005. A mensagem SOAP é transportada em um envelope, envelope Figura 3, que possui um cabeçalho, facultativo, um corpo que contém as informações principais das requisições isições e respostas aos métodos. Na Figura 4 observa-se se a presença prese de um elemento opcional Fault, responsável por provê informações sobre falhas ocorridas (GRAHAM et al., 2004). <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soapxmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap encoding"> soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Header> [...] </soap:Header> <soap:Body> [...] <soap:Fault> [...] </soap:Fault> </soap:Body> </soap:Envelope> Figura 4 - Estrutura de uma mensagem SOAP. SOAP Fonte: W3SCHOOLS, 2007 A Figura 5 e a Figura 6 mostram exemplos de mensagens SOAP de requisição e resposta respectivamente ao serviço GetStockPrice –obter obter preço no estoque usando o protocolo HTTP. A mensagem de requisição possui o parâmetro StockName -nome nome do estoque - e a mensagem response retornará o Price através 17 da tag GetStockPriceResponse. POST /InStock HTTP/1.1 Host: www.example.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock"> <m:GetStockPrice> <m:StockName>IBM</m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope> Figura 5 - Uma requisição SOAP sobre http. Fonte: W3SCHOOLS, 2007 HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock"> <m:GetStockPriceResponse> <m:Price>34.5</m:Price> </m:GetStockPriceResponse> </soap:Body> </soap:Envelope> Figura 6 - Uma resposta SOAP sobre http. Fonte: W3SCHOOLS, 2007 Uma alternativa para utilização do SOAP é o Representational State Transfer (REST) no qual clientes utilizam operações HTTP para acessar recursos representados em XML. Nesse protocolo o cliente recebe o estado inteiro do recurso 18 ao invés de invocar uma operação que forneça parte dele, como acontece com o SOAP. Nessa tecnologia quando um novo recurso é criado, passa a ser disponibilizado em uma nova URL (PAUTASSO, 2007). 2.1.2 WEB SERVICES DESCRIPTION LANGUAGE (WSDL) A Linguagem WSDL é um padrão World Wide Web Consortium (W3C) para descrição da interface dos serviços web, escrita em XML ela também é utilizada para localizá-los. As definições de interface são necessárias para formar um contrato que deverá ser seguido tanto pelo cliente quanto pelo servidor. A Figura 7 lista os principais elementos que compõem a WSDL e a Figura 8 apresenta a estrutura de um documento WSDL compostos pelos elementos. Elemento <portType> <message> <types> <binding> Definição Define as operações disponível no serviço Define as mensagens utilizadas pelo serviço Define os tipos de dados utilizados pelo serviço O protocolo de comunicação utilizado pelo serviço Figura 7 - Elementos do WSDL. Fonte: W3SCHOOLSb (2007) <definitions> <types> definition of types........ </types> <message> definition of a message.... </message> <portType> definition of a port....... </portType> <binding> definition of a binding.... </binding> </definitions> Figura 8 – Estrutura de um documento WSDL. Fonte: W3SCHOOLSb, 2007 19 2.2 COMPOSIÇÃO DE SERVIÇOS WEB Para a comunicação de uma aplicação cliente com um serviço web, as tecnologias SOAP e WSDL são suficientes. Entretanto, caso seja necessário a invocação de outros serviços web é relevante a combinação de suas funcionalidades e adoção de novas tecnologias. A atividade de combinar os serviços é conhecida como composição de serviços web (CLARO et. al., 2008). A composição de serviços é possível devido a publicação da interface do serviço, o que permite que suas operações sejam combinadas com outros serviços para oferecer um novo serviço (COLOURIS et. al., 2005). Para ilustrar a composição de serviços será utilizado um cenário para conversão de arquivos Microsoft Word (doc) para Portable Document Format (pdf), Figura 9. Nesse cenário, parte-se do princípio que não exista um serviço capaz de atender ao objetivo isoladamente, mas existe um serviço denominado de A capaz de converter do formato doc para Rich Text Format (RTF) e um outro serviço B que converte de RTF para DOC como mostra a Figura 9. Assim, com o intuito de atingir o objetivo proposto, converter doc-pdf, estes serviços podem ser combinados e executados. A definição desse fluxo poderá ocorrer de duas formas: manual ou automática (DUSTDAR et. al, 2005). A composição manual necessita da intervenção do usuário. O próprio usuário especificará o fluxo utilizando-se de uma linguagem, como Business Process Execution Language for Web Services (BPEL4WS) (SRIVASTAVA, 2003). Devido a simplicidade do problema apresentado no cenário é possível realizar a composição manualmente. Entretanto, a medida que surgem novos serviços esse processo torna-se mais custoso, podendo até tornar-se inviável. Na composição automática, existe uma mínima intervenção humana no processo (CLARO et al, 2007). Na 20 Figura 9, a aplicação cliente apenas fornece seu objetivo para um serviço web e ele será responsável por localizar e determinar a ordem que os serviços deverão ser invocados (fluxo para execução dos serviços), que no cenário mencionado converterá um documento DOC para PDF. Figura 9 – Serviço de Conversão de Arquivos Murtagh(2004) acrescenta que com a composição automática é possível substituir serviços em tempo de execução para incluir outros serviços que fariam o objetivo ser atingido, por exemplo, com menor custo, como também, substituir serviços que não estejam mais em operação, criando uma solução tolerante a falhas. Claro et al (2007) e Murtagh (2004) apresentam 3 fases para composição automática: descoberta, planejamento e execução. Estas etapas são descritas a seguir. Descoberta. A fase de descoberta tem como objetivo localizar os serviços web candidatos que poderão ser utilizados para atender determinado objetivo do usuário. Planejamento. A fase de planejamento é responsável determinar quais e em que ordem os serviços candidatos – identificados na fase de descoberta – serão 21 utilizados para atender o objetivo definido. A ênfase desse trabalho concentra-se nessa etapa. Execução. Nessa fase todos os serviços candidatos identificados, na fase de planejamento, serão invocados. Essa fase tem o objetivo em recuperar os dados dos serviços candidatos. Para que seja viável a composição automática é necessário que a descrição dos serviços seja interpretável por máquinas. As informações contidas nos documentos WSDL apenas descrevem sintaticamente os serviços, havendo a necessidade de linguagens como Ontology Web Language for Services (OWL-S) para descrição semântica desses serviços (MURTAGH,2004). 2.2.1 ONTOLOGY WEB LANGUAGE FOR SERVICES (OWL-S) A web semântica permite que dados e serviços sejam interpretados por software sem problemas de ambigüidade, problema existente na abordagem sintática. Linguagens como WSDL ou WS-BPEL precisam ser estendidas ou novas linguagens precisam ser utilizadas para permitir que os serviços web sejam descritos de forma que sejam compreendidos automaticamente pelos computadores de forma não ambígua(DIGIAMPIETRI et al, 2007). Para ilustrar a importância da semântica, considera-se uma pessoa que ao ler a assinatura dos seguintes métodos: converterDocParaPdf(Arquivo doc) e transformarDocParaPdf(Arquivo doc) compreenderá que os métodos tem o mesmo objetivo. Entretanto para um sistema computacional que utilize definição sintática esta interpretação não é tão fácil. O processo de adicionar semântica, processáveis por máquinas, aos conteúdos e aos serviços na web é possível através da definição e utilização de descrições 22 semânticas. As características semânticas podem utilizar ontologias para uma descrição não ambígua. Uma ontologia define os conceitos, as propriedades e axiomas para um determinado domínio de forma que possa ser compreendido e usado por pessoas ou máquina. Por esta característica, a ontologia é uma das tecnologias chaves para a implementação da Web Semântica (CARVALHO, 2005). Em geral, essas ontologias são representadas em Ontology Web Language (OWL), linguagem baseada em Resource Definition Language (RDF) proposta pelo W3C (CALHAU, 2006). A OWL é uma linguagem para definição de ontologias na Web. Uma ontologia OWL formaliza um domínio através da definição de classes e seus relacionamentos, indivíduos, propriedades e axiomas sobre eles. Também é possível especificar como derivar conseqüências lógicas, isto é, fatos que não estão presentes nas ontologias (SMITH et al, 2004). A descrição semântica de serviços web utiliza dentre outras linguagens uma variação da OWL, denominada OWL-S – OWL for Services – também proposta pela W3C. Segundo Martin (2004a) a OWL-S descreve os serviços web através de classes e propriedades em OWL, para que possa ser compreendida por máquinas. Murtagh (2004) propõe que para conseguir distinguir dois serviços com sucesso é necessário descrever: propriedades, habilidades e axiomas, utilizado na etapa de descoberta; precondições, efeitos, entrada e saída, utilizado na fase de planejamento; Interfaces, pontos de acesso e protocolos, utilizado na fase de execução. A Figura 10 mostra a ontologia OWL-S e suas principais subontologias. A subontologia Service fornece uma referência organizacional para um serviço web, 23 uma instância dessa classe existirá para cada serviço publicado. Essa ontologia possui as seguintes propriedades: presents - descreve o que ele faz - describedBy descreve como funciona - e supports - que descreve como acessá-lo (MARTIN, 2004b). A linguagem OWL-S permite descrever serviços em três seções: o perfil do serviço (ServiceProfile), o modelo processual do serviço (ServiceModel) e a instanciação do serviço (ServiceGrounding). A Figura 11 mostra um exemplo de definição da subontologia Service em OWL-S. Figura 10 - Visão de alto nível da ontologia OWL-S <!-- Service description --> <service:Service rdf:ID="BookFinderService"> <service:presents rdf:resource="#BookFinderProfile"/> <service:describedBy rdf:resource="#BookFinderProcess"/> <service:supports rdf:resource="#BookFinderGrounding"/> </service:Service> Figura 11 – Exemplo de definição da classe Service A classe ServiceProfile descreve o que o serviço faz, de maneira que ele possa ser 24 encontrado na fase de descoberta de serviços. Nessa classe encontram-se principalmente as pré-condições, os efeitos, as entradas - hasInput - e as saídas hasOutput (Figura 12). <mind:BookInformationService rdf:ID=" ConverterDoc2RtfProfile"> <service:presentedBy rdf:resource="# ConverterDoc2RtfService"/> <profile:serviceName xml:lang="en">DOC 2 PDF</profile:serviceName> <profile:textDescription xml:lang="en"> This service returns the file at RTF format. </profile:textDescription> <profile:hasInput rdf:resource="#FileDoc"/> <profile:hasOutput rdf:resource="#FileRtf"/> </mind:BookInformationService> Figura 12 – Exemplo de definição da classe ServiceProfile A ontologia ServiceModel informa ao cliente do serviço como usá-lo, permitindo encontrar as pré-condições, efeitos, entradas e saídas do serviço, incluídas no ServiceProfile (CALHAU, 2006). A ontologia ServiceModel possui uma referência a subontologia Process e suas subontologias SimpleProcess (Processo Simples), AtomicProcess (Processo Atômico) e CompositeProcess (Processo Composto). O processo Simples é um modelo abstrato que não pode ser instanciado, utilizado para representar um processo atômico ou composto. Um processo atômico é todo aquele que um serviço web pode ser executado diretamente, sem a necessidade de outros processos (serviço). A Figura 13 contém um exemplo da definição do processo atômico ConverterDoc2Rtf que poderia ser utilizado no cenário para conversão de arquivos. 25 <process:AtomicProcess rdf:ID="ConverterDoc2RtfProcess"> <service:describes rdf:resource="#ConverterDoc2RtfService"/> <process:hasInput rdf:resource="#FileDoc"/> <process:hasOutput rdf:resource="#FileRtf"/> </process:AtomicProcess> − <process:Input rdf:ID="FileDoc"> <process:parameterType rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://www.w3.org/20 01/XMLSchema#string</process:parameterType> <rdfs:label>File Doc</rdfs:label> </process:Input> − <process:Output rdf:ID="FileRtf"> <process:parameterType rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://purl.org/net/ nknouf/ns/bibtex#FileRtf</process:parameterType> <rdfs:label>File Rtf</rdfs:label> </process:Output> Figura 13 – Exemplo de definição de um Processo Atômico Como pode ser observado na Figura 15, os processos compostos (CompositeProcess) são resultantes da composição de processos atômicos ou outros processos compostos, e são utilizados quando a requisição do usuário não pode ser atendida por um processo atômico diretamente. Pelo fato de ser utilizado mais de um processo atômico, torna-se necessário estruturas de controle para especificar o fluxo de execução. A OWL-S suporta estruturas de controle como Sequence, Split, Split+Join, Any-Order, If-Then-Else. A estrutura Sequence define a execução dos serviços de forma seqüencial (e.g., [A]→[B]→[C]). O controle Split define a execução simultânea dos processos. O Split+Join é utilizado para especificar serviços que podem ser executados concorrentemente, mas que necessitam de ter a sua execução concluída (e.g., [A, B]→[C]). O Any-Order permite que os processos possam ser executados arbitrariamente, entretanto, não podem 26 ser executados simultaneamente. A estrutura If-Then-Else executa os serviços a medida que as condições dos mesmos são atendidas. ... <rdf:Property rdf:ID="ifCondition"> <rdfs:comment> The if condition of an if-then-else </rdfs:comment> <rdfs:domain rdf:resource="#If-Then-Else"/> <rdfs:range> rdf:resource ="#Condition" </rdfs:range> </rdf:Property> <rdf:Property rdf:ID="then"> <rdfs:domain rdf:resource="#If-Then-Else"/> <rdfs:range rdf:resource="#ProcessComponent"/> </rdf:Property> <rdf:Property rdf:ID="else"> <rdfs:domain rdf:resource="#If-Then-Else"/> <rdfs:range rdf:resource="#ProcessComponent"/> </rdf:Property> ... Figura 14 – Exemplo de definição da estrutura condicional . Figura 15 – Exemplo de definição da classe ServiceModel A Figura 16 mostra um exemplo de um processo composto para o cenário de conversão de arquivos que utiliza a estrutura de controle seqüencial. Define-se 27 nessa composição a execução do serviço ConverterDoc2Rtf e na seqüência ConverterRtf2Pdf. ... <process:composedOf> <process:Sequence> <process:components> <process:ControlConstructList> <list:first> <process:Perform rdf:nodeID="ConverterDoc2Rtf"/> </list:first> <list:rest> <process:ControlConstructList> <list:rest rdf:resource="http://www.daml.org/services/OWLS/1.1/generic/ObjectList.owl#nil"/> <list:first> <process:Perform rdf:nodeID=" ConverterRtf2Pdf"/> </list:first> </process:ControlConstructList> </list:rest> </process:ControlConstructList> </list:rest> </process:ControlConstructList> </process:components> </process:Sequence> </process:composedOf> ... Figura 16 – Exemplo de definição de um Processo Composto A classe ServiceGrounding contém a informação acerca do acesso ao serviço descrito, provendo um mapeamento da classe abstrata ServiceModel para WSDL como pode ser visualizado na Figura 17. Dessa forma, é possível converter de OWLS para WSDL: classes, inputs e outputs, processos atômicos. Figura 17 – Mapeamento de ServiceModel para WSDL Fonte: W3C, 2007 28 2.3 AUTOMATIZANDO A COMPOSIÇÃO Rao (2004) cita duas técnicas para a composição dinâmica de serviços web: workflow dinâmico e planejamento da IA. A técnica de workflow é composta por um conjunto de passos lógicos (funções), dependências entre funções, regras de encaminhamento e participantes. Entretanto, é necessário um processo automatizado para encontrar e coordenar recursos concretos - e.g os serviços Web. (CALHAU, 2006). Segundo Murtagh (2004) o problema abordado na composição de serviços web para determinar a seqüência de execução dos serviços para alcançar um objetivo definido, é precisamente o tipo de problema resolvido pelo planejamento da inteligência artificial. O próximo capítulo tem como objetivo compreender os planejadores da Inteligência Artificial e a utilização desses na composição automática de serviços. 29 3 PLANEJADORES DA INTELIGÊNCIA ARTIFICIAL O planejamento da IA surgiu de investigações em busca do espaço de estado, prova de teoremas e teoria de controle, e das necessidades práticas da robótica. O primeiro sistema de planejamento importante, Stanford Research Institute Problem Solver (STRIPS), influenciou a maioria das linguagens utilizadas atualmente pelos sistemas de planejamento (RUSSELL et. al., 2004). A visão clássica para o planejador corresponde ao agente responsável por apresentar uma seqüência de ações para atingir determinado objetivo (PEER, 2005). 3.1 CONCEITOS BÁSICOS Para uma melhor compreensão dos planejadores da IA e para alcançar um entendimento comum é importante apresentar os conceitos básicos relacionados a essa área do conhecimento, tais como estado, precondição e efeito, ação e plano. Estado. Um estado é representado por um conjunto de proposições atômicas, instanciadas, que podem ser literais proposicionais (e.g. Pobre ^ Desconhecido poderia representar o estado de um agente infeliz), ou literais de primeira ordem (e.g. Em(Aviao, Salvador) para representar um estado para um problema de logística). Já as condições não mencionadas em um estado são consideradas falsas. Sabe-se que o estado objetivo é alcançado quando um estado contém todas as proposições e não necessariamente somente elas. Por exemplo, o estado Rico ^ Famoso ^ Miserável satisfaz ao objetivo Rico ^ Famoso (RUSSELL et. al., 2004). Precondição. A precondição é um literal que define o que deve ser verdadeiro em um estado, para que uma determinada ação possa ser executada (RUSSELL et. al., 30 2004). Efeito. O efeito corresponde ao resultado da ação, as modificações que são realizadas ao estado. Alguns sistemas de planejamento dividem os efeitos em positivos, serão acrescentados ao estado, e negativos, serão retirados do estado. (RUSSELL et. al., 2004). Além disso, as poscondições são condições que deverão ser atendidas ao final da execução da ação. Os efeitos correspondem ao resultado da ação (MURTAGH, 2004). Ação. A ação, também conhecido como operador, é responsável pela transição de um estado para outro (CALHAU, 2006). E, para sua execução é necessário que suas pré-condições sejam satisfeitas. Uma vez executada, a ação modifica o estado com os seus efeitos. Plano. Um plano corresponde a uma seqüência de ações, necessário para sair do estado inicial e chegar ao estado final. Sendo que o custo do caminho que determinará a qualidade da solução (CALHAU, 2006). Ambiente. Existe uma grande variedade de ambientes em que um planejador pode atuar. Russel (2004) classifica-os de acordo com suas propriedades que são apresentadas a seguir. • Observável: quando é possível detectar os aspectos que são relevantes para a escolha de uma ação, então o ambiente é completamente observável. Neste caso, o não se precisa ter qualquer estado interno para controlar o mundo. Caso contrário o ambiente é tido como parcialmente observável. • Determinístico: se o próximo estado do ambiente é completamente determinado pelo estado atual e pela ação executada, então o ambiente é 31 determinístico. Caso contrário, ele é estocástico ou não determinístico (GHALAB et al, 2004). • Episódico: quando cada tomada de decisão não depende de decisões anteriores, se isso acontecer, então o ambiente será seqüencial, e assim, a decisão atual pode afetar todas as decisões futuras. • Estático: se a passagem do tempo é importante e o ambiente puder se alterar enquanto decide-se sobre a realização de uma ação, então ele é dinâmico. Caso contrário, ele é estático. • Discreto: se o ambiente puder ser determinado pelo número de estados, percepções, ações e pelo tempo, então ele é discreto. Caso contrário, ele é contínuo. .Replanejamento. Processo de invocar novamente o planejador para apresentar um plano alternativo quando algo inesperado acontece durante a execução de um plano (RUSSEL, 2004). 3.2 TIPOS DE PLANEJAMENTO Antes de citar algumas das técnicas de planejamento, é importante ressaltar que não existe um consenso sobre qual a melhor estratégia de planejamento. O que existem, são técnicas mais apropriadas a determinados problemas. De qualquer forma, a competição entre elas resultou em ganhos significativos em eficiência para os sistemas de planejamento (RUSSELL et. al., 2004). A perspectiva clássica de um planejador nem sempre é suficiente, dada a complexidade de algumas soluções. A complexidade de um plano é marcada pela 32 definição do domínio ou do objetivo, como também pelo modelo previsto para a execução do plano (e.g. se uma operação não produzir o resultado desejado, o agente poderia ter a oportunidade de voltar e regerar o plano, ao invés de ter que confiar nele). (PEER, 2005). No que diz respeito à ordem das ações, o planejador pode ser linear ou não linear. O planejador linear, também conhecido como planejador de ordem total, gera um plano constituído por uma seqüência de ações totalmente ordenadas. Já o não linear, também conhecido como planejador de ordem parcial, é capaz de produzir planos com ações que não obedeçam a uma ordem específica de execução, ou seja, algumas ações podem ser executadas em paralelo, não seqüencial, o que muitas vezes aumenta a eficiência do sistema (CALHAU, 2006). 3.2.1 PLANEJAMENTO COM BUSCA NO ESPAÇO DE ESTADOS O mais simples algoritmo clássico de planejamento é o planejamento com busca no espaço de estado. Essa estratégia de busca utiliza como espaço de busca o espaço de estados, onde cada nó corresponde a um estado do mundo (GHALLAB et al, 2004). O planejamento por procura no espaço de estados (State-Space Planning) tenta encontrar o plano buscando ações – operadores - que formem um caminho entre o estado inicial e o estado objetivo. Dessa forma, a procura pelo estado desejado pode ocorrer para frente – progressão - ou para trás - regressão. Na progressão, parte-se do estado inicial do mundo e, através da execução de ações, constrói-se a árvore de estados. A procura chega ao fim quando o estado objetivo é alcançado ou quando já não há mais nós na árvore a se percorrer. Já na regressão, parte-se do estado 33 objetivo, executando as ações, gerando uma árvore de estado e retrocedendo até atingir o estado inicial ou até não ser possível continuar a expansão da árvore. A busca para frente e a busca para trás no espaço de estados são formas específicas de busca de planos totalmente ordenados (RUSSEL, 2004). As estratégias de busca por regressão e progressão não são eficientes sem uma função heurística. As funções heurísticas têm o objetivo de guiar o planejador na escolha de bons caminhos, buscando uma solução ótima (RUSSEL, 2004). . 3.2.1.1 O DOMÍNIO DO MUNDO DOS CUBOS COM BUSCA NO ESPAÇO DE ESTADO O mundo dos cubos é um problema clássico para o planejamento da Inteligência Artificial mencionado por Russel (2004). A seguir ele será descrito, com o objetivo de esclarecer a representação de um problema e como solucioná-lo, utilizando as técnicas de busca no espaço de estado. Como pode ser observado na Figura 18, esse domínio contempla um conjunto de cubos empilhados sobre uma mesa. Um braço robô pode movimentar o cubo para outra posição, que somente poderá ser em cima da mesa, ou para cima de outro cubo. A única restrição para essa operação é que o cubo o qual deseja-se mudar a posição não tenha outro em cima dele. Por exemplo, na Figura 18 só é possível inicialmente movimentar D ou A. O objetivo consiste em a partir do estado inicial definido alcançar o estado objetivo. Ambos os estados são apresentados, na Figura 18. A solução proposta por RUSSELL et. al. (2004), propõe a definição do literal de 34 primeira ordem Sobre(b,x) para indicar que o bloco b está sobre x, onde x é outro bloco ou a mesa. A ação Mover(b,x,y) será utilizada para mover um determinado cubo de x(cubo ou mesa) para y(cubo ou mesa). O literal Livre(x) será verdadeiro quando não há nada sobre x. Figura 18 - Mundo dos Cubos Fonte: Adaptado de (RUSSEL, 2004). Logo, a ação Mover(b,x,y) poderá ser representada como mostra a Figura 19. Entretanto, a solução oferecida até o momento, ainda contém dois problemas: 1. Quando x for a mesa, a ação Mover tem o efeito Livre(Mesa), 2. A mesa não precisa ficar limpa quando y=mesa; ações desnecessárias (e.g. Mover(B,C,C)). Ação(Mover(b, x, y), PRECONDIÇÃO: Sobre(b, x) ∧ Livre(b) ∧ Livre(y) ∧(b _ x) ∧ (b _ y) ∧ (x _ y) EFEITO: Sobre(b, y) ∧ Livre(x) ∧ ¬Sobre(b, x) ∧ ¬Livre(y)) Figura 19 - Listagem da Ação Mover em Strips. Fonte: Adaptado de (RUSSEL, 2004). Para corrigir o primeiro problema mencionado pode-se introduzir outra ação para mover um bloco b de x para a mesa e adicionar o predicado Bloco e acrescentar Bloco(b) e Bloco(y) à precondição Mover. Já o segundo problema poderá ser resolvido adicionando precondições de desigualdade, como mostra a Figura 20. 35 Iniciar( Bloco(A) ∧ Bloco(B) ∧ Bloco(C) ∧ Bloco(D) ∧ Bloco(E) ∧ Sobre(A, Mesa) ∧ Sobre(B, A) ∧ Sobre(C, B) ∧ Livre(C) ∧ Sobre(D, Mesa) ∧ Sobre(E, D) ∧ Livre(E)) Objetivo(Sobre(E, B)) Ação(Mover(b, x, y), PRECONDIÇÃO: Sobre(b, x) ∧ Livre(b) ∧ Livre(y) ∧ Bloco(b) ∧ (b _ x) ∧ (b _ y) ∧ (x _ y), EFEITO: Sobre(b, y) ∧ Livre(x) ∧ ¬Sobre(b, x) ∧ ¬Livre(y)) Ação(MoverParaMesa(b, x), PRECONDIÇÃO: Sobre(b, x) ∧ Livre(b) ∧ Bloco(b) ∧ (b _ x), EFEITO: Sobre(b, Mesa) ∧ Livre(x) ∧ ¬Sobre(b, x)) Figura 20 - Descrição do domínio do Mundo dos Cubos. Fonte: Adaptado de (RUSSELL et. al., 2004) 3.2.2 PLANEJAMENTO DE ORDEM PARCIAL A busca no espaço de estado explora apenas seqüências estritamente lineares de ações conectadas de forma direta ao início ou ao objetivo, não utilizando a técnica de decomposição de problema, que permite quebrar o problema em parte, e atuar sobre cada subproblema separadamente. Por exemplo, um problema de entregar um conjunto de encomendas a seus respectivos destinos, poderia apresentar como uma possível solução, decompor o problema em várias partes, uma para cada aeroporto (RUSSELL et. al., 2004). A estratégia de ordem parcial, também conhecido como não linear ou planejamento com busca no espaço dos planos (Plan-Space Planning), é uma abordagem que funciona de forma independente sobre os subobjetivos gerando subplanos e depois combinando-os (RUSSELL et. al., 2004). Dessa forma, qualquer técnica que possa adicionar duas ações em um plano sem especificar qual delas deve ser executada primeiro, é um exemplo de planejador de ordem parcial. 36 Essa abordagem diferencia-se da abordagem de espaço de estados não somente pelo espaço de busca, como, também, na definição da solução. A ordem parcial usa mais que uma seqüência de ações. Nessa estratégia o planejamento é definido por duas operações: a) a escolha das ações; b) a ordem das ações escolhidas para alcançar o objetivo. Um plano é definido por um conjunto de operadores associado às restrições ordenadas e associadas, o que poderá não corresponder à seqüência de ações alcançada pelo espaço de estado (GHALLAB et al, 2004). 3.2.3 PLANEJAMENTO DE REDE HIERÁRQUICA DE TAREFA O planejamento de Rede Hierárquica de Tarefa, HTN, Hierarchical Task Network planning) é uma técnica que cria o plano através da decomposição de tarefas. A descrição do domínio inclui um conjunto de operadores, semelhante às ações dos planejadores clássicos, possuindo entrada, saída, pré-condições, efeitos (IOPE Inputs, Outputs, Preconditions, Effects) e, também, um conjunto de métodos que descrevem como decompor uma tarefa em um conjunto de subtarefas. O planejamento ocorre usando métodos para decompor as tarefas recursivamente até encontrar tarefas primitivas que correspondem aos operadores do domínio (SIRIN, 2004). Segundo Russel(2004) a decomposição hierárquica é uma das técnicas mais difundidas para atuar com soluções complexas, pelo fato de que cada nível da hierarquia é reduzido a um número menor de atividades até encontrar atividades atômicas (operadores). Sirin (2004) apresenta diversas características que justifica a utilização da técnica HTN na composição de serviços web, dentre elas destacam-se: 37 O HTN permite modularidade. Os métodos podem ser escritos sem considerar como as subtarefas serão decompostas ou o que compõe as tarefas que ele decompõe. Esta modularidade adequa-se muito bem ao cenário de serviços web. Os métodos correspondem a workflows compostos recursivamente. Estes workflows estão em diferentes fontes, sendo necessário que o planejador integre-os de forma a apresentar uma composição desses workflows para um problema específico. Exploração do espaço de estados. Uma vez que o planejador considera a completa execução do mundo de estados, existem possibilidades de minimizar vários tipos de falhas ou custos. Ressalta-se que se o planejador encontra um plano, ele saberá que o domínio fornecido é possível encontrar um plano. Escalabilidade. O planejador HTN suporta um grande número de métodos e operadores. O que geralmente ocorre em problemas complexos do mundo real. Alguns planejadores HTN, e.g., Simple Hierarchical Ordered Planner (SHOP2), suportam a definição de pré-condições complexas, que permite integrar os conhecimentos existentes sobre as bases semânticas, bem como fornecer informações dos serviços web. Aquisição de Informações durante o Planejamento. O planejador HTN dispõe de pontos específicos em sua linguagem para a intervenção humana em tempo de execução. Como exemplo, poderia ser solicitado ao usuário uma informação em um ponto específico, ou se o planejador atingir um ponto em que não é possível continuar a decomposição, é possível interagir com um agente externo, que poderá ser humano ou software. Um sistema baseado nessa proposta é o Integrated Service PLanning and Execution (ISP&E). Ele gera várias alternativas para solução e uma das alternativas é 38 selecionada usando notação genérica de custo. Este plano é executado e alterado no ambiente de execução e checado periodicamente. Quando ocorre uma falha o plano é reexecutado ou, se a falha continua, um mecanismo de replanejamento é acionado (DIGIAMPIETRI et. al., 2007). Outros exemplos de sistemas planejadores HTN são o SHOP e o seu sucessor SHOP2, que serão descritos a seguir. 3.3 JSHOP2 O Java Simple Hierarchical Ordered Planner (JSHOP) 2 é a versão em Java do SHOP2, desenvolvido em LISP. Dentre as vantagens para utilização do JSHOP2, em relação às versões anteriores do SHOP destaca-se a performance (ILGHAMI, 2003). O SHOP2 classificou-se entre os 4 dos 14 planejadores que concorreram na competição internacional de planejamento (SIRIN, 2004). Os planejadores SHOP foram testados numa grande variedade de problemas, desde os mais simples aos mais complexos. A Figura 21 mostra o macro-fluxo do JSHOP. A entrada do JSHOP2 é composta pelo domínio e problema e a saída é a solução encontrada. O domínio é composto por operadores (atividades atômicas), métodos (atividades compostas) e axiomas. Um operador é definido pela sintaxe (:operator h P D A [c]), em que h (head) é o cabeçalho que contém o nome do operador iniciando com uma exclamação. P (precondition) é o conjunto de literais que define a precondição para que o operador seja executado. D (delete list) corresponde aos efeitos negativos, a 39 lista de literais que serão excluídos da base de conhecimento. A (add list) corresponde aos efeitos positivos, ou seja, a lista de literais que serão incluídos na base de conhecimento. Já C (cost) ( corresponde ao custo de execução do operador, cujo valor padrão é 1 (ILGHAMI, ILGHAMI, 2006). 2006) Figura 21 - Macro-fluxo do JSHOP Os métodos são atividades compostas que definem como decompor o plano em busca de tarefas primitivas mitivas (operadores). Um método no JSHOP2 é definido pela sintaxe (:method h [[D] P T]+) T]+ em que h é o cabeçalho contendo o nome do método, e P (precondition)) contém a lista de literais para que as tarefas em T sejam executadas. T pode conter métodos e operadores, operadores e estes serão executados na ordem que forem dispostos, desde que suas precondições sejam satisfeitas (ILGHAMI, 2006). 3.3.1 EXEMPLOS DE UTILIZAÇÃO Para ilustrar a utilização do JSHOP2 são apresentados dois domínios Swap (troca 40 de objetos) apresentado por Ilghami (2006) e BookFinder (Localização de Livros) apresentado por Murtagh(2004). 3.3.1.1 TROCA DE OBJETOS - SWAP O domínio SWAP é útil para ilustrar as principais características do JSHOP2. Ele consiste basicamente em trocar um objeto de uma determinada posição por outro. A Figura 22 apresenta a definição desse domínio em JSHOP2. O domínio foi modelado com dois operadores colocar e retirar. O operador (colocar ?a) adiciona a base de conhecimento o literal (tem a), indicando que o objeto (a) ocupa a posição. Não foi definido precondição nem efeito negativo para esse operador). O operador (retirar ?a) elimina o objeto da posição através do efeito negativo. Não definiu-se efeito positivo para esse operador. Figura 22 – Domínio de exemplo para SWAP Na Figura 22 pode-se observar o método swap que descreve como decompor o plano. O problema no JSHOP2 é composto pelo estado inicial, que corresponde a uma lista de atividades de alto nível que será utilizada para a decomposição do problema na busca do objetivo também descrito na formulação do problema. Além dos operadores e métodos na definição do domínio é possível adicionar axiomas. 41 Figura 23 – Problema de exemplo para SWAP A Figura 23 mostra um exemplo de como descrever um problema em JSHOP2. Uma vez definido o domínio e o problema é possível executar o JSHOP2 fornecendo-os como argumento. A Figura 24 mostra os comandos necessários para executar o JSHOP2GUI, a interface gráfica do JSHOP2. Figura 24 – Passos para execução do JSHOP2GUI A Figura 25 exibe o JSHOP2GUI em execução. Suas principais ações são: MultiStep e Single Step, que permitem acompanhar os passos do planejador na busca da solução; a opção Run permite executar o planejador; e a opção Restart permite reiniciar o planejador. Quando o planejador encontra um plano, o JSHOP2GUI exibe a janela apresentada na Figura 26. 42 Figura 25 – Ambiente gráfico do JSHOP2 Figura 26 – Plano SWAP 43 3.3.1.2 BUSCA E CONVERSÃO DE PREÇO DE LIVROS (BOOK FINDER) Este exemplo é uma adaptação do exemplo utilizado por Murtagh (2004) e descreve um domínio de serviços de busca e conversão de preço de livros, a partir do nome do livro, e do tipo de moeda e retorna como resultado o preço. apresenta a solução composta por três serviços A Figura 27 em OWL-S: BookFinderProcess,BNPriceProcess e CurrencyConverterProcess. BookFinderProcess: retorna o ISBN (BookInfo) de um livro sendo informado seu título (BookName); BNPriceProcess: retorna o preço de um livro (BookPrice) dado seu ISBN (BookInfo); CurrencyConverterProcess: converte um preço (InputPrice) informado em dólares, para um preço (OutputPrice) especificado em outra moeda (OutputCurrency). Figura 27 – Solução do Cenário BookFinder 44 InputPrice e BookPrice possuem os mesmos valores semânticos na OWL-S. Para fazer essa definição usando JSHOP2 é necessário utilizar os axiomas., que modela a semântica dos tipos de dados OWL-S envolvidos na troca de mensagens, como apresentado na Figura 28. ;Axiomas (:- (InputPrice) ((BookPrice))) Figura 28 – Exemplo de Uso de Axiomas em JSHOP2 O Apêndice A desse trabalho apresenta a definição do domínio, na Figura 29 é apresentado a definição do método usando a estrutura if-then-else para decompor os operadores. Na Figura 30 encontra-se um exemplo da definição do problema para o domínio BookFinder. (:method (CompositeProcess) ; testa se já alcançou o objetivo ((goal (OutputPrice)) (OutputPrice)) nil ((BookInfo)) ((!BNPriceProcess) (CompositeProcess)) ((InputPrice)(OutputCurrency)) ((!CurrencyConverterProcess) (CompositeProcess)) ((BookName)) ((!BookFinderProcess) (CompositeProcess)) ) Figura 29 – Exemplo de estrutura IF-then-else (defproblem problem domain_generated ( ; se passar um argumento tipo: (BookName SD) ; tem que obter BookName com parâmetro (BookName ?x) (BookName) (OutputCurrency) ) ( (achieve-goals ((OutputPrice))) ) ) Figura 30 – Exemplo do problema para o domínio BookFinder A Figura 31 apresenta o plano retornado pelo JSHOP2 que corresponde a execução 45 seqüencial dos processos bookfinderprocess, bnpriceprocess e currencyconverterprocess com custo 3, assumindo que cada processo tem custo igual a 1. Na Figura 32 mostra-se a interface gráfica do JSHOP2 que permite acompanhar a execução do planejador em busca do plano. [Plan cost: 3.0 (!!assert (goal (outputprice))) (!bookfinderprocess) (!bnpriceprocess) (!currencyconverterprocess) -------------------] Figura 31 – Solução do Cenário BookFinder Figura 32 – Interface Gráfica do JSHOP2 Na Figura 34 acrescentou-se uma nova atividade denominada BookFinderID. Sendo assim, existe uma nova solução no espaço de estado. Para que o JSHOP2 localize todos os planos existentes no espaço de estados é necessário adicionar os 46 parâmetros (–ra) ao comando: java JSHOP2.InternalDomain -ra problem. Além da alteração do comando é necessário modificar o domínio, definindo o novo operador BookFinderID (Apêndice B) e recodificar o método como descrito na Figura 35. A Figura 33 mostra o resultado retornado pelo JSHOP2 com as duas soluções encontradas. [Plan cost: 3.0 (!!assert (goal (outputprice))) (!bookfinderprocess) (!bnpriceprocess) (!currencyconverterprocess)] [Plan cost: 4.0 (!!assert (goal (outputprice))) (!bookfinderid) (!bookfinderinfo) (!bnpriceprocess) (!currencyconverterprocess)] Figura 33 – Retorno do JSHOP2 Figura 34 – Nova atividade acrescentada ao plano 47 (:method (BookNameAnother) ((BookName)) ((!BookFinderID) (CompositeProcess)) ) (:method (BookNameAnother) ((BookName)) ((!BookFinderProcess) (CompositeProcess)) ) (:method (CompositeProcess) ; testa se ja alcancou o objetivo ((goal (OutputPrice)) (OutputPrice)) nil ((BookInfo)) ((!BNPriceProcess) (CompositeProcess)) ((InputPrice)(OutputCurrency)) ((!CurrencyConverterProcess) (CompositeProcess)) ((BookName)) ((BookNameAnother) (CompositeProcess)) ((BookID)) ((!BookFinderINFO) (CompositeProcess)) ) Figura 35 – Alteração do domínio 3.3.1.3 USO DO JSHOP2 NA COMPOSIÇÃO DE SERVIÇOS WEB O JSHOP2 não faz distinção entre precondições, com origem em entradas e saídas – inputs e outputs – de informações pelo usuário, e precondições e efeitos – preconditions e effects – com origem em regras do domínio. Todas as precondições e entradas descritas em OWL-S são representados como simples precondições – preconditions – em JSHOP2. Além disso, não distingue entre efeitos – outputs – que tem o objetivo de alimentar com informações o domínio e os efeitos – effects– que efetivamente alteram o domínio. Com relação a estrutura de controle dos métodos, o JSHOP2 suporta todas as estruturas definidas pela OWL-S com exceção das estruturas que definem a execução concorrente dos processos atômicos como o Split e Split + Join. (MURTAGH 2004). Os planejadores SHOP2 planejam as tarefas na mesma ordem em que serão posteriormente executados. Essa característica permite conhecer o estado atual do 48 mundo em cada etapa do processo de planejamento, o que torna possível a avaliação de mecanismos para inferência, incluindo a capacidade para chamar programas externos Isto é apontando por SIRIN(2004) como relevante por permitir integrar o planejamento com informações externas como no ambiente web. 49 4 MAPEANDO E PLANEJANDO COM O TRANSPLAN Neste capítulo é apresentada a solução proposta destacando os principais objetivos deste trabalho referenciando enciando a metodologia adotada. Na seqüência, seqüência é descrita a análise e projeto do experimento prático desenvolvido para homologação da solução proposta e finalizando com a avaliação dos resultados obtidos. O objetivo desse trabalho é desenvolver uma ferramenta denominada TransPlan (Translate e Planner)- para o mapeamento e planejamento dos serviços web descritos em OWL-S para o planejador planej JSHOP2. Assim, os seguintes objetivos objetiv específicos foram identificados: • Converter automaticamente a descrição semântica dos serviços para uma linguagem compreensível para p o planejador JSHOP2; • Planejar a seqüência de execução dos serviços web exibindo todos os planos encontrados no espaço de estado; • O sistema deverá manter-se manter se desacoplado do planejador utilizado de modo que esse possa ser alterado facilmente. Figura 36 – Macro fluxo do TransPlan 50 A Figura 36 mostra o fluxo macro do TransPlan, em que a partir da descrição semântica dos serviços web em OWL-S, é gerado o plano, caso exista, que corresponde a seqüência de execução dos serviços web - web services - para alcançar um objetivo informado. 4.1 ANÁLISE E PROJETO O objetivo desta seção é apresentar a solução proposta destacando os principais elementos da arquitetura e o modelo físico do TransPlan. 4.1.1 PROJETO ARQUITETURAL DO TRANSPLAN Na engenharia de software a fase de projeto tem por objetivo a definição da arquitetura de um software, estrutura ou organização dos mais significativos componentes do sistema e suas interações. Para concepção da arquitetura do TransPlan foram tomadas as seguintes decisões: Linguagem Java. Escolheu-se a linguagem Java por ser multiplataforma e amplamente utilizada pela comunidade. O TransPlan contém aproximadamente 2200 linhas de código desenvolvido nesta linguagem.. Uso da linguagem OWL-S. Os serviços web semânticos são descritos na linguagem OWL-S, uma recomendação da W3C, motivo pelo qual foi adotada no projeto. Outros motivos são encontrados na seção 2.2.1. Planejador JSHOP2. Os planejadores SHOP foram testados numa grande variedade de problemas, tendo mostrando-se suficientemente poderosos para conseguirem com os mais diversos cenários. Outros motivos são na seção 3.3. 51 Apesar dessa decisão, o TransPlan é flexível e permite a substituição do planejador para sua utilização em outros cenários, como por exemplo de não determinismo. Figura 37 – Arquitetura de alto nível do TransPlan. A Figura 37 contempla a arquitetura de alto nível da solução proposta, destacando os principais módulos lógicos, que são descritos a seguir. Planner Plug-In– Esse componente é responsável por invocar o planejador configurado no TransPlan, que no contexto desse trabalho, corresponde ao JSHOP2. Além disso, o TransPlan gera a partir da OWL-S o domínio e o problema para que o JSHOP2 possa iniciar o planejamento. A API Java Reflection foi utilizada para execução do JSHOP2. OWL-S Reader – Esse componente é responsável por carregar uma OWL-S a partir de sua URI. A OWL-S API utilizada na solução é a disponibilizada pela Maryland 52 Information and Network Dynamics Lab Semantic Web Agents Project (MINDSWAP) cujo desenvolvimento é liderado por Sirin. Sirin. O objetivo dessa API é fornecer um conjunto de abstrações para manipulação de OWL-S,, utilizando como base o framework Jena - API Java para manipulação de ontologias. 4.1.2 PROJETO ARQUITETURAL DE BAIXO NÍVEL Nessa seção é descrito o projeto de baixo nível (modelo físico) adequado ao projeto arquitetural do TransPlan. TransPlan Dessa forma serão apresentados os módulos e classes mais importantes do sistema, suas responsabilidades e relacionamentos. A Figura 38 apresenta o diagrama de dependência em um nível maior de abstração com o objetivo de mostrar as dependências dependências entre os subsistemas do TransPlan. Figura 38 – Diagrama de dependência de módulos. A seguir, são detalhadas as principais classes pertencentes pertencentes aos módulos da Figura 38.. Estas classes estão agrupadas de acordo com suas funcionalidades funcionalidade levando em 53 consideração a coesão e o acoplamento entre os módulos. gui: esse subsistema encapsula a camada de apresentação do sistema. sistema A principal classe que compõe esse pacote é TransPlanGUI.. Essa classe é uma subclasse da classe JFrame da API Swing do Java, responsável por apresentar uma janela para interação com o usuário. model: esse pacote encapsula as classes que fazem parte do domínio da aplicação. aplicaç A Figura 39 apresenta as classes e seus relacionamentos, e a Tabela 1 apresenta a descrição de cada classe do subsistema. Figura 39 – Diagrama do pacote model. Tabela 1 Classes do pacote model. Classe Descrição 54 TransPlan.model.Process br.ufba.lasid.easd.wsc.TransPlan Classe que representa um Process OWL-S. br.ufba.lasid.easd.wsc.TransPlan TransPlan.model.CompositeProces s Classe que herda da classe Process e representa um CompositeProcess da OWL-S. br.ufba.lasid.easd.wsc.TransPlan TransPlan.model.AtomicProcess Classe que herda da classe Process e representa um processo atômico da OWL-S br.ufba.lasid.easd.wsc.TransPlan TransPlan.model.Literal Classe que representa Proposicional br.ufba.lasid.easd.wsc.TransPlan TransPlan.model.State br.ufba.lasid.easd.wsc.TransPlan TransPlan.model.Plan um Literal Classe que encapsula o estado definido a partir de um conjunto de literais Classe que encapsula o Plano gerado, que possui a solução encontrada e o custo do plano. service: esse subsistema corresponde a camada de aplicação do TransPlan. A sua principal classe é TransPlanService, TransPlan , através dela é possível acessar as funcionalidades da aplicação. Como pode ser visualizado na Figura 40 existe uma dependência desse pacote com o pacote owls, que encapsula a manipulação de arquivos OWL-S. Figura 40 – Diagrama do pacote service. planner: A Figura 41 apresenta o diagrama das principais classes pertencentes pertencent ao gerenciador de eventos. A classe destacada (Planner) representa o ponto de extensão do TransPlan,, portanto, o desenvolvedor pode estender e personalizar. personalizar Ressalta-se se a existência do subsistema jshop2 que contém as classes específicas espec 55 para o planejador JSHOP2, JSHOP2 cada qual implementa o método write que encapsula o elemento para a linguagem JSHOP2. JSHOP2 Para o uso de tipos semânticos a classe Domain lê a definição da hierarquia dos tipos semânticos mapeados para axiomas em JSHOP2 e adicioná-los adicioná ao domínio gerado. As classes desse pacote estão descritas na Tabela 2. Tabela 2 Classes do pacote jshop2. Classe br.ufba.lasid.easd.wsc.TransPlan TransPlan.planner.jshop2.Domain Descrição Classe que representa um Domínio em JSHOP2. br.ufba.lasid.easd.wsc.TransPlan TransPlan.planner.jshop2. JSHOP2Planner Classe que herda da classe Planner e encapsula a execução do planejador JSHOP2. br.ufba.lasid.easd.wsc.TransPlan TransPlan.planner.jshop2. Method Classe abstrata que representa um método genérico em JSHOP2 br.ufba.lasid.easd.wsc.TransPlan TransPlan.planner.jshop2. MethodIfThenElse Classe que encapsula a um método IfIf Then-Else Else do JSHOP2 Classe que representa um Operador em br.ufba.lasid.easd.wsc.TransPlan TransPlan.planner.jshop2. Operator JSHOP2 br.ufba.lasid.easd.wsc.TransPlan TransPlan.planner.jshop2. Problem Classe que encapsula o a definição do problema em JSHOP2 Figura 41 – Diagrama de dependência de módulos 56 A Figura 42 apresenta um dos algoritmos implementados no TransPlan. O algoritmo exibido converte um arquivo em OWL-S para JSHOP2. A implementação do algoritmo levou em consideração que o JSHOP2 não faz distinção entre precondições, com origem em entradas e saídas - inputs e outputs - de informações pelo usuário, e precondições e efeitos - preconditions e effects - com origem em regras do domínio. Entretanto, para que o algoritmo não se limitasse a ler precondições e efeitos em OWL-S, foi acrescentado uma rotina que permitir mapear inputs para precondições e outputs para efeitos, caso não existam precondições e efeitos na OWL-S. Entrada: uma definição OWL-S de um processo atômico (A) Saída: um operador JSHOP2 (O) 1. Para cada pré-condição (p) em A 1.1. Adicionar p como uma pré-condição em (O) Pre := Pre U { p } 1.2. Adicionar p como um efeito negativo em (O) Del := Del U { p } 2. Se a lista de precondição for vazia (Se Pre == { }) 2.1. Para cada entrada(i) em A 2.1.1.Adicionar (i) como uma pré-condição em (O) Pre := Pre U { i } 2.1.2.Adicionar (i) como um efeito negativo em (O) Del := Del U { i } 3. Para cada efeito (e) em A 3.1. Adicionar (e) como um efeito positivo em (O) Add := Add U { e } 4. Se a lista de efeitos (Add) for vazia (Se Add == { }) 4.1. Para cada output(o) em A 4.1.1.Adicionar (o) como uma efeito em (O) Add := Add U { o } 5. Retornar (:O Pre Del Add) Figura 42 - Converter processos atômicos para operadores 4.1.3 UTILIZAÇÃO DO TRANSPLAN Com o objetivo de esclarecer o funcionamento da solução implementada, nesta seção são apresentadas as formas pela qual o TransPlan poderá ser utilizado: diretamente (pelo usuário) ou como uma API (para outra aplicação). 57 A Figura 43 exibe a tela principal do TransPlan quando executado por um usuário. Através dessa tela é possível carregar uma OWL-S, definir o estado inicial e o objetivo, bem como executar o planejador configurado. . Figura 43 – Tela Principal do TransPlan A API pública do TransPlan permite que outras aplicações acessem-na e tenham acesso as funcionalidades encapsuladas. Além disso, é possível personalizar o TransPlan para utilizar um novo planejador. Para tal, como observado na Figura 44, é necessário criar uma nova classe que herde a classe abstrata Planner e implementar o método abstrato execute. Em seguida é necessário apontar a classe criada no arquivo de configuração do TransPlan (Figura 45). 58 Figura 44 – Customizando o TransPlan # arquivo de configuração PLANNER_CLASS=br.ufba.lasid.easd.wsc.TransPlan.planner.jshop2.JSHOP2Planner Figura 45 – Arquivo de configuração do TransPlan 4.2 EXPERIMENTOS Com o intuito de validar a solução , foram realizados dois experimentos cada um utilizando um cenário distinto: busca e conversão de preço de livros (BookFinder) apresentado na seção 3.3.1.2; Concorrência Pública (Request For Quotes - RFQ). Esse último cenário foi proposto por Claro (2008) e utilizado para validação da solução proposta. 4.2.1 CONCORRÊNCIA PÚBLICA O processo de concorrência pública para restauração de prédios públicos começa com uma abertura de uma licitação. Um arquiteto com um funcionário do governo 59 planeja o que será executado. O escopo proposto para validação em Claro(2008) foca a atividade de construção de escada, creationEscalier, que poderá ser de madeira e concreto ou ferro e concreto. A Figura 46 mostra os serviços envolvidos no processo de construção de escada, a seguir a descrição de cada um deles: EscalierBetonBois – escada de concreto e madeira – escada de concreto e madeira: serviço responsável por criar um escada de madeira. Esse serviço tem como précondição os literais fornecerConcreto - fournitureBeton - e fornecerMadeira – fournitureBois - e possui como efeito a escada criada - creationEscalier; EscalierBetonENT2 – escada de concreto e ferro: serviço responsável por criar um escada de Ferro. Esse serviço tem como pré-condição o literais fornecerConcreto – fournitureBeton- e fornecerFerro – fournitureFer - e possui como efeito a escada creationEscalier; fournitureFer: serviço responsável pelo fornecimento de ferro - fer. Tem como précondição a ausência de ferro - not_fournitureFer - e tem como efeito o fornecimento de ferro - fournitureFer; fournitureBeton: serviço responsável pelo fornecimento de concreto - beton. Tem como pré-condição a ausência de concreto - not_fournitureBeton - e tem como efeito o fornecimento de concreto - fournitureBeton; fournitureBois: serviço responsável pelo fornecimento de madeira (Bois). Tem como pré-condição a ausência de madeira - not_ fournitureBois e tem como efeito o fornecimento de madeira - fournitureBois. 60 Figura 46 – Cenário para criação de escadas Para efeito de validação foram realizados os seguintes casos de testes: Carregar ontologias OWL-S. OWL testar estar o módulo que manipula ontologias OWL-S, validando o recurso de cache. O sistema deverá carregar as ontologias com sucesso. Localizar o plano lano para o cenário busca de livros: livros localizar ocalizar o plano para o cenário de busca de livros fornecendo um estado inicial e objetivo válidos. O sistema deverá encontrar o plano exibido na Figura 47. 61 Plan cost: 3.0 (bookfinderprocess) (bnpriceprocess) (currencyconverterprocess) Figura 47 – Solução do TranPlan para o Cenário BookPrice Localizar planos para o cenário de concorrência pública: Localizar os planos para o cenário de concorrência pública fornecendo um estado inicial e objetivo válidos. O sistema deverá encontrar o plano exibido na Figura 48. Plan 01 cost: 4.0 (fournitureferatomicprocess) (fournitureboisatomicprocess) (fourniturebetonatomicprocess) (escalierbetonatomicprocess) Plan 02, cost: 4.0 (fournitureferatomicprocess) (fournitureboisatomicprocess) (fourniturebetonatomicprocess) (escalierbetonent2atomicprocess) Figura 48 – Solução do TranPlan para o Cenário RFQ Localizar plano informando estado inicial e estado objetivo inválidos: tentar localizar um plano para os cenários de testes sem informar os estados iniciais e objetivo. O sistema não deve encontrar um plano. 4.3 AVALIAÇÃO DOS RESULTADOS Para avaliação dos resultados obtidos neste trabalho, a solução TransPlan foi submetida ao ambiente descrito na seção 4.2. A tabela 6 exibe os resultados da avaliação da ferramenta. Nota-se que o TransPlan alcançou resultados satisfatórios na avaliação em que foi submetido. Casos de Testes 1. Carregar ontologias OWL-S Tabela 3 Avaliação do TransPlan Resultado COMENTARIOS Executado sucesso com Foram realizados testes com e sem o recurso de cache. 62 2. Localizar plano para cenário busca de livros o Executado sucesso 3. Localizar planos para o cenário de concorrência pública 4. Localizar plano informando estado inicial e estado objetivo inválidos com O plano foi satisfatório localizado em tempo Executado sucesso com os planos foram localizados em tempo satisfatório Executado sucesso com O planejador não encontrou o plano Outra critério utilizado para avaliação dos resultados foi um comparativo com os trabalhos correlatos citados na seção 1.1: OWL2JSHOP proposto por Murtagh (2004) e JSHOPTranslator disponível em Mindswap (2004) e apresentado em Sirin(2004). A Tabela 4 mostra as características atendidas por cada solução. A seguir, são descritas as características mencionadas na Tabela 4. 1. Suporte a planejador genérico. Essa característica oferece a solução o desacoplamento e independência do planejador utilizado. Como não existe um consenso com relação ao planejador ideal a composição de serviços web torna-se relevante essa qualidade. 2. Reutilização. A solução permite ser utilizada por outras aplicações, permitindo o desenvolvimento mais eficiente. Ressaltando que o reuso não se limita a apenas código, mas também aos requisitos, especificações, projetos, testes, e todos os outros elementos produzidos durante as fases de desenvolvimento. Dessa forma, permite ao desenvolvedor concentrar-se naquilo que é particular à aplicação. 3. Abstração no Planejamento. Abstrair do usuário o conhecimento da linguagem utilizada pelo planejador, permitindo que em posse das descrições semânticas do serviços, associado ao estado inicial e final seja possível localizar as soluções disponíveis automaticamente, sem a intervenção do usuário. 63 4. Geração automática de método para decomposição. A geração automática do método para decomposição em busca do plano permite que somente seja necessário carregar os processos atômicos da OWL-S. O TransPlan atende parcialmente esse requisito pois limita-se a utilizar a estrutura IF-Then-Else, sugerindo-se como trabalho futuro a implementação das demais estruturas suportadas pelo JSHOP2. 5. Localização de todos os planos. A localização de todos os planos disponíveis no espaço de estado é relevante, pois em posse de todos os planos é o possível identificar a melhor solução e traçar caminhos alternativos em caso de falhas na solução escolhida. 6. Definição Semântica automática. Essa característica permite converter os tipos semânticos, definidos em OWL-S, automaticamente para a linguagem utilizada pelo planejador. No JSHOP eles são definidos com axiomas. No TransPlan essa característica foi contemplada parcialmente, pois é necessária a intervenção do usuário. 7. Etapas da composição. As fases da composição incluem descoberta, planejamento e execução apresentados na seção 2.2. O TransPlan limita-se a fase de planejamento, sugerindo-se como trabalho futuro as demais etapas. 8. Uso de IOPE. O conjunto entrada (I), saída (O), precondição (P) e efeito (E) deverá ser utilizada pelo planejador para encontrar a solução. 9. Uso de Cache das OWL-S. Por serem disponibilizadas no ambiente internet fazse necessário a utilização de cache local das OWL-S, oferecendo assim um menor tempo de resposta para tal funcionalidade. 64 9. Compatibilidade com o JSHOP2. O JSHOP2 é uma versão que apresenta vantagens sobre outras versões, como o SHOP, SHOP2 e JSHOP como apresentado na seção 3.3. CARACTERÍSTICAS Tabela 4 Comparação com os trabalhos correlatos. OWL2JSHOP TRANSPLAN JSHOPTranslator 1. Suporte a planejador genérico Atende Não atende Não atende 2. Reutilização Atende Não Atende Atende 3. Abstração no Planejamento Atende Não mencionado Parcialmente 4. Geração automática de método para decomposição Parcialmente. Não Atende. Lê Utiliza IFdefinição em then-else OWL-S Não Atende. Lê definição em OWLS 5. Localização de todos os planos Atende Não mencionado Não mencionado 6. Definição Semântica automática Parcialmente Atende Atende 7. Etapas da composição Parcialmente. Parcialmente. Parcialmente.Apen Apenas Apenas as planejamento. planejamento e Planejamento execução 8. Uso de IOPE Atende 9. Uso de Cache das OWL-S Atende. A API utilizada já Não Atende implementa Atende 10. Compatibilidade com o JSHOP2 Atende Não Atende Parcialmente. Apenas I/O Não Atende Parcialmente Apenas I/O Assim, de acordo com a avaliação do experimento, o TransPlan se mostra adequado para realizar o mapeamento e o planejamento dos serviços web semânticos. 65 CONCLUSÃO Este trabalho propôs uma solução para o mapeamento e planejamento de serviços web semânticos descritos em OWL-S usando o planejador JSHOP2. As avaliações às quais foi submetido o TransPlan evidenciam resultados satisfatórios. Observa-se que, a partir da análise dos resultados obtidos da seção 4.3, os testes em que foi submetido o TransPlan foram executados com sucesso. Além disso atendeu-se boa parte dos critérios utilizados para a avaliação da ferramenta. Dentre as características do TransPlan, destacam-se as seguintes vantagens em relação aos trabalhos correlatos. Flexibilidade e reutilização: para adoção dessa ferramenta, poderá ser configurado um novo planejador para o TransPlan. Geração automática de método para decomposição: é possível com a ferramenta a geração automática de métodos com estrutura de controle IF-then-Else para definir a decomposição do problema. Abstração no Planejamento: é possível que um usuário ou uma aplicação utilize a solução sem necessitar conhecer a linguagem do planejador. Ao mesmo tempo, foi identificada a existência de oportunidades de melhorias e acréscimo de novas funcionalidades não contempladas no escopo desse trabalho. Como trabalho futuro sugere-se a integração com outras ferramentas, um vez que para execução de todas as atividades da composição automática de serviços web torna-se necessário a utilização de outras ferramentas que contemplem as demais atividades desse processo. Dessa forma, é relevante integrar o TransPlan às 66 ferramentas já existentes que contemplem as demais atividades na composição automática de serviços web. Uma outra oportunidade de melhoria envolve converter os planos encontrados para OWL-S e converter tipos semânticos automaticamente. E por fim, disponibilizar o TransPlan como um serviço web. 67 REFERÊNCIAS CALHAU, Fábio D. J. Composição de Serviços por Planeamento. 2006.167f.Dissertação (Mestrado Engenharia Informática e Telecomunicações) – Instituto Superior de Ciências do Trabalho e da Empresa. Salvador, 2006. CLARO D. B., MACEDO R. J. A. Dependable Web Service Compositions using a Semantic Replication Scheme. In Anais do XXVI Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos (SBRC 2008). Rio de Janeiro, RJ, Brasil, Maio 2008. CLARO D.B., ALBERS P.; HAO J-K. A Framework for Automatic Composition of RFQ Web Services. In IEEE Proceedings of the First Workshop on Web Service Composition and Adaptation (WSCA) held in conjunction with International Conference of Web Services (ICWS'07) IEEE SCW 2007. Salt Lake City, Utah, USA p. 221-228, 2007. COULORIS, G., Dollimore, J., Kindberg, T.. Distributed Systems concepts and Design. Addison Wesley, 4º Edição, 2005. ISBN 0321263545. CARVALHO, L. LIMA, César. Ontologias - OWL (Web Ontology Language). Technical Report - RT-INF_004-05 - Relatório Técnico- 2005 – Junho. UFG - Instituto de Informática Universidade Federal de Goiás. Goias, 2005. DUSTDAR, Schahram; SCHREINER, Wolfgang. A survey on web services composition. Int. Web and Grid Services, [S.l. : s. n.], v. 1, n 1, p.1-30, 2005. DIGIAMPIETRI, Luciano A; ALCÁZAR, J. J. Pérez; MEDEIROS, C. B.AI Planning in Web Services Composition: a review of current approaches and a new solution. VI ENIA – Encontro Nacional de Inteligência Artificial. Rio de Janeiro, 2007. GHALLAB, M.; Traverso, Paolo; NAU, Dana. Automated Planning: Theory and Practice, Morgan Kaufmann, 2004. ELSEVIER. ISBN: 1-55860-856-7. GRAHAM, Steve; DAVIS, Doug;, SIMEONOV, Simeon; DANIELS, Glen; BRITTENHAM, Peter; NAKAMURA, Yuichi; FREMANTLE, Paul; KOENIG, Dieter; ZENTNER, Claudia. Building Web Services with Java: Making Sense of XML, SOAP, WSDL, and UDDI. 2004. SAMS. ISBN 0-6723-2641-8. ILGHAMI, Okhtay. Documentation for JSHOP2. Department of Computer Science – University of Maryland, USA, 2006. Disponível em: <http://www.cs.umd.edu/~okhtay/jshop2doc.pdf>. Acessado em: 09 maio 2008. LOPES, C. J.F.; RAMALHO, J. C. Web Services: Metodologias de Desenvolvimento. XML, Aplicações e Tecnologias Relacionadas – XATA, Porto, Portugal. 2004. MACHADO, João Coutinho. Um estudo sobre o desenvolvimento orientado a serviços. 2004. Dissertação (Mestrado) — PUC-Rio, Rio de Janeiro, 2004. 68 Disponível em: < http://www2.dbd.pucrio.br/pergamum/tesesabertas/0210486_04_pretextual.pdf >. Acesso em: 15 mai. 2006. MARTIN, David. OWL-S: Semantic markup for web services; W3C Member Submission, 2004a. Disponível em: <http://www.w3.org/Submission/2004/SUBMOWL-S-20041122>, Acesso em: 5 Jun. 2006. MARTIN, David et al. Bringing Semantics to Web Services: The OWL-S Approach. In: First International Workshop on Semantic Web Services and Web Process Composition – SWSWPC, San Diego, CA, USA, 2004b. MINDSWAP: Maryland Information and Network Dynamics Lab Semantic Web Agents Project. 2004. Disponível em: <http://www.mindswap.org/2004/owl-s/ services.shtml>. Acesso em: 05 junho. 2008. MURTAGH, Dónal. Automated Web Service Composition. University of Dublin. 2004 Disponível em: <https://www.cs.tcd.ie/publications/tech-reports/trindex.05.php>. Acesso em: 15 out 2007 PAUTASSO, Cesare. SOAP vs. REST - Bringing the Web back into Web Services. Business Integration Technologies. IBM Zurich Research Lab. 2007 Disponível em <http://www.iks.inf.ethz.ch/education/ss07/ws_soa/slides/SOAPvs REST_ETH.pdf> Acesso em: 2 set. 2008 PEER, J.; Web Service Composition as AI Planning - a Survey; Technical Report, 2005; Univ. of St.Gallen, Switzerland, Suiça. 2005 . RAO, J.; SU, X.; 2004; A Survey of Automated Web Service Composition Methods; Proceedings of the First International Workshop on Semantic Web Services and Web Process. 2004. Disponível em <http://www.cs.cmu.edu/~ jinghai/papers/survey_rao.pdf>. Acesso em: 08 jan 2008 RUSSELL, Stuart J.; NORVIG, Peter. Inteligência Artificial. 2. ed. Tradução de PubliCare Consultoria. 2004, ISBN 85-352-1177-2. SIRIN, E.; Parsia, B.; Wu, D; Hendler, J.; and Nau,D.; 2004; HTN Planning for Web Service Composition Using SHOP2; Journal of Web Semantics 2004 SMITH, M. K; WELTY, C; MCGUINNESS, D. L. OWL Web Ontology Language Guide.2004. Disponível em <http://www.w3.org/TR/2004/REC-owl-guide20040210/>. Acesso em: 21 abr 2008. SRIVASTAVA, Biplav; et. al. Web Service Composition – Current Solutions and Open Problems. ICAPS 2003. International Conference on Automated Planing and Scheduling, June. Trento, Italia, 2003. ILGHAMI, Okhtay, NAU, Dana.. A General Approach to Synthesize ProblemSpecific Planners. Technical Report CS-TR-4597 e UMIACS-TR-2004-40, 2003. W3C. World Wide Web Consortium. OWL Web Ontology Language Guide. 2007. Disponível em <http://www.w3.org/TR/owl-guide/>. Acessado em: Dezembro. 69 W3C: SOAP Specifications. 2007. Disponível em< http://www.w3.org/TR/soap/ > Acesso em: 02 set 2008. W3SCHOOLS: SOAP Tutorial. 2007. Disponível <http://www.w3schools.com/soap /default.asp>. Acesso em: 8 maio. 2008. em W3SCHOOLS: em WSDL Documents. 2007. Disponível <http://www.w3schools.com/wsdl/ wsdl_documents.asp>. Acesso em: 8 maio. 2008. 70 APÊNDICE A –BOOKFINDER EM JSHOP2 (defdomain domain_generated ( (:operator (!BNPriceProcess) ( (BookInfo) ) ( (BookInfo) ) ( (BookPrice) ) ) (:operator (!BNPriceProcess) ( (BookPrice) ) ( (BookInfo) ) ( (BookPrice) ) ) (:operator (!CurrencyConverterProcess) ( (InputPrice) (OutputCurrency) ) ( (InputPrice) (OutputCurrency) ) ( (OutputPrice) ) ) (:operator (!BookFinderProcess) ( (BookName) ) ( (BookName) ) ( (BookInfo) ) ) ) ;; O operador assert é definido com o objetivo de inserir informações ao 71 domínio (:operator (!!assert ?g) () () (?g) ;; Desde !!ASSERT não é um operador real, o custo deve ser 0 0) ;; Um conjunto de métodos é responsável por inserir uma lista de objetivos, definidos na definição do problema (ver Figura 38), ;; como informações do domínio antes de chamar o método CompositeProcess (:method (achieve-goals ?goals) () ((assert-goals ?goals) (CompositeProcess))) (:method (assert-goals (?goal . ?goals)) () ((!!assert (goal ?goal)) (assert-goals ?goals))) (:method (assert-goals nil) () ()) (:method (CompositeProcess) ; testa se ja alcancou o objetivo ((goal (OutputPrice)) (OutputPrice)) nil ((BookInfo)) ((!BNPriceProcess) (CompositeProcess)) ((InputPrice)(OutputCurrency)) ((!CurrencyConverterProcess) (CompositeProcess)) ((BookName)) ((!BookFinderProcess) (CompositeProcess)) ) ;Axiomas (:- (InputPrice) ((BookPrice))) ) ) 72 APÊNDICE B –BOOKFINDER EM JSHOP2 COM DOIS PLANOS (defdomain domain_generated ( (:operator (!BNPriceProcess) ( (BookInfo) ) ( (BookInfo) ) ( (BookPrice) ) (:operator (!BNPriceProcess) ( (BookPrice) ) ( (BookInfo) ) ( (BookPrice) ) ) (:operator (!CurrencyConverterProcess) ( (InputPrice) (OutputCurrency) ) ( (InputPrice) (OutputCurrency) ) ( (OutputPrice) ) ) (:operator (!BookFinderProcess) ( (BookName) ) ( (BookName) ) ( (BookInfo) ) ) (:operator (!BookFinderINFO) ( (BookID) ) ( (BookID) 73 ) ( (BookInfo) ) ) (:operator (!BookFinderID) ( (BookName) ) ( (BookName) ) ( (BookID) ) ) ;; O operador assert é definido com o objetivo de inserir informações ao domínio (:operator (!!assert ?g) () () (?g) ;; Desde !!ASSERT não é um operador real, o custo deve ser 0 0) ;; Um conjunto de métodos é responsável por inserir uma lista de objetivos, definidos na definição do problema (ver Figura 38), ;; como informações do domínio antes de chamar o método CompositeProcess (:method (achieve-goals ?goals) () ((assert-goals ?goals) (CompositeProcess) ) ) (:method (assert-goals (?goal . ?goals)) () ((!!assert (goal ?goal)) (assert-goals ?goals)) ) (:method (assert-goals nil) () () ) (:method (BookNameAnother) ((BookName)) ((!BookFinderID) (CompositeProcess)) ) (:method (BookNameAnother) ((BookName)) ((!BookFinderProcess) (CompositeProcess)) ) (:method (CompositeProcess) ; testa se ja alcancou o objetivo ((goal (OutputPrice)) (OutputPrice)) nil ((BookInfo)) ((!BNPriceProcess) (CompositeProcess)) ((InputPrice)(OutputCurrency)) ((!CurrencyConverterProcess) (CompositeProcess)) 74 ((BookName)) ((BookNameAnother) (CompositeProcess)) ((BookID)) ((!BookFinderINFO) (CompositeProcess)) ) ;Axiomas (:- (InputPrice) ((BookPrice))) ) ) 75 ANEXO A - MUNDO DOS CUBOS EM JSHOP2 (defdomain oldblocks ( ;; operadores (:operator (!pickup ?a) () ((clear ?a) (on-table ?a)) ((holding ?a))) (:operator (!putdown ?b) () ((holding ?b)) ((on-table ?b) (clear ?b))) (:operator (!stack ?c ?d) () ((holding ?c) (clear ?d)) ((on ?c ?d) (clear ?c))) (:operator (!unstack ?e ?f) () ((clear ?e) (on ?e ?f)) ((holding ?e) (clear ?f))) ;; metodos (:operator (!!assert ?g) () () ?g ;; custo 0 (:method (achieve-goals ?goals) () ((assert-goals ?goals nil) (move-block))) (:method (assert-goals (?goal . ?goals) ?out) () ((assert-goals ?goals ((goal ?goal) . ?out)))) (:method (assert-goals nil ?out) () ((!!assert ?out))) (:method (move-block) ;; method for moving x from y to z ((clear ?x) (not (nomove ?x)) (on ?x ?y) (goal (on ?x ?z)) (not (same ?x ?z)) (clear ?z) (not (need-to-move ?z))) ((!unstack ?x ?y) (!stack ?x ?z) (!!assert ((nomove ?x))) (moveblock)) ;; method for moving x from y to table ((clear ?x) (not (nomove ?x)) (on ?x ?y) (goal (on-table ?x))) ((!unstack ?x ?y) (!putdown ?x) (!!assert ((nomove ?x))) (moveblock)) ;; method for moving x from table to y ((clear ?x) (not (nomove ?x)) (on-table ?x) (goal (on ?x ?y)) (clear ?y) (not (need-to-move ?y))) ((!pickup ?x) (!stack ?x ?y) (!!assert ((nomove ?x))) (move-block)) ;; method for moving x out of the way ((clear ?x) (not (nomove ?x)) (on ?x ?y) (need-to-move ?x)) ((!unstack ?x ?y) (!putdown ?x) (move-block)) ;; if nothing else matches, then we're done nil nil) ;; Axiomas (:- (same ?x ?x) nil) 76 (:- (need-to-move ?x) ;; need to move x if x needs to go from one block to another ((on ?x ?y) (goal (on ?x ?z)) (not (same ?y ?z))) ;; need to move x if x needs to go from table to block ((on-table ?x) (goal (on ?x ?z))) ;; need to move x if x needs to go from block to table ((on ?x ?y) (goal (on-table ?x))) ;; need to move x if x is on y and y needs to be clear ((on ?x ?y) (goal (clear ?y))) ;; need to move x if x is on z and something else needs to be on z ((on ?x ?z) (goal (on ?y ?z)) (not (same ?x ?y))) ;; need to move x if x is on something else that needs to be moved ((on ?x ?w) (need-to-move ?w))) ))