Hi Younes,
If you want to achieve repeat, you could use decision to emulate.
<state name='start state'>
<transition to='decision repeat'/>
</state>
<decision name='decisoin repeat' expr='#{repeat}>
<transition name='repeat' to='start state'/>
<transition name='continue' to='continue'/>
</decision>
<state name='continue'/>
And I think you could use sub-process or group to emulate scope.
There is no activity equals with Pick/Recieve for BPEL. You could put a state to let process instance turn into wait state, then if there is some message come in, you could invoke executionService.signalExecutionById() to let process instance continue.