This is a pretty standard pattern and is called the 'sequencer pattern'. We have been implementing some of these patterns, but we don't have this one yet. The 'Enterprise Integration Patterns' book has a pretty nice description of it. Your suggested solution makes sense to me. Maybe you can contribute the service (SequencerAction) back to us :).
Using service to force sequenced processing have one disadvantage, it makes bigger time lag from gateway input to execute action. :/. i will write and test it, but i think that faster sollution it will be to implement it on gateway "epr selector".