I just wanted to share some thoughts about possible implementations for workflow on d7.
Worklow states = a field
Basically I think workflow should work field-based, e.g. providing a workflow field, which can be attached to any entity. Thus the state transition settings would belong into the field settings, whereis the triggering part can be separated out and handled either by rules or trigger module.
For that the workflow module could introduce a simple "workflow state" field type, or just build upon the list of text fields and provide an option for those fields to enable state-transition-permissions? That could be easily integrated with a custom $field['settings']['allowed_values_function'], thus the major part would be still the UI...
Workflow states = Groups?
From looking at alfresco, the idea of using groups as workflow states came to my mind. Thus for each state one creates a group, e.g. "Editorial space", "Moderation", "Publicated",. When content is assigned to the group, it means the state is assigned. Therefore one can easily add members to a group, which should be able to control/edit content in this state and the group page can serve as starting point for the "editors" or "reviewers". With groups permission system, one could even easily implement state based permissions?
Then in alfresco one has to possible actions per group "Approve" and optionally "Reject". The actually applied state transition is invoked by rules, whereas this design even allows for content to be in multiple states at the same time.