Écriture de règles de séparation des lots personnalisées

L'ordonnancement utilise les règles de séparation pour déterminer de quelle manière les OF qui arrivent doivent être séparés en lots.
Remarque :  Pour consulter un récapitulatif de la procédure de création des règles personnalisées, reportez-vous à la rubrique Ecriture de règles d'ordonnancement personnalisées. Pour obtenir plus de détails sur les fonctions décrites dans cette rubrique, reportez-vous au Guide de personnalisation de l'ordonnancement (Scheduling Customization Guide) qui peut être téléchargé sur notre site Web d'assistance technique.

Logique des règles de séparation de lot

Avant de créer des règles de séparation de lot personnalisées et d'écrire les fonctions de séparation de lot correspondantes, vous devez comprendre la logique utilisée par la fonction de séparation de lot. Lorsqu'un OF arrive au niveau d'une opération pour laquelle une fabrication groupée a été indiquée, la fonction de séparation de lot est appelée.

Lorsque la fonction de séparation de lot est appelée, celle-ci détermine, sur la base de caractéristiques telles que le code article, la couleur, etc., dans quel lot en cours de création l'OF qui arrive doit être placé. Si d'autres OF sont en attente de traitement, l'OF qui arrive peut être regroupé avec ceux-ci ; sinon, il créera un nouveau lot en cours de création.

Nom de la fonction

Votre fonction de séparation de lot personnalisée peut porter n'importe quel nom qui n'est pas un nom de fonction standard exécutable par l'utilisateur.

Arguments


#include "factor.h"
FORMBAT *bsrl(ldp, batch)
LOAD *ldp;        /* pointer to the load */
BATCHDEF *batch;  /* pointer to the batch definition */

Cette fonction accepte deux arguments, un pointeur vers la charge (Type : LOAD *) et un pointeur vers le lot (Type : BATCHDEF *).

Valeur de retour

La fonction retourne un pointeur vers le lot en cours de création dans lequel cet OF doit être placé ou la valeur NULL s'il crée un nouveau lot (Type : FORMBAT *).

Voici ci-dessous un exemple d'une fonction de séparation de lot basée sur l'article :


FORMBAT *bsrl (LOAD *ldp, BATCHDEF *batch)
/*-----------------------------------------------------------------
     Batch separation rule which separates arriving jobs into
     different batches based on the item number.
     ARGS:
       ldp - pointer to the arriving load (job)
       batch - pointer to the batch that this load will follow
     RETURNS: pointer to the forming batch
-----------------------------------------------------------------*/
{
     FORMBAT *fb;
     for ( fb = (FORMBAT *) csfsls(batch->btfmls);
           fb != NULL;
           fb = (FORMBAT *) csnxls((CSENTITY *) fb) )
     {
         /* Return this forming batch if its children have the same
            part as the load passed in, and the new quantity will be
            less than or equal to the maximum.  */
         if ((strcmp(fb->fbldp->loordp->orptpt->panum,
                     ldp->loordp->orptpt->panum) == 0) &&
             (fb->fbquant + sequfb(ldp, batch, batch->btqurl)
              <_ batch-="batch-">btmax))
         {
              Return(fb);
         }
     }
     /* return NULL if we couldn't find one */
     Return(NULL);
{
</_>

Installation de la fonction personnalisée

Pour rendre votre fonction de séparation de lot personnalisée disponible pour l'ordonnancement, vous devez l'"installer" à partir de ucini1 en appelant la fonction sedfsb. Cette fonction a deux arguments dans l'ordre suivant :

  • Le numéro de la règle de séparation de lot pour laquelle votre fonction contient une logique personnalisée.
  • L'adresse de votre fonction de séparation de lot.

Par exemple, pour installer la règle exemple "bsrl" ci-dessus dans la position de règle 39 :


sedfsb (39, bsrl);