To be done.
module DiningPhilosophers { interface IFork { void pick_up () raises (ForkNotAvailable); void release (); }; component AFork { provides IFork fork; }; eventtype PhilosopherStatus { public string name; public PhilosopherState state; public boolean has_left_fork; public boolean has_right_fork; }; component APhilosopher { attribute string name; // Receptacles for forks uses Fork left; uses Fork right; // Source for status publishes PhilosopherStatus status; }; component AnObserver { // Sink for status consumes PhilosopherStatus status; }; ... };