= Executar Rotina Utilizando SOAP = == 1 Descrição == Para prover integração com sistemas existentes e prover acesso a funcionalidades das aplicações desenvilvida para o módulo é possível atender a uma requsição no enviada em um XML utilizando o protocolo SOAP. A implementação não contempla os serviços oferecidos por um Web Service, sendo capaz apenas de trocar informações utilizando dados enviados no formato SOAP não disponibilizando serviços de WSDL nem UDDI. O desenvolvedor do serviço é responsável por fornecer a documentação sobre como acessar os dados do serviço e o desenvolvedor que utilizará o serviço é responsável pela implementação de acordo com a documentação. O módulo oferece ferramentas que valida se o XML está formatado adequadamente, retira os marcadores do protocolo e entrega para a aplicação do módulo apenas o conteúdo do XML. A aplicação é responsável por fazer o parser do conteúdo recebido para a manipulação dos dados como, por exemplo, popular uma classe. O SOAP enviado obrigatoriamente conterá tags infomando o código da ação a ser executada e código da aplicação, nome de usuário e senha. A solicaitação deverá ser encaminhada para o endereço da classe ControllerSOAP.php que recebe o pedido, valida o usuário utilizando a biblioteca de validação de usuário recupera o nome do arquivo da classe a ser instânciada e disponibiliza o objeto xml, document dom, para a aplicação, e passa a executar como descrito no [wiki:WF/executarrotina UC Executar Rotina] instanciando sempre a classe de retorno da interface como a biblioteca que converte objeto para SOAP. == 2 Atores == 1. Aplicação do Sistema 2. Aplicação Cliente 3. Usuário == 3 Pré-condições == Não existem pré condições. == 4 Eventos == 1. Aplicativo cliente envia requisição HTTP contendo informações em formato SOAP. 2. Servidor recebe a requisição e chama a camada controller para processar a requisição. 3. Camada controller valida se o SOAP é um XML bem formatado. 4. Camada controller valida se o XML contém os dados nome de usuário, senha, codigo da aplicação e código da rotina. 5. Camada controller valida o usuário na base LDAP. {A1} 6. Camada controler recupera as informações de aplicação e ação, e valida acesso, executando o [wiki:WF/validaracesso UC Validar Acesso], conforme dados do usuário informados no SOAP. {A2} 7. Busca informações sobre a ação no banco de dados e define a classe de segurança no modo de proteção habilitado. {A3} 8. Inclui o código da classe de negócio e chama o método vinculado à ação. {A4} 9. Aplicação desenvolvida pelo cliente executa suas tarefas e retorna objeto.{A5} 10. Controler converte objeto da camada de negocios em SOAP. 9. Camada de visualização retorna SOAP para o cliente. == 5 Eventos Alternativos == {A1}. Usuário não validado no LDAP, retorna SOPA de erro com mensagem de usuário inválido, e encerra o fluxo. {E1} {A2}. Usuário validado não tem permissão de execução da ação, levanta erro para ser tratado pela camada de controle que retorna XML/HTML de erro, e encerra o fluxo. {E2} {A3}. No caso da solicitação ao banco de dados retornar que a aplicação deve ser desprotegida define a classe de segurança no modo de proteção desabilitado. {A4}. Não encontra o código da classe a ser incluída e levanta erro para ser tratado pela camada de controle que retorna, SOAP de erro, e encerra o fluxo. {E3} {A5}. Aplicação do cliente retorna erro, para ser tratado pela camada de controle. == 6 Tratamento de Erros == {E1}. Monta mensagem de erro "Usuário ou senha inválidos". {E2}. Monta mensagem de erro "Ação solicitada não existe ou usuário não tem permissão de acesso". {E3}. Monta mensagem de erro "Código da classe de negócio não foi localizado". == 7 Mensagem == Não relevante == 8 Pós-condições == SOAP enviado para o cliente. == 9 Regras de Negócio == Não relevante. == 10 Protocolos == === 10.1 Requisição do cliente === === 10.2 Resposta do servidor === Não relevante. == 11 Notas == Caso seja necessário utilizar recursos do Expresso que dependam de valores contidos na sessão ou em globals será necessário executar a lib que obtem os dados do Expresso.