= 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.