Árvore de páginas

Versões comparadas

Chave

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

...

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

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

	var userList = null; /* Para adicionar novos usuários, deve ser um ArrayList, conforme exemplos a seguir */

	return userList;

}

...

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

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

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

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

	return userList;

}

...

MétodoEspecificação
getCardValue("nomeCampo")

Permite acessar o valor de um campo do formulário do processo, onde:

  • nomeCampo: nome do campo do formulário.

 

Dica
titleDica

Campos do tipo checkbox retornam os valores on para marcado ou "" (vazio) para não marcado. Para trabalhar de uma maneira mais fácil, é possível transformá-los em booleanos.

Exemplo:

Bloco de código
languagejavascriptjs
themeEclipse
firstline1
linenumberstrue
var campoCheckbox = hAPI.getCardValue("campoCheckbox") == "on" ? true : false;
getCardData(numProcesso)

Retorna um Mapa com todos os campos e valores do formulário da solicitação.

  • numProcesso: número da solicitação de processo.

 

Informações

Para formulários pai e filho, os campos são identificados da seguinte forma: campo1___1, sendo campo1 o nome atribuído ao campo através da tag name do campo HTML + ___ (3 underlines) + número sequencial do registro.

 

Por exemplo, em um formulário de nota fiscal com os seguintes campos:

  • Formulário pai:
    • Número da Nota - numNota;
  • Formulário filho:
    • Código do item - codItem;
    • Descrição do item - desItem;
    • Quantidade do item - qtdItem;

O retorno do Mapa seria:

  • numNota = 99999
  • codItem___1 = 91
  • desItem___1 = Caneta
  • qtdItem___1 = 100
  • codItem___2 = 92
  • desItem___2 = Lápis
  • qtdItem___2 = 200
  • codItem___3 = 93
  • desItem___3 = Borracha
  • qtdItem___3 = 150

...

Um exemplo de utilização da hAPI, onde será retornado um usuário considerando o campo selecionado no formulário da solicitação:

Bloco de código
languagejs
linenumbersjavascripttrue
function resolve(process, colleague) {
	var userList = new java.util.ArrayList();
	var setor = hAPI.getCardValue("setor");
	//Criando constraints para retornar os usuário do grupo
	var cGrupo = DatasetFactory.createConstraint("colleagueGroupPK.groupId",
			setor, setor, ConstraintType.MUST);	
	var constraintsGroup = new Array(cGrupo);
	//Chamando dataset "colleagueGroup" para retornar os usuários
	var colleagues = DatasetFactory.getDataset("colleagueGroup", null,
			constraintsGroup, null);
	
	for (var i = 0; i < colleagues.values.length; i++) {
		//Adicionando usuário como opção de responsável
		userList.add(colleagues.getValue(i, "colleagueGroupPK.colleagueId"));
	}
	return userList;
}

...

É 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
languagejs
linenumbersjavascripttrue
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;

}

...

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
languagejs
linenumbersjavascripttrue
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;

}

...