I like the idea of keeping before & after hooks on every action in the Base class, but what do you think about decoupling the job tracking (last_job_id and open_items) into a new class? Or even isolating all job queue logic in a new component? Plain old queue stuff is a useful service to provide in a library, on its own!
Also, I don't understand how the before and after hooks would be overridden. Maybe there should be an example in the demo/ dir? I ask because I'm thinking about removing or refactoring these functions, if they aren't being used.