| |
---|
getCardValue("nomeCampo") | Permite acessar o valor de um campo do formulário do processo, onde: - nomeCampo: nome do campo do formulário.
|
Dica |
---|
| Campos do tipo checkbox retornarem 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 |
---|
language | js |
---|
linenumbers | true |
---|
| var campoCheckbox = hAPI.getCardValue("campoCheckbox") == "on" ? true : false; |
|
|
setCardValue("nomeCampo", "valor") | Permite definir o valor de um campo do formulário do processo, onde: - nomeCampo: nome do campo do formulário;
- valor: valor a ser definido para o campo do formulário.
|
setAutomaticDecision(numAtiv, listaColab, "obs") | |
A propriedade automaticTasks esta depreciada O método setAutomaticDecision encontra-se depreciado, não havendo mais suporte a partir da atualização 1.5.9 |
|
di É recomendada numEmpresa: número da empresa;numProcesso: número da solicitação;Permite definir o fluxo de saída de uma atividade de forma automática, onde: Bloco de código |
---|
language | js |
---|
linenumbers | true |
---|
| function beforeStateEntry(sequenceId){
if(sequenceId == 4){
var users = new java.util.ArrayList();
//Caso a próxima atividade seja uma automática utilizar users.add("System:Auto");
users.add("adm");
hAPI.setAutomaticDecision(7, users, "Decisao tomada automaticamente pelo Fluig");
}
} |
|
getActiveStates() | Retorna uma lista das atividades ativas do processo. |
getActualThread(numEmpresa, numProcesso, numAtiv) |
Retorna a thread da atividade que está ativa, lembrando que em caso de atividades paralelas, retorna 0, 1, 2 e assim sucessivamente.
Aviso |
---|
| O método getActualThread encontra-se depreciado, não havendo mais suporte a partir da atualização 1.8.0-221122 do Fluig. Recomenda-se a utilização dos parâmetros WKCurrentMovto e WKActualThread descritos na documentação Parâmetros. |
Retorna a thread da atividade que está ativa, lembrando que em caso de atividades paralelas, retorna 0, 1, 2 e assim sucessivamente. - numEmpresa: número da empresa;
- numProcesso: número da solicitação;
|
- numAtiv: número da atividade.
Exemplo de uso para esta função: |
123
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function
afterTaskCreate(colleagueId) |
|
{
var
nrProxAtividade = {
var nrProxAtividade = getValue("WKNextState"); |
|
if
paralelas
var
data =
new
paralelas
var data = new Date(); |
|
var
numEmpresa =
var numEmpresa = getValue("WKCompany"); |
|
//seta o dia, mês (Janeiro é 0) e |
|
ano
var
numProcesso =
// Recupera o numero da solicitação
var numProcesso = getValue("WKNumProces"); |
|
// Seta o prazo para as 14:00
hAPI.setDueDate(numProcesso, hAPI.getActualThread(numEmpresa, numProcesso, nrProxAtividade), colleagueId, data, 50400); |
|
}
|
setDueDate(numProcesso, numThread, "userId", dataConclusao, tempoSeg) | Permite alterar o prazo de conclusão para uma determinada atividade do processo, onde: |
javascriptjs | theme | Eclipse |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| function afterTaskCreate(colleagueId) {
var atividade = getValue('WKCurrentState');
// Atividade de sequência 5 é a da tarefa criada e que vou alterar o prazo de conclusão
if (atividade == 5) {
// Recuperando a data informada no campo do formulário
var prazoFormulario = hAPI.getCardValue('prazoConclusao');
if (prazoFormulario != undefined && prazoFormulario != '') {
var numeroDaSolicitacao = getValue('WKNumProces');
var threadDaSolicitacao = 0; // Normalmente 0, quando não for atividade paralela
var responsavelPelaTarefa = colleagueId;
/* Nesse caso o formato da data salva pelo formulário no exemplo é DD/MM/AAAA, mas isso pode variar de acordo com a formatação utilizada,
mudando assim as posições das informações dentro do array */
/* Extrai os dados da data do formulário para um array, para posteriormente transformar em data do Javascript */
var arrayPrazoConclusao = prazoFormulario.split("/");
var dia = arrayPrazoConclusao[0]; // Posição 0 do array é o dia
var mes = arrayPrazoConclusao[1] - 1; // Posição 1 do array é o mês (Subtraímos 1 porque na data do Javascript o mês vai de 0 a 11)
var ano = arrayPrazoConclusao[2]; // Posição 2 do array é o ano
var horaDoPrazo = (24*60*60) - 1; /* A hora é em milisegundos, e esse cálculo tem resultado de 23:59:59, ou seja,
o prazo de conclusão vai ser até o último segundo do dia informado no formulário */
// Cria a data no Javascript
var dataDoPrazo = new Date();
dataDoPrazo.setDate(dia);
dataDoPrazo.setMonth(mes);
dataDoPrazo.setFullYear(ano);
// Altera o prazo de conclusão
hAPI.setDueDate(numeroDaSolicitacao, threadDaSolicitacao, responsavelPelaTarefa, dataDoPrazo, horaDoPrazo);
}
}
} |
|
|
transferTasktransferUsersprocessId, ativDest, listaColab, "obs" |
, int numThread, completarTarefa, valoresForm, modoGestor) |
Transfere uma tarefa de um usuário para outro(s) usuário(s).
Inicia uma solicitação workflow, onde: - processId: código do processo;
- ativDest: código da atividade de destino;
- listaColab: lista
|
transferUsers: lista - (do tipo String) de usuários;
- obs:
|
a numThread: sequência da thread, em caso de atividades paralelas.transferTask(transferUsers, "obs") | Transfere uma tarefa de um usuário para outro(s) usuário(s). Este método não pode ser usado em processos com atividades paralelas: - transferUsers: lista (do tipo String) de usuários;
- obs: a observação.
|
startProcess(processId, ativDest, listaColab, "obs", completarTarefa, valoresForm, modoGestor) | Inicia uma solicitação workflow, onde: - processId: código do processo;
- ativDest: código da atividade de destino;
- listaColab: lista (do tipo String) de usuários;
- obs: texto da observação;
- completarTarefa: indica se deve completar a tarefa (true) ou apenas salvar (false);
- valoresForm: um Mapa com os valores do formulário do processo;
- modoGestor: indica que o usuário iniciará a solicitação como gestor (true) ou que o usuário iniciará a solicitação apenas como solicitante (false).
Retorna um mapa com informações da solicitação criada. Entre elas, o iProcess que é o número da solicitação criada. |
setColleagueReplacement(userId) | Seta um usuário substituto, onde: - userId: código do usuário substituto.
|
setTaskComments("userId", numProcesso, numThread, "obs") | Define uma observação para uma determinada tarefa do processo, onde:
userId: usuário responsável pela tarefa;numProcesso: número da solicitação de processo;numThread: é o número da thread (normalmente 0, quando não se utiliza atividades paralelas);obs: a observação. Nota |
---|
|
É recomendado utilizar em eventos do tipo 'after', pois o comentário será criado no histórico da solicitação, então é necessário que já exista uma movimentação do processo para atribuir este comentário. |
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ário 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 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:
- completarTarefa: indica se deve completar a tarefa (true) ou apenas salvar (false);
- valoresForm: um Mapa com os valores do formulário do processo;
- modoGestor: indica que o usuário iniciará a solicitação como gestor (true) ou que o usuário iniciará a solicitação apenas como solicitante (false).
Retorna um mapa com informações da solicitação criada. Entre elas, o iProcess que é o número da solicitação criada.
Exemplo de inicialização de uma solicitação pelo método hAPI.startProcess enviando a atividade para um papel: Bloco de código |
---|
language | js |
---|
linenumbers | true |
---|
| function beforeStateEntry(sequenceId){
if (sequenceId == 5) {
//A tarefa destino tem o mecanismo de atribuição para um papel, cujo o código é papelUser
var users = new java.util.ArrayList();
users.add("Pool:Role:papelUser");
var formData = new java.util.HashMap();
formData.put("Nome_do_Campo1", "Valor do Campo 1");
formData.put("Nome_do_Campo2", "Valor do Campo 2");
hAPI.startProcess("pool", 4, users, "Solicitação inicializada pela função hAPI", true, formData, false);
}
} |
|
setColleagueReplacement(userId) | Seta um usuário substituto, onde: - userId: código do usuário substituto.
|
setTaskComments("userId", numProcesso, numThread, "obs") | Define uma observação para uma determinada tarefa do processo, onde: - userId: usuário responsável pela tarefa;
- numProcesso: número da solicitação de processo;
- numThread: é o número da thread (normalmente 0, quando não se utiliza atividades paralelas);
- obs: a observação.
Nota |
---|
| É recomendado utilizar em eventos do tipo 'after', pois o comentário será criado no histórico da solicitação, então é necessário que já exista uma movimentação do processo para atribuir este comentário. |
|
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ário 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 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 =
|
|
numNota = 99999codItem___1 = 91desItem___1 = CanetaqtdItem___1 = 100codItem___2 = 92desItem___2 = LápisqtdItem___2 = - 200
- codItem___3 = 93
- desItem___3 = Borracha
- qtdItem___3 = 150
|
|
getAdvancedProperty("propriedade") | Retorna o valor da propriedade avançada de um processo. - propriedade: nome da propriedade avançada.
|
calculateDeadLineHours(data, segundos, prazo, periodId) |
Calcula um prazo a
Aviso |
---|
| Este método retorna o horário com a formatação BRT, sendo necessário algumas adaptações em algumas funções do javascript, como exemplo: getFullYear(). |
| Calcula um prazo a partir de uma data com base no expediente e feriados cadastrados no produto passando o prazo em horas: - data: data inicial (tipo Date);
- segundos: quantidade de segundos após a meia noite;
- prazo: prazo que será aplicado em horas (tipo int);
- periodId: código de expediente.
Retorno: Array de Objeto, onde a primeira posição do array é a data e a segunda a hora. Exemplo: |
1234
5
6
7
8
9
10
11
12
13
14
function
afterTaskCreate(colleagueId) |
|
{
var
data =
new
/ prazo
var
obj = prazo
var obj = hAPI.calculateDeadLineHours(data, 50000, 2, |
|
var
dt =
var
segundos =
solicitação
var
processo = solicitação
var processo = getValue("WKNumProces"); |
|
processo
processo
hAPI.setDueDate(processo,0,colleagueId, dt, segundos); |
|
|
calculateDeadLineTime(data, segundos, prazo, periodId) | Calcula um prazo a partir de uma data com base no expediente e feriados cadastrados no produto passando o prazo em minutos: - data: data inicial (tipo Date);
- segundos: quantidade de segundos após a meia noite;
- prazo: prazo que será aplicado em minutos (tipo int);
- periodId: código de expediente.
Retorno: Array de Objeto, onde a primeira posição do array é a data e a segunda a hora. Exemplo: |
123
4
5
6
7
8
9
10
11
12
13
function
afterTaskCreate(colleagueId) |
|
{
var
data =
new
prazo
var
obj = prazo
var obj = hAPI.calculateDeadLineTime(data, 50000, 120, |
|
var
dt =
var
segundos =
solicitação
var
processo = solicitação
var processo = getValue("WKNumProces"); |
|
processo
processo
hAPI.setDueDate(processo,0,colleagueId, dt, segundos); |
|
|
getUserTaskLink(numAtiv) | Permite buscar o link para movimentação de uma determinada atividade, e utilizá-lo para enviar um e-mail com template personalizado, por exemplo. - numAtiv: número da atividade
Retorno: link para movimentação da solicitação. |
Nota |
---|
| Este método não retorna link para atividades que ainda não foram criadas, ou seja, não pode ser utilizado em eventos como afterTaskComplete(colleagueId,nextSequenceId,userList) para obter o link da atividade com "nextSequenceId". |
|
123
4
5
6
7
8
9
10
11
12
13
function
afterTaskCreate(colleagueId) |
|
{
var
sequenceId = {
var sequenceId = getValue("WKCurrentState"); |
|
if
{
var
destinatarios =
new
{
var destinatarios = new java.util.ArrayList(); |
|
destinatarios.add(colleagueId); |
|
var
parametros =
new
var parametros = new java.util.HashMap(); |
|
parametros.put("WDK_CompanyId", getValue("WKCompany")); |
|
parametros.put("WDK_TaskLink", hAPI.getUserTaskLink(sequenceId)); |
|
notifier.notify(getValue("WKUser"), |
|
"tplCustomizado", parametros, destinatarios, |
|
}
|
createAdHocTasks(workflowProcessInstanceId, sequenceId, assunto, detalhamento, listatvidadesAhoc) | Permite a criação de atividades adhoc dentro dos eventos do fluig |
123
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function
beforeStateEntry(sequenceId){ |
|
tarefas
var
adHocTasks =
new
tarefas
var adHocTasks = new Array(); |
|
// variavel com o código da solicitação do processo. |
|
var
process =
var process = getValue("WKNumProces"); |
|
tarefa
var
task = { tarefa
var task = { name:"nome da tarefas", responsible:"adm", dueDate:"10/10/2014"}; |
|
//adicionando a tarefa criada para a lista de |
|
tarefas
tarefas
adHocTasks.push(task); |
|
// process = numero da solicitacao
// sequenceId = codigo processstate da atividade que tem o processo ad-hoc
// meeting = nome do assunto em questao
// detalhe = detalhamento do assunto
// adHocTasks lista te tarefas
hAPI.createAdHocTasks(process, sequenceId, |
|
"Detalhamento do assunto ", adHocTasks); |
|
|
listAttachments() | Retorna a lista de anexos do processo. DocumentDto[ ] Veja aqui os paramêtros do objeto DocumentDto |
. e aqui os métodos para acesso as variáveis. |
1234
5
6
7
8
9
10
11
12
13
14
15
function
| function beforeTaskSave(colleagueId, nextSequenceId, userList) |
|
{
var
attachments = {
var attachments = hAPI.listAttachments(); |
|
var
hasAttachment =
false
;
for
(
var
i = 0; i <
var hasAttachment = false;
for (var i = 0; i < attachments.size(); i++) |
|
{
var
attachment = {
var attachment = attachments.get(i); |
|
if
if (attachment.getDocumentDescription() == |
|
{
hasAttachment =
true
;
}
}
if
{
hasAttachment = true;
}
}
if (!hasAttachment) |
|
{
throw
{
throw "Attachment not found!"; |
|
}
|
publishWorkflowAttachment(documento) | Permite publicar anexos workflow da solicitação no GED do fluig, onde: |
Exemplo: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | function beforeStateEntry(sequenceId){
if (sequenceId == 4) {
var calendar = java.util.Calendar.getInstance().getTime();
var docs = hAPI.listAttachments();
for ( var i = 0; i < docs.size(); i++) {
var doc = docs.get(i);
if (doc.getDocumentType() != "7" ) {
continue ;
}
doc.setParentDocumentId(27);
doc.setVersionDescription( "Processo: " + getValue( "WKNumProces" ));
doc.setExpires( false );
doc.setCreateDate(calendar);
doc.setInheritSecurity( true );
doc.setTopicId(1);
doc.setUserNotify( false );
doc.setValidationStartDate(calendar);
doc.setVersionOption( "0" );
doc.setUpdateIsoProperties( true );
hAPI.publishWorkflowAttachment(doc);
}
}
}
|
attachDocument(documentId) | Permite anexar documentos do GED a solicitação workflow, onde:
documentId: código do documento a ser anexado a solicitação.Exemplo:
1 2 3 4 5 6 7 8 9 10 | function beforeStateEntry(sequenceId) {
var docList = [44, 46, 135];
if (sequenceId == 2) {
for ( var i = 0; i < docList.length; i++) {
var docId = docList[i];
hAPI.attachDocument(docId);
};
}
}
|
getAvailableStatesDetail(companyId, userId, processId, processInstanceId, threadSequence) | Retorna detalhes das atividades disponíveis para seleção. Parâmetros: - companyId: código da empresa;
- userId: id do usuário;
- processId: código do processo;
- processInstanceId: número da solicitação;
- threadSequence: indica se existe atividade paralela no processo. Se não existir o valor é 0 (zero), caso exista, este valor pode ser de 1 a infinito, dependendo da quantidade de atividade paralelas existentes no processo.
Retorno: ProcessStateDto[]. |
getChildrenInstances(processInstanceId) | Retorna uma lista com os números das solicitações filhas, onde: - processInstanceId: número da solicitação pai.
Exemplo: function beforeStateEntry(sequenceId){
if (sequenceId == 5) {
var numProcess = getValue( "WKNumProces" );
var childrenProcess = hAPI.getChildrenInstances(numProcess);
for ( var i = 0; i < childrenProcess.size(); i++) {
var childCardData = hAPI.getCardData(childrenProcess.get(i));
var obs = childCardData.get( "obs" );
hAPI.setCardValue( "obs" , obs );
}
}
}
|
|
getParentInstance(processInstanceId) | Retorna o número da solicitação pai, onde: - processInstanceId: número da solicitação filha.
Exemplo: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function beforeStateEntry(sequenceId) {
if (sequenceId == 2) {
var numProcess = getValue( "WKNumProces" );
var parentProcess = hAPI.getParentInstance(numProcess);
var parentCardData = hAPI.getCardData(parentProcess);
var cnpj = parentCardData.get( "cnpj" );
hAPI.setCardValue( "cnpj" , cnpj);
}
}
|
|
addCardChild(tableName, cardData) | Adiciona um filho no formulário pai e filho do processo, onde: - tableName: nome da tabela filha onde será criado o filho;
- cardData: mapa com os campos do filho e seus valores.
Exemplo: 1 2 3 4 5 6 7 8 9 | function beforeStateEntry(sequenceId) {
if (sequenceId == 4) {
var childData = new java.util.HashMap();
childData.put( "matricula" , "0041" );
childData.put( "nome" , "João Silva" );
childData.put( "cpf" , "44455889987" );
hAPI.addCardChild( "funcionarios" , childData);
}
}
|
|
...
Nos eventos existe a possibilidade de integração com serviços de dados. Tais serviços podem ser WebServices, AppServer Progress® e Dataset.
...
Abaixo um exemplo de como executar o WebService de Colleague para criar um usuário no fluig após executar uma tarefa:
Abaixo um outro exemplo utilizando o WebService ECMCardService para alterar o valor do campo de um registro de formulário após a entrada em uma nova atividade: