É possível obrigar a inclusão de um anexo em um determinada etapa do processo. Vamos supor que na Atividade 20 = Cotação, quero obrigar o usuário nessa etapa a anexar o documento da cotação realizada.
É possível obrigar a inclusão de um anexo em um determinada etapa do processo. Vamos supor que na Atividade 20 = Cotação, quero obrigar o usuário nessa etapa a anexar o documento da cotação realizada.
@Italo, segue um exemplo:
function beforeTaskSave(colleagueId, nextSequenceId, userList) {
var atv = getValue("WKNumState");
var nextAtv = getValue("WKNextState");
if (atv == 4) {
var anexos = hAPI.listAttachments();
var temAnexo = false;
if (anexos.size() > 0) {
temAnexo = true;
}
if (!temAnexo) {
throw "É preciso anexar o documento para continuar o processo!";
}
}
}
Nesta função o problema é se precisar obrigatoriamente adicionar anexos em 2 etapas distintas. Se adicionar na etapa 1 e precisar obrigar o usuário a adicionar na etapa 2 não vai funcionar direito porque com esta função já vai constar como 1 documento anexado.
— Rodrigo Oliveira 27 de Jul de 2017Segue o exemplo que eu uso pára validar se foi incluído um anexo numa determinada etapa do processo. Este método valida o momento em que foi anexado, então se o processo voltar a uma atividade que precise de um anexo e este já foi incluído anteriormente, não será pedido novamente.
function beforeTaskSave(colleagueId, nextSequenceId, userList) {
var numState = getValue("WKNumState");
var process = getValue("WKNumProces");
var anexado = false;
var message = "";
if(numState = 0 && hAPI.listAttachments().size() < 2) {
message += "<br/>- É necessario anexar os documentos;"
}
if (numState == 1){ //etapa do processo
if (temAnexo() == false) message += "<br/>- É necessario anexar os documentos;";
}
if (message != "") throw "<br/><strong>Os campos abaixo são de preencimento obrigatório:</strong><br/>" + message;
function temAnexo(){
var constraintProcessAttachment = DatasetFactory.createConstraint('processAttachmentPK.processInstanceId', process, process, ConstraintType.MUST);
var datasetProcessAttachment = DatasetFactory.getDataset('processAttachment', null, new Array(constraintProcessAttachment), null);
for(var i = 0; i < datasetProcessAttachment.rowsCount; i++) {
var constraintProcessHistory1 = DatasetFactory.createConstraint('processHistoryPK.movementSequence', datasetProcessAttachment.getValue(i, "originalMovementSequence"), datasetProcessAttachment.getValue(i, "originalMovementSequence"), ConstraintType.MUST);
var constraintProcessHistory2 = DatasetFactory.createConstraint('processHistoryPK.processInstanceId', process, process, ConstraintType.MUST);
var constraintProcessHistory3 = DatasetFactory.createConstraint('processHistoryPK.companyId', datasetProcessAttachment.getValue(i, "processAttachmentPK.companyId"), datasetProcessAttachment.getValue(i, "processAttachmentPK.companyId"), ConstraintType.MUST);
var constraintProcessHistory4 = DatasetFactory.createConstraint('stateSequence', numState, numState, ConstraintType.MUST);
var datasetProcessHistory = DatasetFactory.getDataset('processHistory', null, new Array(constraintProcessHistory1, constraintProcessHistory2, constraintProcessHistory3, constraintProcessHistory4), null);
for(var j = 0; j < datasetProcessHistory.rowsCount; j++) {
return true;
}
}
return false;
}
}
Só uma dúvida, ele obriga anexar lá na aba superior do GED ou tenho que incluir um campo de upload?
— FLUIG MAN 28 de Jun de 2017Isso, ele obriga anexar lá na aba superior.
— Gabriel Franco da Rocha Nascimento 28 de Jun de 2017Somente um comentário, na linha "if(numState = 0 && hAPI.listAttachments().size() < 2) {" tem que mudar para "if(numState == 0 && hAPI.listAttachments().size() < 2) {"
— Rodrigo Oliveira 27 de Jul de 2017Esse código, ele mostra o erro para fazer o upload, mas quando clica em OK, o processo continua o processo sem dar a chance de fazer o upload.
— Karina Pinheiro 04 de Sep de 2017Essa resposta é a mais correta, o certo seria usar o beforeStateEntry. Porém a lógica interna é melhor que a resposta aceita, pois, a resposta aceita não garante o comportamento exposto na pergunta.
— Rafael Vanat 24 de Oct de 2019Tentei fazer conforme o código abaixo; nas funções beforetasksave, beforetaskentry e validateform, porém sem sucesso. Segue o código;
function beforeTaskSave(colleagueId,nextSequenceId,userList){
var atv = getValue("3"); var nextAtv = getValue("4");
if (atv == 4) {
var anexos = hAPI.listAttachments(); var temAnexo = false;
if (anexos.size() > 0) { temAnexo = true; }
if (!temAnexo) { throw "É preciso anexar o documento para continuar o processo!"; }
}
if(form.getValue("descricao") == "") { throw "Descrição deve ser preenchida!"; }
}
@italo você encontrou a solução para verificar uma etapa específica?
— Pedro Costa 09 de Oct de 2017