I'm trying to apply some DDD concepts and i'm just wondering what makes more sense: for an entity to invoke its own methods, or for the user (actor) to do so?
For example, let's say we have an Appointment entity. A user is able to cancel the appointment only if s/he is the owner of that appointment (so we need to check that the user has the proper permissions before we can allow that action). We can do this one of two ways:
pseudocode
// method #1
User.Cancel(a *Appointment) result
// method #2
Appointment.Cancel(u *User) result
The bounded context is "Appointments", but it seems to make more sense for a user to invoke behaviours on the entity than the other way around. Which way is better and why?