Thank you guys for your replies, they were very useful.
I tried the shared interface solution proposed by Thomas and it works
great, so the main problem (code replication) is seemingly solved.
The fact that the object state and behavior are separated is still
something that could be improved but I can live without that. I hope
that it gets implemented in the upcoming releases.
Would you say it would be useful? Following the OO idea, I imagine
that some operations could be encapsulated so that the caller doesn't
have to know the specifics about the object. Like, for example, if I
say that I want to edit(), it returns a Dialog that depends on the
object type and workflow state (actually, that's my present use case)
And for simple CRUDs the current interface approach is perfect.
Best,
Juan