This seems like it would work OK in an enviornment without a huge number of roles, i.e. Admin, Supervisor, User, but in a real world environment I don't see how this would help you in the GUI, or in applying different rules to different groups of users within the same method, if as in their example you used COM objects we would have over one million COM objects to statisfy our rules.
Marking a procedure as to who can call it is one thing, but lets say in the same procedure the validation rules a value for maximum discount a user can use, a telemarketer might be able to apply a 10% discount, his supervisor might be able to select 12.5% and his supervisor 15% and the head of sales can use any arbitrary value that is not greater than the cost of goods and this is just one rule for a method, given our average 30ish rules per method, AoP would get very cumbersome imo.
It's kind of like Model View Controller, on the surface it looks nice but once you get into what I consider a real application it creates so much overhead and complexity that you could of gotten it done in 1/10th the time for even the smallest change using any other method, I think the same thing about many of the MS Framework examples, so over engineered and reliant on the config file that any moron with a text editor can crash your application or so complex and bloated that features you don't need get in the way of what you are really trying to accomplish.
To use our business as an example, our database is run on 3 8-Way clustered SQL Servers with aprox. 8 terabytes of storage, supporting HR, Accounting, IT, IS, Telemarketing, Sales, Installation, Purchasing, Credit, Marketing, Warehouses and a department per product line, which comes out to about 2500ish employees. We support this with a total of 8 developers (4 on our in house app, 2 for telemarketing and 2 for accounting) and 2 report writers.
We have a big corporate style budget but we respond like a small hungry company, i.e. we don't live for meetings, scoping projects, and playing the cover your ass game, we get requests and bug fixes in on a daily basis and only large projects are actually scheduled, most users get near instant response on issues for their department and their ever changing rules and god do I mean ever changing =P that not only vary by department and user but by region of the country a given sale is happening in.
There is something to be said for the KISS method of programming =)
As in life no one solution solves any problem no matter how much you try to abstract it i.e. AoP, MVC, etc. Even my favorite tool LLBLGen isn't a tool that meets every need, I am constantly working on little hacks to create a new predicate or jump through a hoop to get something done, but in the end it's code generation to provide the DAL saves me time, but may not save someone else time.
John