Activities which can be retried are called idempotent activities. Examples are : assign activity, invoke activity etc. So if the BPEL process is recovered from the dehydration store , then these activities are retried again (idempotent activities are not stored in dehydration store if there is no dehydration activity like checkpoint() ) . Non idempotent activities are those which causes the BPEL process to dehydration and so there state is saved into dehydration store. If the BPEL process is recovered from the dehydration store, these activities are not retried . Examples are : wait activity, mid point receive activity, pick activity , checkpoint() etc.
So when you specify the idempotent property as "false" in the partner link of a BPEL process , this becomes non idempotent and cause the BPEL process for dehydration and so a commit occurs . This is another way of ending the current transaction of a BPEL process and start a new one.