Ecriture de règles d'ordonnancement personnalisées

Dans certains écrans CloudSuite Business, plusieurs positions de règles de l'ordonnanceur sont répertoriées comme définies par l'utilisateur. Par exemple, les positions 24 à 39 de la règle de séquence sont réservées aux règles utilisateur. Une règle utilisateur est une règle logique personnalisée qui s'écrit à l'aide d'une ou de plusieurs fonctions personnalisées C++. Ces règles personnalisées vous permettent de modéliser des situations d'ordonnancement uniques qui échappent aux règles standard.

Par exemple, la partie située sous la fonction d'initialisation ucini1 permet d'installer une fonction de classement de charge pour la règle de séquence 39.


double myrule39(LOAD*);
void ucini1()
{
 sedfrk(39, myrule39);
 /* Install other user-defined rules here. */
}
double myrule39(LOAD*)
{
 /* Insert your custom logic for myrule39 here. */
}

Pour une description complète de chaque fonction Ordonnanceur exécutable par l'utilisateur, reportez-vous au Scheduling Customization Guide qui peut être téléchargé sur notre site de support.

Règles de dénomination, arguments et valeurs de retour

Pour une exécution correcte, les fonctions personnalisées doivent accepter les arguments requis et générer la valeur adéquate pour le type de règle. Les noms de ces fonctions ne peuvent pas être en conflit avec les noms de fonctions standard exécutables par l'utilisateur. Vous devez rendre vos fonctions personnalisées accessibles à l'ordonnancement en exécutant les fonctions d'installation dans la fonction d'initialisation ucini1. Reportez-vous à ces rubriques pour des informations détaillées à propos des règles suivantes :

Répertoire du code utilisateur

Le code utilisateur compilé pour l'ordonnancement s'applique à toutes les alternatives de la base de données. La procédure d'installation crée un sous-répertoire nommé USERCODE qui contient les fichiers supportant le code utilisateur. Il est recommandé de créer un sous-répertoire sous celui qui précède et de le nommer comme votre base de données SQL pour y enregistrer les fichiers sources de votre code utilisateur. L'ordonnancement recherche également le fichier DLL de code utilisateur (USER.DLL) dans ce répertoire.

Ecriture pour UNICODE

L'ordonnancement utilise Unicode pour prendre en charge les problèmes de chaîne internationale. Pour écrire ce code qui peut être compilé pour Unicode, pour MBCS ou ni pour l'un ni pour l'autre, suivez les consignes de programmation ci-dessous :

  • Utilisez la macro _T pour coder des chaînes littérales afin qu'elles soient transférables vers Unicode. Par exemple : psqlda = dboptab (_T("MYBOM"), p_ssgvar->sgctrl.scprtds, DB_FETCH)
  • Si vous passez des chaînes, vérifiez si les arguments de fonction demandent une longueur en caractères ou en octets. La différence est importante si vous utilisez des chaînes Unicode.
  • Utilisez des versions transférables des fonctions de manipulation de chaînes C d'exécution. Reportez-vous à la rubrique consacrée à la manipulation des chaînes dans la documentation Microsoft Visual C/C++ pour une liste complète et de plus amples informations.

    Par exemple :

    • _tcscpy au lieu de strcpy
    • _tcsncpy au lieu de strncpy
    • _tcscmp au lieu de strcmp
    • _tcsncmp au lieu de strncmp
    • _tcscat au lieu de strcat
    • _tcsncat au lieu de strncat
    • _tcschr au lieu de strchr
    • _stprintf au lieu de sprintf
  • Utilisez les types de données suivants pour les caractères et les indicateurs de caractères :
    • TCHAR pour caractère.
    • LPTSTR ou TCHAR * pour caractère *.
    • LPCTSTR pour caractère constant *.

Intégration des règles personnalisées dans l'ordonnancement

Une fois que vous avez écrit vos règles personnalisées, vous devez les intégrer dans le système standard.

Rubriques liées