Programming abstractions for integrating autonomous and reactive behaviors: an agent-oriented approach