cancel
Showing results for 
Search instead for 
Did you mean: 

How to signal ReceiveTask externally?

monika_b
Champ in-the-making
Champ in-the-making
Mine is standalone Java Application and my use case is: To have a receive task (waiting to be triggered from outside later) After it gets runtimeService.signal(waitExecutionId), it should proceed further else should persist this state indefinately.

I have selected 'receive task' for this and trying to signal this from another workflow whose service task has below code to trigger the receive task. In below code, I am fetching waiting receive task process instanceId via process variable that gets set through listener configured in receivetask.


public class JavaServiceSignal implements JavaDelegate
{   
   @Override
   public void execute(DelegateExecution execution) throws Exception {
      List<HistoricVariableInstance> hvi = historyService.createHistoricVariableInstanceQuery().variableValueEquals("rcvwait", "true").orderByProcessInstanceId().desc().list();
      String waitProcessInstanceIdString = hvi.get(0).getProcessInstanceId();
      Execution execution1 = runtimeService.createExecutionQuery().processInstanceId(waitProcessInstanceIdString).activityId("receivetask1").singleResult();
       runtimeService.signal(execution1.getId());      
      System.out.println("Wait Completed");      
   }
}


Basically In main method(standalone java application), I have first deployed a workflow with receivetask. Then again deployed another workflow that basically triggers the receive task in 1st workflow by above code through its servicetask.
Code in main method below:

repositoryService.createDeployment().addClasspathResource("diagrams/signalWaitReceiveProcess.bpmn20.xml").deploy();
      repositoryService.createDeployment().addClasspathResource("diagrams/waitReceiveProcess.bpmn20.xml").deploy();         
      ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("waitReceiveProcess");      
      System.out.println("Main: Started wait for Message Process instance id " + processInstance.getProcessInstanceId());      
      ProcessInstance pi2 = runtimeService.startProcessInstanceByKey("signalWaitReceiveProcess");



I am getting error as <b>org.activiti.engine.ActivitiObjectNotFoundException: no processes deployed with key 'receiveTask'</b>

Please help.. 


1 REPLY 1

frederikherema1
Star Contributor
Star Contributor
Seems like a valid listener. The exception occurs when you're starting the processes. Make sure the value you pass in in startProcessInstanceByKey(…) is the same as the id of the process-definition in the BPMN xml. That's the only way you can get a 'no processes deployed with key 'receiveTask'' error…