Árvore de páginas

Versões comparadas

Chave

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

...

O objetivo deste guia é orientar a customização do cabeçalho dos e-mails que são enviados pelo Fluig.

Pré-requisitos

  • Conhecimento da linguagem Javascript;
  • Conhecimento sobre a construção de fluxos de processo Workflow Fluig;
  • Conceitos sobre utilização de Datasets Fluig;
  • Entendimento sobre serviços da Web, Webservices, SOAP e XML;
  • Familiaridade com a ferramenta de desenvolvimento, TOTVS Developer Studio ou Eclipse;
  • Plugin Fluig Designer instalado na ferramenta de desenvolvimento.

Construindo um Mecanismo Personalizado

Em algumas situações é necessário utilizar lógicas mais complexas e específicas sobre quem será(ão) o(s) responsável(is) pela execução da atividade na solicitação de processo workflow. Para isto, existe o "Mecanismo de Atribuição Customizado".

Para iniciar sua construção, deve-se, em um projeto existente, clicar na pasta mechanisms e acessar o menu Arquivo > Novo > Outros... (acessível pelas teclas de atalho CTRL+N, ou clicar com o botão direito do mouse sobre a pasta, e seguir pelo menu suspenso), expandir o grupo (pasta) Fluig, selecionar a opção Mecanismo Customizado Fluig e clicar no botão Avançar. Na tela seguinte, indicar o Código (obrigatório e não pode ser alterado depois) no campo respectivo e sua Descrição (opcional) igualmente, e, finalmente, clicar no botão Concluir.

 

Informações
titleNota

O código para o mecanismo deve seguir a especificação de padronização conforme o documento Formulários Fluig.

 

Com isto, será criada a função básica que deve ser implementada: 

Bloco de código
languagejavascript
function resolve(process,colleague){

	var userList = null;

	return userList;

}

 

A função acima não retorna nenhum usuário. Sua execução não possibilitará escolher ninguém, por isto, esta função deve ser complementada.

A função deve retornar uma listagem, do tipo ArrayList com as matrículas dos usuários. A matrícula não é necessariamente igual ao login deste usuário. A matrícula corresponde ao valor existente no campo de mesmo nome no cadastro deste usuário e à coluna colleaguePK.colleagueId do Dataset colleague.

 

Nota
titleAtenção

Se ocorrer qualquer erro de sintaxe ou na execução do mecanismo, este será abortado e, consequentemente, não devolverá nenhum responsável para próxima tarefa/atividade do processo. É importante que toda a implementação passe por um tratamento de erros e proteção de execução. Uma boa prática é utilizar as cláusulas try catch.

 

 

Informações
titleNota

Nenhuma mensagem de erro pode ser emitida ao usuário durante sua execução, pois estes mecanismos podem ser invocados sem que haja a interação com o usuário, como por exemplo, as chamadas ao webservice ECMWorkflowEngineService por meio das integrações externas.

 

Retornando uma Listagem de Usuários

Um exemplo de retorno de uma relação fixa de usuários é apresentado a seguir:

 

Bloco de código
languagejavascript
function resolve(process,colleague){

	var userList = new java.util.ArrayList();

	userList.add('matricula_1');
	userList.add('matricula_2');
	userList.add('matricula_3');

	return userList;

}

 

Utilizando Datasets

É possível realizar a consulta a um Dataset da Plataforma (interno, formulários ou customizado), a fim, de elaborar o resultado final dos usuários que poderão ser listados para escolha da execução da próxima atividade. Este procedimento pode ser realizado conforme o exemplo a seguir:

Bloco de código
languagejavascript
function resolve(process,colleague){

	var userList = new java.util.ArrayList();

	//-- CONSULTA A UM DATASET, DE GRUPO DE USUARIOS FLUIG
	var dtsGroup = DatasetFactory.getDataset('group',null,null,null);
	for(var g = 0; g < dtsGroup.values.length; g++){
		userList.add( 'Pool:Group:'+dtsGroup.getValue(g.toString(),"groupPK.groupId") );
	}
	
	//-- CONSULTA A UM DATASET, DE PAPEIS DE USUARIOS FLUIG
	var dtsRole = DatasetFactory.getDataset('workflowRole',null,null,null);
	for each(papel in dtsRole.values){
		userList.add( 'Pool:Role:'+papel["workflowRolePK.roleId"] );
	}
	
	return userList;

}

 

No exemplo acima, para que o(s) Grupo(s) seja(m) listado(s) é necessária a inclusão do prefixo "Pool:Group:" concatenado ao código deste Grupo. Com isto, ao selecionar o grupo a atividade é atribuida ao Grupo e uma pessoa deste deverá assumí-la. Da mesma forma ocorre para o(s) Papel(éis) Workflow, porém o prefixo deve ser "Pool:Role:" mais o código do Papel.

 

Utilizando Serviços / Webservices

A construção de um mecanismo ainda possibilita a utilização de um Serviço de Integração Fluig, que poderá consumir um webservice do tipo SOAP ou do tipo Progress para obter os responsáveis, de acordo com uma regra de negócio provida pelo ERP, por exemplo. Este método pode seguir o modelo abaixo:

 

Bloco de código
languagejavascript
function resolve(process,colleague){

	var userList = new java.util.ArrayList();

	//-- CHAMADA A UM SERVICO DE INTEGRACAO FLUIG, COM UM WEBSERVICE ESPECIFICADO
	var biblioteca = ServiceManager.getService('ECMColleagueService').getBean();
	var endpoint = biblioteca.instantiate('com.totvs.technology.ecm.foundation.ws.ECMColleagueServiceServiceLocator');
	var webservice = endpoint.getColleagueServicePort();
	var usuariosDtoArray = webservice.getSummaryColleagues(1);
	for each(usuario in usuariosDtoArray.getItem()){
		userList.add( usuario.getColleagueId().toString() );
	}
	
	return userList;

}

 

Customizando o Cabeçalho de E-mails

Para clientes que já possuem o Fluig instalado e desejam personalizar o cabeçalho dos templates de e-mail, é necessário efetuar os seguintes passos:

  1. Baixar o arquivo "Templates de E-mail.zip";
  2. Descompactar o arquivo;
  3. Substituir o conteúdo da pasta <volume padrão>\templates\tplmail pelo conteúdo descompactado anteriormente;
  4. Para alterar a imagem do cabeçalho dos e-mails, substituir a imagem "head_background.gif" existente em: <volume padrão>\custom\assets por outra imagem com o mesmo nome e extensão.
Nota
titleAtenção!

Ressaltamos que as customizações realizadas nos templates serão perdidas.

É de suma importância realizar um backup da pasta <volume padrão>\templates\tplmail para que customizações existentes possam ser recuperadas posteriormente.

 O exemplo acima utilizou o webservice ECMColleagueService da própria plataforma e o Serviço foi criado utilizando a API Axis, padrão do TOTVS ECM 3.0.