Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

EventoDescriçãoParâmetros
afterCancelProcess

Ocorre após o cancelamento da solicitação.

  • Usuário corrente (String);
  • Número do processo (Integer).
afterProcessCreate

Ocorre logo após a criação de um novo processo.

Nota

Observação: Em caso de execução deste evento um em sub-processo, não será possível definir ou resgatar dados da ficha anexada ao sub-processo, pois nessa situação a ficha ainda não está criada.

  • Número do novo processo (Integer).
afterProcessFinish

Ocorre após finalizada a solicitação.

  • Número do processo (Integer).
afterReleaseVersion

Ocorre após a liberação de uma versão do processo.

  • XML com a definição do processo (String).
afterStateEntryOcorre após a entrada em uma nova atividade.
  • Sequência da atividade (Integer).
afterStateLeaveOcorre após a saída de uma atividade.
  • Sequência da atividade (Integer).
afterTaskComplete

Ocorre após o usuário completar uma tarefa, porém as informações de próxima tarefa e usuários destino já foram salvas.

  • Usuário corrente (String);
  • Sequência da próxima atividade (Integer);
  • Lista de usuários destino (List<String>).
afterTaskCreateOcorre após o usuário receber uma tarefa.
  • Matrícula do usuário (String).
afterTaskSave

Ocorre após salvar as informações selecionadas pelo usuário.

  • Usuário corrente (String);
  • Sequência da próxima atividade (Integer);
  • Lista de usuários destino (List<String>).
beforeCancelProcess

Ocorre antes do cancelamento da solicitação.

  • Usuário corrente (String);
  • Número do processo (Integer).
beforeStateEntryOcorre antes da entrada em uma nova atividade.
  • Sequência da atividade (Integer).
beforeStateLeaveOcorre antes da saída de uma atividade.
  • Sequência da atividade (Integer).
beforeTaskComplete

Ocorre antes que o usuário complete uma tarefa, porém as informações de próxima tarefa e usuários destino já foram salvas.

  • Usuário corrente (String);
  • Seqüência da próxima atividade (Integer);
  • Lista de usuários destino (List<String>).
beforeTaskCreateOcorre antes que o usuário receba uma tarefa.
  • Matrícula do usuário (String).
beforeTaskSave

Ocorre antes de salvar as informações selecionadas pelo usuário.

  • Usuário corrente (String);
  • Sequência da próxima atividade (Integer);
  • Lista de usuários destino (List<String>).
calculateAgreement

Ocorre após o cálculo do consenso (somente para atividades conjuntas) e permite alterar os dados do consenso de uma atividade.

Exemplo:

Bloco de código
themeEclipse
languagejavascript
firstline1
linenumberstrue
function calculateAgreement(currentState, agreementData) {
	log.info("Consenso Atual: " + agreementData.get("currentPercentage"));
	log.info("Atividade Destino Atual: " +  agreementData.get("currentDestState"));
	log.info("Usuario Destino Atual: " + agreementData.get("currentDestUsers"));
	
	//Altera o consenso
	agreementData.put("currentPercentage", 100);
	agreementData.put("currentDestState", 2);
	agreementData.put("currentDestUsers", "adm,teste,super");
}
  • currentState (Integer): atividade que terá o consenso alterado;
  • agreementData (Map<String, Object>): mapa de dados com o percentual calculado, a atividade destino e os usuários de destino. Para obter os valores, utilize o método "get" e para atribuir um valor, utilize o método "put".
onNotify

Ocorre Se refere a um evento global que ocorre após a movimentação da solicitação e antes de enviar as notificações.

Para mais detalhes consulte o capítulo Customização de E-maila página Desenvolvimento de Eventos - On Notify.
setProcess

Ocorre quando um processo é "setado" na API.

Nota

Observação: A propriedade WKCompletTask não deve ser utilizada neste evento, pois quando ele é executado o produto ainda não tem a informação se atividade foi ou não completada.

  • Número do processo (Integer).
subProcessCreatedOcorre quando um sub-processo é criado.
  • Número do sub-processo (Integer).
validateAvailableStates

Ocorre após montada a lista de tarefas disponíveis para o usuário a partir da tarefa atual.

  • Sequência da atividade atual (Integer);
  • Lista das sequências das atividades (List<Integer>).  

...

Mecanismo de AtribuiçãoDescrição
Para um Papel (Pool)Permite atribuir tarefas a um papel e não apenas a um usuário. Assim, qualquer um dos usuários neste papel pode assumir as tarefas para completá-las.
Para um Grupo (Pool)Permite atribuir tarefas a um grupo e não apenas a um usuário. Assim, qualquer um dos usuários deste grupo pode assumir as tarefas para completá-las.
Por AssociaçãoPermite compor lógicas complexas de atribuição por intermédio da associação de vários mecanismos.
Por Campo de Formulário

Permite atribuir tarefas ao usuário informado em um campo do formulário do processo.

Por Executor de AtividadePermite selecionar os usuários que executaram uma atividade anterior.
Por GrupoPermite filtrar apenas os usuários que façam parte de um determinado grupo.
Por Grupos do Usuário

Permite filtrar apenas os usuários que pertençam a um dos grupos do usuário corrente, ou do usuário que iniciou o processo (solicitante). Também permite filtrar apenas os usuários cujo grupo de trabalho seja o mesmo do usuário (corrente ou solicitante).

Por PapelPermite filtrar apenas os usuários que possuam um determinado papel.
Por UsuárioPermite atribuir tarefas a um usuário específico.

 

Como criar um Mecanismo de Atribuição

...

Deck of Cards
startHiddenfalse
effectDuration0.5
idmecatrib
historyfalse
effectTypefade
Card
defaulttrue
id1
label1º Passo

 

Para criar um novo mecanismo de atribuição customizado, clicar com o botão direito do mouse no projeto do Fluig, acessar a opção New e então a opção Other. No assistente aberto, selecionar a opção "Mecanismo customizado Fluig" presente na pasta Fluig e clicar no botão Next:

 

Card
id2
label2º Passo

 

O assistente Novo Mecanismo Fluig é aberto. Informar o Código e uma descrição e clicar no botão Finish:

 

Card
id3
label3º Passo (Implementação)

 

O arquivo JavaScript do mecanismo de atribuição é adicionado ao projeto na pasta mechanisms e aberto para edição.

O script de customização de mecanismo de atribuição recebe como parâmetro o código do processo e o usuário corrente. Este script deve retornar uma lista dos usuários que podem assumir a tarefa. Abaixo, exemplo de implementação:

Bloco de código
themeEclipse
languagejavascript
firstline1
linenumberstrue
function resolve(process, colleague) {
	var userList = new java.util.ArrayList();

	var groupId = colleague.getGroupId();

	var c1 = DatasetFactory.createConstraint("cdArea", groupId, groupId, ConstraintType.MUST); 
	var constraints = new Array(c1);
	
	var dataset = DatasetFactory.getDataset("dsResponsaveisArea", null, constraints, null);
	
	for (var i = 0; i < dataset.rowsCount; i++) {
		userList.add(dataset.getValue(i, "cdUsuarioResp"));
	}
	
	return userList;
}
Informações

É possível acessar Datasets e Serviços cadastrados no Fluig na customização do mecanismo de atribuição.

Card
id4
labelÚltimo Passo (Exportação)


Por fim, o mecanismo de atribuição customizado deve ser exportado para o servidor do Fluig e ao realizar a exportação deve ser informado obrigatoriamente seu código e nome, e opcionalmente uma descrição:

 

 

Parâmetros Workflow para Customização de Formulários

...

Bloco de código
themeEclipse
languagejavascript
var vCodProcess = getValue("WKDef");

...

Customização de E-mail

É possível incluir customizações de e-mail durante o andamento de um workflow. Existem duas modalidades de customização nessa categoria:

...

Envio de E-mail Padrão

Para interferir no envio de um e-mail padrão, deve ser utilizado o evento onNotify, que é disparado no exato momento em que qualquer um dos e-mails de processo é enviado. Nesse evento, podem ser feitas alterações, como por exemplo adicionar outros destinatários ao e-mail (além daqueles que estão participando do processo), modificar os valores dos parâmetros utilizados no template de e-mail, etc.

Abaixo se encontra um exemplo de como implementar esse evento:

Bloco de código
themeEclipse
languagejavascript
firstline1
linenumberstrue
function onNotify(subject, receivers, template, params) {
	if (template.match("TPLPROCESS_NEW_STATE_TO_MANAGER") != null) {
		receivers.add("[email protected]");
	}
}
Nota
titleAtenção

A partir da versão 1.3.3 do Fluig, recomenda-se fazer a validação do template utilizando template == "TPLPROCESS_NEW_STATE_TO_MANAGER" ao invés da função match(), evitando assim redundâncias na customização, pois o match() pode retornar true para mais de um template em casos como TPLNEW_TASK e TPLNEW_TASK_POOL_GROUP.

 

O evento onNotify está disponível na lista de eventos do processo. Portanto, ao selecionar esse evento na lista de eventos disponíveis, a assinatura da função acima já será preenchida automaticamente. Este evento disponibiliza os seguintes parâmetros:

ParâmetroDescrição
subjectÉ o assunto do e-mail. A alteração desta variável irá implicar que todos os usuários recebam o e-mail com o novo assunto configurado, inclusive aqueles que participam do processo. Exemplo de utilização: subject.add("ASSUNTO");
receiversLista de e-mails destinatários. Também é possível adicionar outros e-mails, de usuários que não participam do processo. Inclusive, podem ser adicionados e-mails de usuários que não estão cadastrados no Fluig, caso seja necessário notificar uma pessoa que não tenho acesso ao sistema.
templatePermite validar qual tipo de e-mail está sendo enviado (por exemplo, template de nova tarefa, notificação de gestor, etc). Com base nessa variável podemos distinguir quais e-mails queremos customizar. É recomendável que sempre seja verificado o código do template, para evitar que ocorram alterações em outros tipos de e-mail, que não necessitariam de customização.
paramsÉ um mapa de dados que permite alterar/incluir parâmetros para que sejam apresentados no e-mail. O nome dos parâmetros informados nesse mapa devem ser os mesmos que são utilizados dentro do arquivo de template.

No exemplo que foi apresentado acima está sendo validado se o template é o TPLPROCESS_NEW_STATE_TO_MANAGER (que corresponde a Notificação do Gestor), em caso positivo, um novo e-mail será adicionado na lista de destinatários. Ou seja, além do gestor do processo, outra pessoa será notificada, recebendo uma cópia do e-mail que o gestor irá receber. Como está sendo validado o código do template, os demais tipos de e-mail não serão afetados.

Os templates podem ser consultados dentro do diretório do volume, em: <VOLUME>\templates\tplmail. Se for necessário adicionar algum parâmetro no e-mail padrão, os templates podem ser editados diretamente nesse diretório.

Envio de E-mail Customizado

Caso seja necessário incluir um novo tipo de e-mail, além daqueles que são disponibilizados pelo produto, o Fluig permite que o usuário cadastre templates de e-mails customizados, através da opção Templates de Emails presente na aba Gerais do Painel de Controle.

Para incluir um novo Template, basta acionar a opção Adicionar no menu e preencher os dados solicitados. Nesta etapa também deve ser feito upload do arquivo de template.

Para adicionar parâmetros dentro de um arquivo de template (TXT ou HTML), deve-se utilizar a seguinte notação:

Sem Formato
${NOME_DO_PARAMETRO}

Neste caso, será utilizado o identificador "NOME_DO_PARAMETRO" durante a customização para atribuir um valor a este parâmetro. Os templates disponíveis no volume da empresa (<VOLUME>\templates\tplmail) podem ser consultados para mais exemplos de utilização de parâmetros.

Após cadastrar um novo template, é possível utilizá-lo para enviar e-mail a partir de qualquer um dos eventos do processo (exceto no onNotify – ver "Envio de E-mail Padrão"). Para efetuar um envio de e-mail, em base de um template customizado, é utilizado o objeto notifier, chamando a função "notify", conforme o código abaixo:

Bloco de código
themeEclipse
languagejavascript
firstline1
linenumberstrue
try{
	//Monta mapa com parâmetros do template 
	var parametros = new java.util.HashMap();
	parametros.put("NOME_USUARIO", "JOAO");
	parametros.put("CODIGO_USUARIO", "01");

	//Este parâmetro é obrigatório e representa o assunto do e-mail
	parametros.put("subject", "ASSUNTO");

	//Monta lista de destinatários
	var destinatarios = new java.util.ArrayList();
	destinatarios.add("CODIGO-DESTINATARIO");

	//Envia e-mail
	notifier.notify("MATRICULA-REMETENTE", "CODIGO-TEMPLATE", parametros, destinatarios, "text/html");

} catch(e){
	log.info(e);
}

Onde:

  • O primeiro parâmetro que a função notify recebe é o código/matrícula do usuário que irá enviar o e-mail (remetente).
  • O segundo parâmetro é o código do template que foi cadastrado no Fluig.
  • O terceiro parâmetro é um mapa de dados (java.util.HashMap) que contém os parâmetros que serão utilizados para preencher as variáveis do template.
    Por padrão, os parâmetros WDK_VirtualDir (diretório virtual) e WDK_AdviceUser (Nome do colaborador remetente) são adicionados ao mapa de parâmetros automaticamente e podem ser utilizados no template, sem que os valores sejam adicionados pela customização.
  • O quarto parâmetro representa a lista de usuários que irão receber o e-mail (java.util.ArrayList). Esta lista de usuários consiste em uma lista de códigos de usuários cadastrados no Fluig.
  • O quinto e último parâmetro especifica qual será o formato do e-mail enviado. Os valores aceitos são "text/html" e "text/plain".

 

Outra forma de executar o método de envio de email é informando o número da ficha, conforme exemplo:

Bloco de código
themeEclipse
languagejavascript
notifier.notify("MATRICULA-REMETENTE", NUMERO DO FORMULARIO, "CODIGO-TEMPLATE", parametros, destinatarios, "text/html");
Nota

Atenção: Obrigatoriamente o valor informado deve ser um formulário. Outros tipos de documentos não serão tratados e ocorrerá erro na execução do evento.

 

Ao executar este método, automaticamente os parâmetros abaixo serão adicionados na lista de parâmetros e podem ser utilizados no template:

...