A method, a program product, and a system for assigning resources to tasks in a rule based, resource constrained system. This is done by receiving as inputs tasks and task attributes; resources and resource attributes; and assignment rules. These inputs are used to searching a database of tasks, task attributes, and assignment rules thereof, to search a database of resources including resource attributes thereof, and to retrieve resources based upon the resource attributes. Resources are assigned to tasks based upon matches and scores of the resource attributes, the task attributes, and the assignment rules.