Well, it actually doesn't use FORALL - that is a PL/SQL construct, but it is similar. My understanding - and I'm willing to be corrected on this - is that when you use the batch insert option, you are telling ADF BC not to do individual INSERT commands for each row to be inserted, but instead do a batch insert, passing an array of rows to be inserted. The cost is a little more memory on the middleware, but the advantage is that there is ONE exchange of data over the network to the database instead of many. It is faster and conserves network bandwidth.
There is a subtle difference between a POST operation and a COMMIT operation, that you may need to understand. POST is when the framework issues the DML commands to the database - INSERT, UPDATE, and DELETE. So of course, batch insert affects how the framework posts. COMMIT is directly related to when the framework issues a COMMIT command - telling the database to commit- i.e. save the changes permanently. Normally, both post and commit happen in succession. When your application executes commit, it starts a process where first there is a check for unposted changes, they are posted, then the AM commits.
That means to me that -
1. It really doesn't matter to your human task API whether the batch insert is used or not. All it cares about is that the claims needing approval are in the database.
2. afterCommit is probably the correct place to call the API.
3. When multiple claims are processed in bulk, you may need to define the difference between this and a single claim being processed. Is there a master entity to which the multiple claims being processed in a group belong as details?