Tenho um processo que deve ficar "parado" em uma atividade sem usuário responsável até que seja executada uma validação de um outro Processo e quando esta validação for feita a Solicitação avança.
Já tentei utilizar o evento de Sinal, porém ele envia o sinal para todas as Solicitações e eu preciso que uma Solicitação em específico seja movimentada.
No momento estou tentando utilizar webservice para movimentar a Solicitação, porém eu precisaria de uma atividade sem responsável por ela.
Alguém sabe uma maneira de realizar o citado acima ou sabe uma maneira melhor de solucionar este problema?
@Fhaidy já fiz isso onde trabalho também.
Vou tentar te explicar como foi feito.
Imagina que em determinado ponto do processo você usa a atividade serviço para abrir uma solicitação através do webservice ou API.
Após isso, você usará o retorno da sua requisição para guardar o número da solicitação que foi iniciada.
Logo após a atividade de serviço, você coloca um intermediário condicional que irá ficar executando um script e verificando o status da sua solicitação que foi criada. Se a solicitação estiver finalizada, o intermediário irá retornar true e liberar a solicitação pai para continuar, caso contrário irá retornar false e ficar ali até que a solicitação filha seja finalizada.
Coloquei em anexo uma ideia de como seria o desenho do fluxo.
Espero ter ajudado.
Abç;
Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.
@Marcos Acabei tendo que alterar o meu diagrama e não estou mais com este problema. Porém, em futuros processos sua solução me ajudará muito.
Obg pela ajuda.
Bom dia Segue o código para voce fazer está movimentação.
Criei um dataset para que voce possa testar
var dataset = DatasetBuilder.newDataset();
dataset.addColumn("ok");
var periodicService = ServiceManager.getService('ECMWorkflowEngineService');
var serviceHelper = periodicService.getBean();
var serviceLocator = periodicService.instantiate('com.totvs.technology.ecm.workflow.ws.ECMWorkflowEngineServiceService');
var service = serviceLocator.getWorkflowEngineServicePort();
var objectFactory = periodicService.instantiate("com.totvs.technology.ecm.workflow.ws.ObjectFactory");
var appointment = periodicService.instantiate("com.totvs.technology.ecm.workflow.ws.ProcessTaskAppointmentDtoArray");
var attachments = periodicService.instantiate("com.totvs.technology.ecm.workflow.ws.ProcessAttachmentDtoArray");
var user = "admin";
var password = "admin";
var companyId = 1;
var processInstanceId = 237;
var choosedState = 27;
var colleaguesId = periodicService.instantiate("net.java.dev.jaxb.array.StringArray");
colleaguesId.getItem().addAll(["admin"]);
var comments = "movimentado pelo fluig";
var userId = "admin";
var completeTask = true;
var cardData = periodicService.instantiate("net.java.dev.jaxb.array.StringArrayArray");
var managerMode = false;
var threadSequence = 0;
var result = service.saveAndSendTask(user,password,companyId,processInstanceId,choosedState,colleaguesId,comments,userId,completeTask,attachments,cardData,appointment,managerMode,threadSequence)
log.info("@@@ result "+ result.getItem().get(0).getItem().get(0));
dataset.addRow(new Array(
result.getItem().get(1).getItem().get(1)
));
return dataset;
Thiago, por outros motivos, eu acabei tendo que alterar o meu diagrama e este desenvolvimento não foi mais necessário. Porém, em futuros processos sua solução me ajudará muito. Obg pela ajuda.