Hi,
Just one additional comment: I think you should raise the workflow events for the class which implements the IF_WORKFLOW interface. I am not sure if you can use the events for example as terminating events in workflow, if you don't have the interface implemented in the class. You could try, though...
Regards,
Karri