wiki:WF/executarrotina

Executar Rotina

1 Descrição

A execução de uma rotina é a forma como o sistema de aplicações executa uma tarefa. O cliente faz uma requisição http para o endereço onde está a aplicação que atende as requisições, camada Controller, que recupera as informações de execução. Estas informações devem conter os identificadores da aplicação e da ação a ser executada, qualquer outro parâmetro é opcional e será repassado para a camada model. A camada também tem que ser capaz de reconhecer o usuário, que está executando a solicitação, seus perfis e validar se este pode realmente executar a ação solicitada.

Após acessar o "Módulo de Aplicações" o usuário clica sobre o ícone da aplicação que deseja executar. Somente serão apresentadas as aplicações em que o usuário é membro de algum perfil. O módulo então requisita o menu da aplicação e executa a ação padrão da aplicação. A seguir, desenha o cabeçalho da aplicação com menu hierárquico das ações e uma página padrão de "boas vindas" com as informações adicionais, obtidas do retorno da ação padrão. O usuário seleciona a ação desejada no menu, e a interface envia uma requisição para o controle do módulo, utilizando metodo get, contendo os códigos da aplicação e ação. A página de controle da aplicação busca as informações de execução da ação em banco de dados, utilizando como critério de seleção os códigos da aplicação, da ação e do usuário que solicitou a execução. A tupla retornada pela consulta contém a classe que será executada e o método que deve ser chamado pela ação.

Depois de concluída a seleção da ação e as permissões do usuário, o ambiente é preparado para ser executado em modo protegido ou não. Uma rotina que rode no modo desprotegido pode acessar métodos das bibliotecas do sistema cadastrados como protegidos. Esta funcionalidade está sempre disponível para rotinas do módulo.

Com o ambiente preparado para execução o módulo de controle inclui o código da camada de modelo e executa o método da aplicação do cliente. Quando a aplicação conclui sua tarefa deve retornar um objeto para ser manipulado pela camada de visualização que gera o XMl de retorno para o cliente.

2 Atores

  1. Aplicação do Sistema
  2. Aplicação Cliente
  3. Usuário

3 Pré-condições

Ter executado a rotina de login com sucesso.

4 Eventos

  1. Aplicativo cliente envia requisição HTTP.
  2. Servidor recebe a requisição e chama a camada controller para processar a requisição.
  3. Camada controller recupera as informações de aplicação e ação, e valida acesso, executando o UC Validar Acesso, conforme dados do usuário logado. {A1}
  4. Busca informações sobre a ação no banco de dados e define a classe de segurança no modo de proteção habilitado. {A2}
  5. Inclui o código da classe de negócio e chama o método vinculado à ação. {A3}
  6. Aplicação desenvolvida pelo cliente executa suas tarefas e retorna objeto.{A4}{N1}
  7. Controler passa o objeto para a camada de visualização.
  8. Camada de visualização mescla dados de negócio com a interface do usuário. {A5}
  9. Camada de visualização retorna XML de dados para a camada de controle
  10. Camada de controle retorna o XML para o cliente.

5 Eventos Alternativos

{A1}. Usuário da sessão não tem permissão de execução da ação, levanta erro para ser tratado pela camada de controle, e encerra o fluxo. {E1}

{A2}. 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.

{A3}. Não encontra o código da classe a ser incluída e levanta erro para ser tratado pela camada de controle, e encerra o fluxo. {E2}

{A4}. Aplicação do cliente retorna objeto de mensagem, com erros, para serem tratados pela camada de controle.

{A5}. Caso não exista template (interface) para mesclar os dados, transforma os dados em Xml.

6 Tratamento de Erros

{E1}. Monta mensagem de erro "Ação solicitada não existe ou usuário não tem permissão de acesso".

{E2}. 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

Xml enviado para o cliente.

9 Regras de Negócio

O retorno de dados da camada model deve ser um objeto de dados tipo VO. Quando o retorno for mensagem normal ou erro, utilizar uma classe VO padronizada. Demais classes VO do sistema devem estar armazenadas na pasta model/VO.

O retorno de dados da camada view deve ser sempre um pacote Xml. Quando houver necessidade de retornar Html, o mesmo deve estar encapsulado em uma tag do pacote principal.

A camada de controle deve enviar um header para o navegador indicando que o formato dos dados é Xml e a seguir fazer um echo do conteúdo Xml.

10 Telas Envolvidas

Não relevante.

11 Notas

{N1}. Constitui-se boa prática de desenvolvimento, validar os dados recebidos de uma interface de usuários (página) antes de qualquer operação com banco de dados. É recomendável que o desenvolvedor crie uma ou mais rotinas de validação de dados para a sua aplicação e que utilize o componente de validação, disponível na biblioteca, para automatizar a checagem dos dados.