Workflow

No framework Jam.py, duas tarefas funcionam ao mesmo tempo: o Application builder e o Project. Cada uma delas representa uma árvore de objetos – existe a árvore de tarefas do Application builder e a árvore de tarefas do Project. Portanto, antes de considerar o fluxo de trabalho do Jam.py, você precisa se familiarizar com o conceito de task tree.

O fluxo de trabalho do Jam.py é o seguinte:

  • Quando o server.py é executado, ele cria uma aplicação WSGI que, por sua vez, cria a árvore de tarefas do Application builder.

  • A árvore de tarefas do Project é criada no servidor pelo Application builder após o servidor receber a primeira requisição do cliente do Project. Para isso, o Application builder usa os metadados armazenados no banco de dados admin.sqlite na pasta raiz do projeto. Após criar a árvore de tarefas, a aplicação no servidor dispara o evento on_created, que pode ser usado para inicializar a árvore de tarefas do servidor.

  • Quando uma aplicação no cliente (Application builder ou Project) é executada pela primeira vez no navegador (após builder.html ou index.html serem carregados), o objeto de tarefa vazio é construído e envia uma requisição ao servidor para se inicializar.

  • Se o parâmetro safe mode do projeto estiver definido, o framework verifica se há um usuário autenticado antes de executar qualquer requisição. Caso contrário, a aplicação no cliente cria um formulário de login, e após o usuário inserir seu login e senha, a tarefa do cliente envia uma requisição ao servidor para autenticar.

  • Após o login com sucesso ou se o parâmetro safe mode do projeto não estiver definido, o servidor envia ao cliente as informações sobre a tarefa solicitada. A tarefa no cliente constrói sua árvore com base nessas informações, atribui os manipuladores de eventos a seus objetos e executa o manipulador de evento on_page_loaded.

  • Neste manipulador de evento, o desenvolvedor deve anexar funções manipuladoras de eventos do JQuery aos elementos HTML do DOM, definidos no arquivo index.html. Nessas funções, o desenvolvedor pode usar os métodos dos itens da task tree para executar tarefas específicas. Esses métodos, quando executados, disparam diferentes eventos nos quais outros métodos podem ser chamados e assim por diante. Veja Client side programming.

  • Itens da árvore de tarefas que possuem tabelas de banco de dados correspondentes possuem métodos para ler e gravar dados no banco de dados do servidor. Veja Data programming.

  • Os itens de relatório geram os relatórios no servidor com base em modelos do LibreOffice. Veja Programming reports.

  • Todos os itens cujos métodos geram uma requisição para o servidor o fazem da seguinte forma: eles chamam o método da tarefa que envia ao servidor o ID da tarefa, o ID do item, o tipo da requisição e seus parâmetros. O servidor, ao receber a requisição, com base nos IDs recebidos, encontra a tarefa (que pode ser a tarefa do Project ou do Application builder) e o item no servidor, executa o método correspondente com os parâmetros recebidos e retorna o resultado da execução para o cliente. Esses métodos do servidor podem disparar seus próprios eventos que podem sobrescrever o comportamento padrão. Veja Server side programming

Video

Os tutoriais em vídeo Form events e Client-server interactions ilustram o fluxo de trabalho de um projeto Jam.py.