Pools and Lanes

I am trying to use pools and lanes.

  1. If you look at my model, I can get my flow working without any pool or lanes. I simple assign the user to the task and it works. So why would I need pools at all.

  2. When I call one pool from another pool, the second pool is not called. In other words the process is not started. So what does the arrow from the test pool to the second pool mean if it does not pass the call to the second pool ?

  3. Why I try to create a boundary message event in a sub process and end up calling it while the second process is waiting on a user task, the task does not get aborted.
    Why is this so ?

  1. Why I try to create a boundary message event in a sub process and end up calling it while the second process is waiting on a user task, the task does not get aborted.
    Why is this so ?

If you don’t need them - you don’t need to use them

The message flows have no execution semantics - they will not actually send a message you need to send a message programmatically.

Hard to say, could be lots of reasons - like… maybe the message wasn’t sent using the correct API.

When do I use the pools then ? I have two pools defined as shown above. If I just implement the message java class delegate to call the second pool, thats would work ?

In this model, I don’t jave a java class for my end message event. This is calling a start message event in another process that has the same name AskShiva.

I am using REST to triggert this…

How is this working then ?

Pools are mainly used for showing communication in non-executable models.
But if you wanted 2 related executable models in the same canvas - you could use pools.

I would say it’s very much not working - you’re sending a message call which triggers nothing.

So why do I have to define Message AskShiva in my Message End Event as shown in my previous diagram ? If I have a java class that is attached to the end event node that does the following ?

public class AskShivaDelegate implements JavaDelegate {

private final static Logger LOGGER = Logger.getLogger("LOAN-REQUESTS");

public void execute(DelegateExecution execution) throws Exception 
{
	execution.removeVariable("isOld");
	String message = execution.getVariables().values().toString();
	LOGGER.info("Processing request by 1: " + execution.getBusinessKey());
	LOGGER.info("AskShivaDelegate 1" + execution.getVariables());
	LOGGER.info("AskShivaDelegate 2: " + execution.getVariables().values());
	
	execution.getProcessEngineServices().getRuntimeService()
	.createMessageCorrelation("AskShiva")
	//.processInstanceBusinessKey(execution.getBusinessKey())
	.setVariable("question", message)
	.correlateAll();
}

}