Integrating constraint satisfaction techniques and software agents.