No coding required.
At first I was confused. Some fields of the form are promoted to SharePoint library columns. However, when I try to use these columns from a reusable declarative workflow, they are not listed in the field list!
Then I realized there was a mistake. Reusable workflow means it's not bound to any list or library GUID, then, of course it cannot retrieve fields from any list.
To fix it is quite easy.
1. Publish the InfoPath form as a content type
2. Create a new form library and use the new content type to replace the default "form" one
3. Create the reusable workflow to that content type