I am working in Tridion 2011SP1. The issue I'm trying to address relates to the fact that attaching Workflow Page Process Definitions has to be done via the Structure Group properties and these are not inherited down to nested SGs.
I thought of approaching this problem much like Alexander Klock from the perspective of updating structure groups as they're created/edited and cascading those changes, including adding the ability to disable the automatic inheritance, etc.
However, we have other functionality on the site that will walk up a hierarchical chain and use whatever the value of the first ancestor that has it defined. So, rather than needing to always manage/update structure groups' settings, you could just set it on the root SG and for the most part be done with it (other than adding a mechanism to ignore/override).
In my TOM.NET event system code, I am getting the current page's SG and if it doesn't have a Workflow Process defined I am walking up its ancestry until I came to an SG that has a Workflow ProcessDefinition.
I pretty much have this working, but I've been looking online and in the API documentation and I can't seem to figure out how to use TOM.NET to programmatically push a page into a particular workflow process...
Perhaps there just isn't a straightforward way and just need to figure out how to build out the WorkItem, ActivityInstance, ProcessInstance, etc. I was just hoping I was missing something simple like a constructor for an object that would just throw a page into a defined process.
UPDATE: Since it seems this is not possible in Tridion 2011 SP1, I went ahead and implemented something along the lines of Alexander Klock's blog post. I added a comment to his blog post which details the changes I made (it's currently awaiting moderator approval).