ANYONE=1, MAX=2, ALL=3, DISJ=4, SETS=5
Pour chaque type de ressources à allouer (objets opéré, ressource propres d'opération, opérateur), le moteur développe une "spécification de ressources" (attachée à l'activité ou à l'opération selon le cas). Dans chaque cas, ce développement génère une liste "à plat" d'instances de ressources d'une classe donnée de symbole id. Une seconde phase consiste à choisir dans cette liste de ressources, appelée ici L, de taille s, une ou plusieurs manières de les allouer. C'est le "mode de sélection", sujet de la présente énumération, qui détermine le résultat.
Le mode est la valeur du descripteur SelectorFctId de la classe de spécification (classe OperatedObjectSpecification ou OperationResourceSpecification ou enfin PerformerSpecification). Cette valeur est fixée par le développeur dans le constructeur de la classe, ou bien par l'utilisateur du simulateur dans un des fichiers d'entrée.
Avec le mode ANYONE, complété par un nombre entier n, on alloue les n premières ressources de L trouvées disponibles.
Avec le mode MAX, on alloue toutes les ressources de L trouvées disponibles.
Avec le mode ALL, on alloue toutes les ressources de L, ou bien on conclue à l'échec de l'allocation si une d'entre elles est trouvée indisponible.
Avec le mode DISJ, on génère une liste de s listes, chacune ne comprenant qu'une ressource disponible de L, différente à chaque fois.
Avec le mode SETS, complété par un nombre entier n, on génère une liste de p listes, chacune de n ressources disponibles. p est le nombre de manières d'extraire n ressources des k sous-classes terminales de celle de symbole id.
Se reporter au document "Ontologie des systèmes pilotés", pour une présentation complète et illustrée d'exemples.
Pour fixer ces valeurs dans le code de la base de connaissances, on écrira, typiquement dans le constructeur d'une spécification :
OperatedObjectSpecification* pOOSpec;
pOOSpec->SetIntVarValue(ENTITY_SPEC_REFERENCE_CLASS_ID, MY_TOOL); pOOSpec->SetIntConstValue(SELECTOR_FCT_ID, ANYONE);
pOOSpec->SetIntConstValue(SELECTOR_FCT_ARG, 2);
Pour fixer cette valeur dans un fichier de données externe, on écrira :
+ I operatedObjectSpecification pOOSpec ... entitySpecReferenceClassId = 267; // MY_TOOL selectorFctId = 1; // ANYONE selectorFctArg = 2; ... ;