Dependign how tight your model - codeintegration is, you could use the file format to recognise trigger events that cause animations.
(on the fly pseudo)
Like
   when (anyShipArrives() && anyShipArrivesParent()==this) 
                anim_1.start(60) 
                runway.flash_light(true,5,60)
i.e. when a ship arrives, do the following stuff
                  open doors (1) for 60 secs
                  flash lights on for 60 secs at 5 sec intervals
If you can set sub-objects as seprate child classes, you have a lot more potential to give them unique operations, or type - specific stuff. (better abstraction).
Of copurse, it's not really like pof format, so you'd maybe have to initialise models through a wrapper class, that defines type, stats, child subobjects and their animations, effects - taking some of that data from the relevant tbl.
If you store animations as keyframes, you could use parameters to  delay,  and then reverse the animation.
EDIT;
Actually, i just realised how self evident & vague most of that was.  :doh: 
but I'd definately suggest allowing percentage animation - i.e. rotating 50 degrees.