| 1 | = Executar Rotina Utilizando SOAP = |
| 2 | |
| 3 | == 1 Descrição == |
| 4 | |
| 5 | 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. |
| 6 | |
| 7 | 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. |
| 8 | |
| 9 | 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. |
| 10 | |
| 11 | |
| 12 | == 2 Atores == |
| 13 | |
| 14 | 1. Aplicação do Sistema |
| 15 | 2. Aplicação Cliente |
| 16 | 3. Usuário |
| 17 | |
| 18 | == 3 Pré-condições == |
| 19 | |
| 20 | Não existem pré condições. |
| 21 | |
| 22 | == 4 Eventos == |
| 23 | |
| 24 | 1. Aplicativo cliente envia requisição HTTP contendo informações em formato SOAP. |
| 25 | 2. Servidor recebe a requisição e chama a camada controller para processar a requisição. |
| 26 | 3. Camada controller valida se o SOAP é um XML bem formatado. |
| 27 | 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. |
| 28 | 5. Camada controller valida o usuário na base LDAP. {A1} |
| 29 | 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} |
| 30 | 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} |
| 31 | 8. Inclui o código da classe de negócio e chama o método vinculado à ação. {A4} |
| 32 | 9. Aplicação desenvolvida pelo cliente executa suas tarefas e retorna objeto.{A5} |
| 33 | 10. Controler converte objeto da camada de negocios em SOAP. |
| 34 | 9. Camada de visualização retorna SOAP para o cliente. |
| 35 | |
| 36 | == 5 Eventos Alternativos == |
| 37 | |
| 38 | {A1}. Usuário não validado no LDAP, retorna SOPA de erro com mensagem de usuário inválido, e encerra o fluxo. {E1} |
| 39 | |
| 40 | {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} |
| 41 | |
| 42 | {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. |
| 43 | |
| 44 | {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} |
| 45 | |
| 46 | {A5}. Aplicação do cliente retorna erro, para ser tratado pela camada de controle. |
| 47 | |
| 48 | |
| 49 | == 6 Tratamento de Erros == |
| 50 | |
| 51 | {E1}. Monta mensagem de erro "Usuário ou senha inválidos". |
| 52 | |
| 53 | {E2}. Monta mensagem de erro "Ação solicitada não existe ou usuário não tem permissão de acesso". |
| 54 | |
| 55 | {E3}. Monta mensagem de erro "Código da classe de negócio não foi localizado". |
| 56 | |
| 57 | == 7 Mensagem == |
| 58 | |
| 59 | Não relevante |
| 60 | |
| 61 | == 8 Pós-condições == |
| 62 | |
| 63 | SOAP enviado para o cliente. |
| 64 | |
| 65 | == 9 Regras de Negócio == |
| 66 | |
| 67 | Não relevante. |
| 68 | |
| 69 | == 10 Protocolos == |
| 70 | |
| 71 | === 10.1 Requisição do cliente === |
| 72 | <?xml version="1.0"?> |
| 73 | <soap:Envelope xmlns:soap="http://expresso.pr.gov.br/applications/soap-envelope" |
| 74 | soap:encodingStyle="http://expresso.pr.gov.br/applications/soap-encoding"> |
| 75 | |
| 76 | <soap:Header> |
| 77 | <login:Validate xmlns:login="http://expresso.pr.gov.br/applications/login"> |
| 78 | <login:user_name></login:user_name> |
| 79 | <login:user_passwd></login:user_passwd> |
| 80 | </login:Validate> |
| 81 | <login:Action xmlns:login="http://expresso.pr.gov.br/applications/login"> |
| 82 | <login:application></login:aplication> |
| 83 | <login:action></login:action> |
| 84 | <login:Action> |
| 85 | </soap:Header> |
| 86 | <soap:Body> |
| 87 | <!-- Incluir XML contendo as informações a serem enviada para sere processadas --> |
| 88 | </soap:Body> |
| 89 | </soap:Envelope> |
| 90 | |
| 91 | === 10.2 Resposta do servidor === |
| 92 | <?xml version="1.0"?> |
| 93 | <soap:Envelope xmlns:soap="http://expresso.pr.gov.br/applications/soap-envelope" |
| 94 | soap:encodingStyle="http://expresso.pr.gov.br/applications/soap-encoding"> |
| 95 | |
| 96 | <soap:Body> |
| 97 | <!-- Incluir XML que representa a serialização do objeto de negocios --> |
| 98 | </soap:Body> |
| 99 | </soap:Envelope> |
| 100 | |
| 101 | |
| 102 | |
| 103 | Não relevante. |
| 104 | |
| 105 | == 11 Notas == |