Pour pouvoir être allouée à une activité quelconque, une ressource doit satisfaire toutes les contraintes de disponibilité qui lui sont attachées.
- Directive d'inclusion : #include C_AvailabilityConstraint.h
- Une ressource à état discret peut se voir attacher des TimeAvailabilityConstraints, des StateAvailabilityConstraints et des RecurrentAvailabilityTimetable.
- Une ressource à capacité peut se voir attacher, en plus, des CapacityAvailabilityConstraints.
Pour attacher une contrainte à une ressource, on ajoute une valeur au descripteur approprié de la ressource, parmi les suivants. La valeur est une instance de la classe mentionnée :
- descripteur TimeAvailabilityAttribute, à valeur TimeAvailabilityConstraint
- descripteur StateAvailabilityAttribute, à valeur StateAvailabilityConstraint
- descripteur AvailabilityTimetableAttribute, à valeur RecurrentAvailabilityTimetable
- descripteur CapacityAvailabilityAttribute, à valeur CapacityAvailabilityConstraint
Attention : bien noter que la satisfaction de ces contraintes est vérifiée avant la tentative d'allocation de la ressource à une activité. Si la ressource est disponible, et après la tentative d'allocation, d'autres types de contraintes sont testées : celles représentées par des instances de InconsistencyCondition et de ActivitiesResourcesInconsistentCommitment. Ces dernières portent sur le contexte de l'allocation de la ressource : l'allocation conjointe d'autres ressources et les propriétés de l'activité réquérante. Ces contraintes sont documentées dans une page dédiée.