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.sqlitena 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.htmlouindex.htmlserem 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.