On rappelle ici (voir page 'La classe de base des processus') qu'un processus opère un changement d'état sur le système simulé, et qu'il faut spécifier ce qu'on va appeler "l'entité cible" du processus. Cette entité est typiquement la seule que va toucher le processus, mais elle peut aussi n'être qu'une entité touchée parmi d'autres, ou bien encore n'être qu'un point de repère dans la structure du système à partir duquel le code des fonctions va rechercher la ou les entités touchées.
int MyProcessClass_Fct1(ProcessMethod* pM) { Process* pP = pM->DescribedDiscreteProcess(); ... return -1; }
Pour un processus continu la précondition ne joue que sur l'initialisation, c'est-à-dire que la précondition n'est plus testée au cours de vie du processus. Si la fonction renvoie un entier positif (ou si elle est absente), le processus est initialisé. Si elle renvoie 0, un nouvel événement d'initialisation est programmé pour un instant simulé futur (l'horloge courante augmentée de la valeur renvoyée par la méthode PostponementDelay). Si la fonction f renvoie un entier négatif, un événement d'arrêt du processus est programmé pour l'instant courant.
Pour un processus ponctuel, si la fonction f de précondition renvoie un entier positif (ou si elle est absente), le processus est exécuté. Si elle renvoie 0, un nouvel événement est créé par RawCopy() (c'est-à-dire sans duplication des méthodes). Il est alors programmé pour un instant simulé futur (l'horloge courante augmentée de la valeur renvoyée par la méthode PostponementDelay), avec comme seule action l'exécution de ce même processus. Si la fonction renvoie un entier négatif, le processus n'est pas exécuté et aucune nouvelle exécution n'est programmée (abandon).
Dans les deux cas, si une méthode d'autogénération est affectée à l'événement concerné, elle ne sera invoquée que lorsque la précondition du processus deviendra satisfaite, c'est-à-dire lorsque les conséquences de l'événement auront effectivement pu être mises en uvre.
int MyProcessClass_Fct2(ProcessMethod* pM) { Process* pP = pM->DescribedDiscreteProcess(); ... return GetIntParameterValue("monProcess" "delai"); }
Les méthodes ExecVoidMethod et ExecIntMethod exécutent le corps de la méthode dont le symbole est passé en argument. La présente version n'offre que ces deux possibilités de type de méthode (void et int), et cette unique possibilité de type d'argument (int).