É possível obrigar que o usuário anexe um arquivo num processo workflow? Se possível, como faço isso
É possível obrigar que o usuário anexe um arquivo num processo workflow? Se possível, como faço isso
Acho que você consegue fazer isso mais fácil usando o listAttachments() da hAPI .
var attachments = hAPI.listAttachments();
if (attachments.size() == 0) { throw "Attachment not found!"; }
Mais detalhes em:
@Marcilio, segue um exemplo abaixo:
function beforeTaskSave(colleagueId, nextSequenceId, userList) {
var atv = getValue("WKNumState"); // atividade atual
var nextAtv = getValue("WKNextState"); // atividade destino
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!";
}
}
}
Vlw também precisava desse código. Obrigado.
— Douglas dos Santos Voltan 22 de Dec de 2017Eu utilizo o seguinte para validar se foi anexado algo numa atividade especifica.
function temAnexo(numState){
var process = getValue("WKNumProces");
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;
}
Roberto, seu codigo é excelente. Apenas adicionei mais uma constraint, para verificar se o movementSequence atual é o ativo, com isso, garanto que seja o anexo atual, quando há looping no fluxo. Segue código: var constraintProcessHistory5 = DatasetFactory.createConstraint('active', true, true, ConstraintType.MUST);
— Filipe 29 de Jun de 2017