= Arquitetura de Desenvolvimento = O desenvolvimento de processos de Workflow utiliza a arquitetura MVC, já consagrada entre desenvolvedores, que organiza o código em camadas. Cada camada irá limitar-se exclusivamente àquilo que se propõe a fazer, mantendo tudo em seu contexto a fim de tornar transparente a localização de cada parte do código. [[Image(mvc.png)]] A figura acima esquematiza a arquitetura MVC empregada em uma atividade qualquer de um processo. Vale dizer que todas as atividades do processo deverão seguir este modelo de implementação como forma de padronizar o código e facilitar a manutenção. Observa-se que as três camadas do MVC (Model - View - Controller) estão representados no esquema. O ponto inicial de ação é a execução da atividade por parte do usuário, representado pelo ícone do computador e o método run() que ativa a camada de controle. A camada de controle irá processar a requisição run() e tentará identificar qual a ação que está sendo solicitada pelo usuário. Feita esta identificação, o método adequado da camada Controller será acionado através do dispatch(). Quando for a primeira execução da atividade, nenhuma ação será requisitada, então a camada Controller irá acionar o método !__default() da própria Controller. Uma vez no método adequado, métodos da Model serão chamados para executar a ação solicitada. Uma vez que o processamento passe para a camada Model, a mesma terá acesso à recursos disponibilizados pelo módulo workflow, que são: * DAO: é um objeto de conexão com o banco de dados (que significa Data Access Object). Este objeto já estará configurado para utilizar o banco de dados do processo. Uma vez solicitada a conexão, o objeto já estará pronto para receber comandos SQL, como por exemplo queries de consulta, ou comandos de inserção de dados; * Factory: este é um objeto especial responsável por criar outros objetos sob demanda do usuário. Por exemplo, com a factory podemos requisitar a criação de um objeto de organograma, e com ele ter acesso aos dados do organograma da organização; * Natural: objeto de conexão com o ambiente Mainframe para execução de programas Natural; * Workflow: este objeto contém informações sobre o ambiente de execução da atividade corrente, como por exemplo, qual o usuário está logado; * Request: contém os dados submetidos pela atividade. Por exemplo, se a ação a ser tratada pela Model for um salvamento com inserção no banco de dados, neste objeto estarão os dados preenchidos pelo usuário no formulário da atividade; * Instance: objeto da instância atual; * Activity: objeto da atividade atual. O retorno da camada Model será um indicativo de sucesso ou insucesso da operação. A camada Controller irá tratar este retorno para tomar uma decisão sobre o que fazer. Geralmente após o retorno da camada Model, alguma informação será exibida para o usuário, com uma mensagem de sucesso, ou uma página de resultado de pesquisa, etc. Neste ponto, a camada Controller irá carregar na camada View os dados a serem exibidos e acioná-la passando qual o template a ser utilizado para exibição dos dados. Assim fecha-se o ciclo e a atividade fica no aguardo de uma ação do usuário para novamente acionar a camada Controller.