Implementing reactive BDI agents with user-given constraints and objectives