Histórico da Página
...
Índice | ||||||
---|---|---|---|---|---|---|
|
Objetivo
O objetivo deste guia é orientar como construir um script com a finalidade de resolver os responsáveis por uma tarefa do processo workflow e/ou gestor de processo.
...
Informações | ||
---|---|---|
| ||
O código para o mecanismo deve seguir a especificação de padronização conforme o documento Nomenclatura e Estrutura de Formulários. |
Com isto, será criada a função básica que deve ser implementada:
Bloco de código | ||||
---|---|---|---|---|
| ||||
function resolve(process,colleague){ var userList = null; /* Para adicionar novos usuários, deve ser um ArrayList, conforme exemplos a seguir */ 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.
...
Informações | ||
---|---|---|
| ||
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
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
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 hAPI
Nota | ||
---|---|---|
| ||
A utilização da hAPI só está disponível a partir da Atualização 1.5.12 |
...
Os seguintes métodos são recomendados para utilização:
Método | Especificação |
---|---|
getCardValue("nomeCampo") | Permite acessar o valor de um campo do formulário do processo, onde:
|
| ||||||||||||||||
getCardData(numProcesso) | Retorna um Mapa com todos os campos e valores do formulário da solicitação.
|
|
|
Nota |
---|
A hAPI dispõe de outro métodos, que são abordados na documentação de Desenvolvimento de Workflow. Contudo apenas os métodos mencionados acima são recomendados para o desenvolvimento de Mecanismos de atribuição. |
Exibindo usuários conforme campo selecionado
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
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;
} |
Utilizando parâmetros
É disponibilizada a variável "WKIsTransfer" nos "WKParams" que retorna se a movimentação é uma transferência ou não. É possível bloquear o usuário de transferir uma atividade, através deste parâmetro.
Bloco de código | ||
---|---|---|
| ||
function beforeTaskCreate(colleagueId) { var isTransfer = getValue("WKIsTransfer"); if (isTransfer !== null) { if (JSON.parse(isTransfer)) { throw "Não é permitido transferir a atividade!"; } } } |
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 | ||||
---|---|---|---|---|
| ||||
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 é atribuída ao Grupo e uma pessoa deste deverá assumi-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
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
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; } |
Em que os parâmetros "process" e "colleague" se referem, respectivamente, aos objetos WorkflowProcess process e Colleague colleague.
WorkflowProcess | |
---|---|
Parâmetro | Tipo |
workflowProcessPK
| WorkflowProcessPK |
processId | String |
version | Integer |
requesterId | String |
active | Boolean |
attachmentSeqId | Integer |
sourceProcess | Integer |
sourceThreadSequence | Integer |
UUID | String |
Colleague | |
---|---|
Parâmetro | Tipo |
colleaguePK
| ColleaguePK |
userTenantId | long |
colleagueName | String |
String | |
login | String |
passwd | String |
active | Boolean |
adminUser | Boolean |
groupId | String |
O exemplo acima utilizou o webservice ECMColleagueService da própria plataforma e o Serviço foi criado utilizando a API Axis.