HI Vamsi,
if I understood correctly, you need to skip your next task(user,service, etc) in current instance of ProcessDefinition.
There are two ways:
-
Complete the next execution task using the Camunda REST endpoint for task completion. Brief explanation provided here:
Example of completing a User Task with REST API -
Another way is providing following classes in Camunda Project:
SkipExecutionListener and SkipTaskListener implemented ExecutionListener and TaskListener respectively.
Code Snippet:
public class SkipTaskListener implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
TaskService taskService = delegateTask.getExecution().getProcessEngineServices()
.getTaskService();
try {
ExecutionEntity executionEntity = (ExecutionEntity) delegateTask.getExecution();
String taskId = executionEntity.getTasks().get(0).getId();
taskService.complete(taskId);
} catch (AuthorizationException e) {
throw e;
} catch (NullPointerException ne){
throw ne;
}
}
}
//Process Modification Approach
public class SkipExecutionListener implements ExecutionListener {
@Override
public void notify(DelegateExecution execution) throws Exception {
RuntimeService runtimeService = execution.getProcessEngineServices().getRuntimeService();
TaskService taskService = execution.getProcessEngineServices()
.getTaskService();
try{
String outTransitionId = null;
PvmActivity activity = ((ActivityExecution)execution).getActivity();
List<PvmTransition> outgoingTransitions = (activity.getOutgoingTransitions());
if(null!= outgoingTransitions && !outgoingTransitions.isEmpty()){
ListIterator<E> itr = (ListIterator<E>) outgoingTransitions.listIterator();
while(itr.hasNext()){
TransitionImpl outTransition = (TransitionImpl) itr.next();
//TODO check outTransition for default flow , then condition of forward execution
if(null != outTransition){
outTransitionId = outTransition.getId();
break;
}
}
}
try {
runtimeService.createProcessInstanceModification(execution.getProcessInstanceId())
.startTransition(outTransitionId)
.cancelActivityInstance(execution.getActivityInstanceId())
.execute();
} catch (AuthorizationException e) {
throw e;
}
} catch (Exception e){
throw e;
}
}
}