Skip to content
Markenson edited this page Dec 16, 2016 · 24 revisions

Siga-Wf

Siga → Siga-Wf

Introdução

O Siga-Wf é um módulo do Siga que usa a ferramenta JBMP 3 para orquestrar a execução de tarefas. Essas tarefas são alocadas para pessoas e lotações conforme um mapa de tarefas, representando um fluxo predefinido, sendo cada tarefa designada a uma pessoa ou lotação. Na página inicial (ou pelo menu Procedimentos -> Ativos), são exibidas as tarefas alocadas para a pessoa ou lotação que está utilizando o sistema.

O Siga-Wf independe do módulo que o utiliza. Por exemplo, um documento do Siga-Doc pode estar associado a um processo do Siga-Wf. Ambos os módulos podem ser configurados de modo que um movimento no documento dispare uma ação no workflow, e vice-versa. Vários exemplos práticos dados nesta página se referem à integração entre o Siga-Doc e o Siga-Wf, mas poderiam também aludir à associação do workflow com outros módulos.

Recomenda-se também consultar as seguintes fontes:

Documentação Técnica

Para acessar a documentação técnica do Siga-Wf, clique aqui

Funcionalidades do Siga-Wf

Elaboração de fluxos

A criação dos fluxos em uso no Siga-Doc foi feita por meio da ferramenta GPD, que é um plugin do JBPM para a IDE Eclipse e possibilita a geração gráfica do fluxo, gerando o arquivo process-definition.xml necessário a partir do desenho.

Após desenhado o fluxo, deve ser feito o deploy da definição do prcocesso para dentro do Siga-Wf. A ferramenta deve estar configurada para fazer deploy apontando para a URL .../sigawf/upload (o endereço completo dependerá da configuração do ambiente). O deploy guardará, na base de dados do Siga-Wf, a nova definição.

Um novo deploy de um fluxo não causa a alteração na execução dos processos do Siga-Wf já iniciados. Quando uma instância de um processo do Siga-Wf inicia, ela prossegue usando a mesma definição de processo até o seu fim. Apenas os fluxos iniciados a partir do momento em que a definição for alterada (ou seja, a partir do deploy) correrão sob a nova definição.

O menu Ferramentas -> Editar Procedimentos foi criado para eliminar a exigência do plugin do Eclipse na geração do fluxo. A definição do processo seria feita pela própria interface do sistema. Esse recurso ainda está em desenvolvimento (https://github.com/projeto-siga/siga/issues/955).

Definição dos atendentes das tarefas do fluxo

Após ter sido feito o deploy da definição do processo, é necessário acessar a opção Ferramentas -> Designar Tarefas para definir o executor de cada tarefa. Esse menu aparece vazio enquanto não houver processos na base de dados (ou seja, dos quais não tenha sido feito deploy conforme o procedimento acima). Seria possível fazer essa associação na própria definição do processo (etapa anterior), mas isso o tornaria menos flexível, restrito a um ambiente organizacional específico. Então, não é recomendável fazer essa definição estática, mas sim pela interface do sistema, após ter sido feito o deploy da definição do processo.

O atendente não necessariamente é uma lotação - pode ser um papel (por exemplo, o gestor do processo do Siga-Doc). Nesse caso, quando o processo do Siga-Doc for assinado e o processo do workflow for disparado, será verificado quem é o o gestor no Siga-Doc. Esse valor será então inserido na instância do processo do workflow. Assim, se, no fluxo, uma equipe é dona de uma tarefa, é porque foi usado esse recurso para defini-la como tal, seja diretamente ou por meio de um papel referenciado pelo fluxo.

  • Obs.: se a definição da equipe atendente da tarefa não for feita, ocorrerá erro ao instanciar o processo do workflow (etapa que ocorre no momento da assinatura do processo no Siga-Doc).

Iniciação do processo do Siga-Wf

Um processo do Siga-Wf é iniciado sob demanda de um dos módulos do Siga. No caso do Siga-Doc, normalmente um processo do Siga-Wf é disparado quando um documento de um determinado modelo é assinado.

Alguns modelos tem o uso opcional do workflow. Nesses casos, a assinatura não dispara a geração do processo no Siga-Wf, mas é possível iniciar um processo do Siga-Wf em separado, independente de documento do Siga-Doc, por meio da opção Procedimentos -> Iniciar. Ao usar esse recurso, será necessário, na primeira tarefa do processo do Siga-Wf, informar o número do processo do Siga-Doc ao qual essa instância do workflow ficará associada. Pelo menu Ferramentas -> Configurações é possível definir quem terá permissão para iniciar processos manualmente (sem associação com um documento do Siga-Doc, por exemplo)

Não faria sentido associar um processo físico do Siga-Doc a um processo do Siga-Wf, visto que o uso do workflow implica transferência automática de documentos, o que não se adequa à realidade física.

Execução de tarefas

A página inicial lista as tarefas designadas para a pessoa ou lotação. Cada tarefa se refere a um processo específico. Não é indicada, na página inicial, mais de uma tarefa do mesmo processo para a mesma equipe e para o mesmo usuário. Isso ocorreria se houvesse mais de uma tarefa no mesmo nodo, mas, como visto acima, o Siga-Wf não usa esse recurso do JBPM.

Clicar numa dessas tarefas levará à página de execução da tarefa, em que pode ser observado o fluxo completo e a posição atual, à direita. Essa tela também pode ser acessada a partir da tarja do workflow que aparece dentro de um documento associado a um processo do Siga-Wf.

Uma tarefa pode estar designada para uma lotação ou para uma pessoa. (Se o atendente definido no fluxo for um perfil do Siga-Doc, a tarefa já terá, nesse momento, sido atribuída à pessoa ou lotação associada ao documento por meio desse perfil). Estando designada para uma lotação, a tarja do workflow dentro do documento do Siga-Doc correspondente exibirá a informação "Aguardando Andamento". Esse estado, portanto, tem um significado diferente da situação "Aguardando Andamento" do Siga-Doc. Quando a tarefa é designada para uma pessoa, a tarja passa a indicar que ela é a designada para atender.

Uma tarefa alocada para toda a lotação pode ser direcionada para uma pessoa específica da lotação, bastando essa pessoa clicar em Pegar. É possível, a uma pessoa, dar andamento numa tarefa cujo atendente é outra pessoa, desde que esta seja da mesma lotação.

Para dar andamento a uma tarefa, basta acessar a tela de exibição da tarefa (mencionada acima) e clicar em "Prosseguir". Se a tarefa possuir duas saídas, haverá um botão para cada saída definida. Quando um usuário clica no botão de andamento da tarefa, é como se ele clicasse em Pegar, ou seja, a tarefa é atribuída a ele, e nesse caso é dada como completa. Assim como ocorre no Siga-Doc, caso ele esteja substituindo outra pessoa, ele mesmo será definido como o atendente da tarefa, não o titular.

Se o fluxo retornar à tarefa já executada, o atendente não será definido automaticamente como a pessoa que a pegou ou executou anteriormente. Isso ocorrerá apenas se a tarefa fizer parte de uma swimlane (caso em que essa pessoa se torna atendente de toda a swimlane quando ela clica em Pegar ou Prosseguir) ou se a tarefa tiver sido, na etapa da designação de atendentes, predefinida para ser executada por uma pessoa específica.

Quanto ao uso de swimlanes, é interessante ressaltar que já houve dificuldades envolvendo o acesso às tarefas. Nas primeiras versões, uma pessoa de uma lotação não via, na página inicial, as tarefas cujo atendente era uma outra pessoa da lotação (por ter essa outra pessoa clicado em Pegar). Isso fazia com que todas as tarefas seguintes da swimlane se tornassem invisíveis, visto que já eram direcionadas automaticamente para a mesma pessoa. Esse problema deixou de ocorrer quando a página inicial passou a indicar as tarefas de toda a equipe.

Redesignação de tarefas específicas

Qualquer pessoa de uma equipe designada para atender a uma tarefa pode direcionar a tarefa para outra equipe. Inicialmente, essa designação podia ser feita apenas na vertical, ou seja, apenas para lotações acima ou abaixo na hierarquia. A partir de uma certa versão, essa restrição foi eliminada, de modo que é possível designar uma tarefa para qualquer lotação. isso pode ser feito na tela que exibe a tarefa (exibida clicando-se sobre a tarefa na página inicial ou na tarja da parte superior da tela de exibição de um processo do Siga-Doc).

Task Controller

O task controller é responsável por transferir as variáveis disponíveis no fluxo (process instance) para a tarefa e vice-versa. Quando uma tarefa é criada (task instance), o task controller lê as variáveis do fluxo (process instance) e as copia para o task instance. Quando uma tarefa (task instance) é finalizada (prossegue), as varíaveis são transferidas para o fluxo (process instance) via task controller. A task instance é utilizada para ler/apresentar os dados aos usuários (via página web, email, chamada a web service, etc.) e o task controller é responsável por traduzir ou transformar essa leitura/escrita.

A tabela SIGAWF.VARIABLEACCESS contém o mapeamento das variáveis e como ela deve ser lida/escrita entre o processo e a tarefa (campo ACESS_ que pode ser read, write ou required). A tabela SIGAWV.VARIABLEINSTANCE contém os valores das variáveis para o processo ou tarefa em execução.

-- localizar Process Definition SELECT distinct PROCESSDEFINITION_ FROM SIGAWF.JBPM_PROCESSINSTANCE WHERE ID_ in (SELECT PROCESSINSTANCE_ FROM SIGAWF.JBPM_VARIABLEINSTANCE WHERE STRINGVALUE_ LIKE '%TRF2-SEC-2016/00054%');

-- listar variáveis definidas nas tasks select TASK.ID_ AS TASK_ID,VA.ID_ AS VA_ID,TASK.NAME_, VA.VARIABLENAME_,VA.ACCESS_, VA.MAPPEDNAME_ from SIGAWF.JBPM_TASK TASK INNER JOIN SIGAWF.JBPM_VARIABLEACCESS VA ON (VA.TASKCONTROLLER_ = TASK.TASKCONTROLLER_) WHERE TASK.PROCESSDEFINITION_ = 404375;

-- atualizar variableaccess update SIGAWF.JBPM_VARIABLEACCESS SET MAPPEDNAME_ = 'doc_a' WHERE ID_ IN (404455,404633) -- ERA doc_document

(Referência: http://docs.jboss.org/jbpm/v3/userguide/taskmanagement.html#taskcontrollers)

Siga → Siga-Wf

Clone this wiki locally