Boa tarde, estou tendo problemas em iniciar um processo quando utilizo o dataset interno "document" para consulta.
Após perceber o problema, reduzi o código o minimo possivel até chegar no que está aqui em baixo.
Se por exemplo eu troco o "document" por "colleague", ele funciona normalmente, logo acredito que o problema seja na consulta do DS document mesmo, mas para o que eu preciso preciso consultar esse DS.
Alguém já passou por isso?
function startconditional11() {
var datasetContratos = DatasetFactory.getDataset("document",null,null,null);
if (datasetContratos.rowsCount > 0){
return true;
}
}
LOG DO SERVIDOR
2020-02-12 10:03:00,039 INFO [com.datasul.technology.webdesk.taskmanager.notifier.Notifier] (WebdeskScheduler_Worker-2) Executando condicional inicial do processo ContratosExpirando, 28
2020-02-12 10:03:00,043 INFO [com.datasul.technology.webdesk.taskmanager.notifier.Notifier] (WebdeskScheduler_Worker-2) Localizando evento com a chave: com.datasul.technology.webdesk.workflow.model.WorkflowProcessEventPK[codEmpresa=1, codDefProces=ContratosExpirando, numVers=28, codEvent=startconditional11]
2020-02-12 10:03:00,052 INFO [com.datasul.technology.webdesk.taskmanager.notifier.Notifier] (WebdeskScheduler_Worker-2) Executando evento conditionTask: startconditional11
2020-02-12 10:03:00,059 INFO [com.datasul.technology.webdesk.dataset.business.DatasetBO] (WebdeskScheduler_Worker-2) Executando Dataset com ID document do tipo Interno.
2020-02-12 10:03:00,060 INFO [com.datasul.technology.webdesk.dataset.business.DatasetBO] (WebdeskScheduler_Worker-2) Builder rodando sem o mobile
2020-02-12 10:03:00,061 INFO [com.datasul.technology.webdesk.dataset.DocumentDatasetBuilder] (WebdeskScheduler_Worker-2) Querying Database: SELECT obj FROM com.datasul.technology.webdesk.dm.model.Document obj
2020-02-12 10:03:02,625 INFO [com.fluig.monitoring.jschronos.JSChronos] (WebdeskScheduler_Worker-2) DatasetFactory.getDataset.document executou por 2 segundos
2020-02-12 10:03:02,625 INFO [com.fluig.monitoring.jschronos.JSChronos] (WebdeskScheduler_Worker-2) params: [null, null, null]
2020-02-12 10:03:02,625 INFO [com.datasul.technology.webdesk.taskmanager.notifier.Notifier] (WebdeskScheduler_Worker-2) Retorno da condição do processo ContratosExpirando, 28 foi 'false'. Aguardando próxima tentativa
Gabriel, consultou o log para saber o que o Fluig tem retornado ao tentar acessar do dataset "document"? Anexa o log, indicando a linha do erro. Isso nos ajuda a te ajudar. :)
Gabriel, obrigado por ter dado mais detalhes! Pois então, criei um processo no lab.fluig.com para reproduzir o problema mencionado, e tive o mesmo comportamento, ou seja, o erro mencionado.
Para resolver o problema, foi necessário enviar a constraint "userSecurityId" na consulta, passe um usuário administrador, a consulta ficou desta forma:
function startconditional11() {
var cstUser = DatasetFactory.createConstraint("userSecurityId", 'academy.aluno', 'academy.aluno', ConstraintType.MUST);
var datasetDocument = DatasetFactory.getDataset('document', null, new Array(cstUser), null);
log.info("datasetDocument " + datasetDocument);
log.info("datasetDocument " + datasetDocument.rowsCount);
if(datasetDocument.rowsCount > 0){
return true;
}else{
return false;
}
}
Depois disso, funcionou!
Atenção, verifique o mecanismo de atribuição da atividade que recebe a solicitação do início condicional. De qualquer forma, você pode importar o processo do lab.fluig.com, o código do processo é "condicional".
Essa constraint está documentada neste link:
https://tdn.totvs.com/pages/releaseview.action?pageId=412888219
Espero ter ajudado!
Editei a postagem principal e adicionei o Log, lembrando q ele me retorna como false mas o documents não tem como estar vazio, e o código está certo pois funciona com outros DS, será que tem ago relacionado a esses 2 segundos?
Tipo um timeout?
Gabriel, improvável um timeout de 2 segundos, estou replicando um processo para poder entender melhor, poderia explicar qual a necessidade de acessar o Document? Talvez exista outra forma de resolver caso não consiga acessar o document.
Pronto, Gabriel, resolvido. Vou editar o post explicando como resolver!
Alef, vou testar e dou um retorno depois, meu objetivo inicial é abrir um processo quando um documento entrar em período de expiração.
Tranquilo, Gabriel, com o ajuste feito, será possível fazer o que bem entender no document desde que mande a constraint que passei. Avisa se deu certo após o teste para ajudar outros que tenham a mesma dúvida!
obrigado Alef pela ajuda, consegui concluir o objetivo que era identificar um documento em período de vencimento e abrir um processo e encaminha-lo para um papél.
Parabéns, Gabriel! Disponha!
Alef, estou com o mesmo problema, mas da forma que você citou acima que o Gabriel disse que funcionou pra mim não deu certo. Sabe me dizer se de 2020 pra cá essa forma não funciona mais e foi criada uma outra?