I found a workaround by basically refering to s2 twice like so:
Code:
split s1/s2 next=s4
flow s1
flow s2
split s3/s2 next=s5
flow s1
flow s2
and using a simple trick in s2's tasklet:
Code:
public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) throws Exception {
...
synchronized (this) {
if (this.executed) {
// ignore
} else {
// process
this.executed = true;
}
}
...
this way only one of the references to s2 really does the processing wanted, the other simply waits for the lock to become available again and exit
However, it makes my job configuration file much bigger (i have a much more complicated workflow in reality) and the following issue prevents me from externalizing as much as i'd like to: http://forum.springsource.org/showth...203#post378203
again, any help would be greatly appreciated 
Thanks!