Movimentar solicitação somente após atividade de outro processo ser executada

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

:warning: 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.