Version 2 (modified by fabianok, 14 years ago) (diff) |
---|
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 UC Executar Rotina instanciando sempre a classe de retorno da interface como a biblioteca que converte objeto para SOAP.
2 Atores
- Aplicação do Sistema
- Aplicação Cliente
- Usuário
3 Pré-condições
Não existem pré condições.
4 Eventos
- Aplicativo cliente envia requisição HTTP contendo informações em formato SOAP.
- Servidor recebe a requisição e chama a camada controller para processar a requisição.
- Camada controller valida se o SOAP é um XML bem formatado.
- Camada controller valida se o XML contém os dados nome de usuário, senha, codigo da aplicação e código da rotina.
- Camada controller valida o usuário na base LDAP. {A1}
- Camada controler recupera as informações de aplicação e ação, e valida acesso, executando o UC Validar Acesso, conforme dados do usuário informados no SOAP. {A2}
- 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}
- Inclui o código da classe de negócio e chama o método vinculado à ação. {A4}
- Aplicação desenvolvida pelo cliente executa suas tarefas e retorna objeto.{A5}
- Controler converte objeto da camada de negocios em SOAP.
- 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
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://expresso.pr.gov.br/applications/soap-envelope" soap:encodingStyle="http://expresso.pr.gov.br/applications/soap-encoding">
<soap:Header>
<login:Validate xmlns:login="http://expresso.pr.gov.br/applications/login">
<login:user_name></login:user_name> <login:user_passwd></login:user_passwd>
</login:Validate> <login:Action xmlns:login="http://expresso.pr.gov.br/applications/login">
<login:application></login:aplication> <login:action></login:action>
<login:Action>
</soap:Header> <soap:Body>
<!-- Incluir XML contendo as informações a serem enviada para sere processadas -->
</soap:Body> </soap:Envelope>
10.2 Resposta do servidor
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://expresso.pr.gov.br/applications/soap-envelope" soap:encodingStyle="http://expresso.pr.gov.br/applications/soap-encoding">
<soap:Body>
<!-- Incluir XML que representa a serialização do objeto de negocios -->
</soap:Body> </soap:Envelope>
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.