createNewBpelExecution is OK for me.
Concerning the return type, I think returning a bpelExecution could be ambiguous. Imo I think we could think that we have to call proceed... This is linked to the "automlatic" launch of an execution when calling the constructor...
In another hand, what could be the use of the created bpelExecution in the correlator ? (if we don't have to call proceed...)
The current algorithm is not complete...
Here is the expected behaviour of the receive.execute method :
execute (Execution execution) Message m = null; if there is a message associated to execution (or one of its parent) then if this message is associated to the current startActivity then consume it (call receive method) endif // else waitstate : it means the process has another startActivity on which execution was started else m = correlator.getIncomingMessage; if (m!=null) then consume m (call receive method) endif //else : waitstate : no message is alredy arrived in the correlator endif