I have an object A that has a relation with captcha obeject which inherits Image. when I fill the object A with wrong data, I raise validation feedback error then update the object A with a new object B (refresh without commit) to show the new captcha image , but the object A does not refreshed and thus does not show the new captcha image . at the same time if i use show message error instead of validation feedback error , It will work. what I notice that both of them(validation feedback , show message error) will not do rollback but the difference in case of the validation feedback error,the page will not show any change (refresh) in the page(like change image or any block message ) although during depugging it calls every step in the microflow and if there is any commit action it will be executed, while in case of showing message error the page events work well.
(if i read your message correctly)
Concerning validation errors, they are shown to the user in the client, but to do not cancel a commit, which is a bit fusy. Currently the only way to check if an commit failed is to check isNew(theobject) after the commit, (which will work only if the object dit not exist before). In general, i suggest throwing an exception by using a java action. This does trigger a rollback as expected. You can catch this error using custom error handling on the change activity.