= 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 Controler, que recupera as informações de execução. Estas informações devem conter o nome da rotina e a ação a ser executada, qualquer outro parâmetro é opcional. A camada também tem que ser capaz de reconhecer o usuário, e seus perfis, que está executando a solicitação e validar se este pode realmente executar a rotina solicitada. Após acessar o "Módulo de Aplicações" o usuário clica sobre o ícone da aplicação que deseja executar. A interface então envia uma requisição para o controle do módulo, utilizando metodo get, contendo o nome da aplicação e o código da 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 o nome da aplicação,o código da ação e o código 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 e as permissões de execução do usuário na ação. Depois de concluida 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 do sistema. Com o ambiente preparado para execução o modulo de controle inclui o código da camada de modelo e chama a execução da aplicação utilizando as informações rotina e ação, recuperadas da requisição http, e passa a executar a aplicação do cliente. Quando a aplicação conclui sua tarefa deve retornar um objeto cujas propriedades serão serializadas em formato xml pela camada de controle e devolvidas ao cliente que fez a solicitação. == 2 Atores == 1. Sistema Cliente 2. Aplicação Cliente == 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 controler para processar a requisição. 3. Camada controler recupera as informações de aplicação e atividade e valida acesso, executando o UC Validar Acesso em[http://trac.expressolivre.org/wiki/WF/validaracesso], conforme informações do perfil do usuário logado. {A1} 4. Busca informações sobre a rotina no banco de dados e define a classe de segurança no modo de proteção habilitado. {A2} 5. Chama a aplicação default da camada de negócios que armazena os parâmetros da solicitação http em uma lista e em seguida executa o método default desta aplicação.{A3} 6. Aplicação desenvolvida pelo cliente executa suas tarefas e retorna objeto.{E2} 7. Controler passa o objeto para a camada de visualização {A2} 8. Camda de visualização mescla dados de negocio com a interface com o usuário {E2 b}. 9. Camada de contlole retorna a página HTML para o cliente. == 5 Eventos Alternativos == 1. Usuário da sessão não tem permissão de execução da rotina ou ação, levanta erro para ser tratado pela camada de controle que retorna XML/HTML de erro. {E1} 2. 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. 3. Se uma ação foi passada para a rotina, obtida na recuperação da url, executa o método correspondente ao nome da ação. 4. Aplicação do cliente retorna erro, retorna erro para a camada de controle. 5. Controler transforma objeto em xml e retorna via http para o cliente, fluxo é finalizado {E2} == 6 Tratamento de Erros == 1. Monta mensagem de erro "Rotina solicitada não existe ou usuário não tem permissão de acesso" . 2. a Converte o erro para xml de erro e retorna para o cliente. 2. b Converte o erro para html de erro e retorna para o cliente. == 7 Mensagem == Não relevante == 8 Pós-condições == Xml/HTML enviado para o cliente. == 9 Regras de Negócio == Não relevante. == 10 Telas Envolvidas == Não relevante. == 11 Notas ==