Obrigatoriedade de anexar arquivo

É possível obrigar que o usuário anexe um arquivo num processo workflow? Se possível, como faço isso

1 curtida

Eu 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;    
    }

1 curtida

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);

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:

http://tdn.totvs.com/display/fluig/hAPI

@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.

1 curtida