I'm not 100% certain that I understand the question, but I'll take a stab ...
If you are trying to simulate a For Each loop ... i.e. for each record found by the FIND, do something ... it seems like using BATCHES OF 1 is the approach recommended in the forum because it does "work". But for the reasons mentioned above I don't want to use it. I even wonder if there is a bug, because having to use BATCHES OF 1 is not in alignment with the User Guide.
From page 73
Rule 1: FIND Account WHERE Account.Balance < 100
Rule 2: Account.State = 'CLOSED'
The first rule runs a query that finds all accounts with balances less than 100. The second rule changes the state of found accounts.
But this doesn't work correctly ... so my impression is that USING BATCHES OF 1 has become the defacto answer because visually it works. But it loses the ability to have a single transaction wrap the operation i.e. treat it as a batch.
The way I've been able to get around it ... is to split the process into two processes.
Process1
FIND BO Where ...
Process2
Process2
Update BO ...
It's a pain to have to do this, but it does work and I believe (maybe I should say ... hope) that the combined processes are executed as a single transaction.
Maybe support can chime in on this?