wiki:WF/executarrotinaws

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

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