Verfassen von anwenderdefinierten Batch-Überschreibungsregeln

In der Reihenfolgeplanung werden Überschreibungsregeln aus der Maske Batch-Definitionen verwendet, die bestimmen, ob Batches freigegeben werden sollen, obwohl sie die minimale Freigabemenge noch nicht erreicht haben.
Hinweis:  Eine Zusammenfassung der beim Erstellen anwenderdefinierter Regeln durchzuführenden Schritte finden Sie unter Verfassen von anwenderdefinierten Reihenfolgeplanungs-Regeln. Weitere Informationen zu den in diesem Thema beschriebenen Funktionen finden Sie im Handbuch für die Anpassung der Reihenfolgeplanung, das Sie von unserer Support-Website herunterladen können.

Logik von Überschreibungsregeln

Bevor Sie anwenderdefinierte Batch-Überschreibungsregeln erstellen und die entsprechenden Batch-Überschreibungsfunktionen verfassen können, müssen Sie die von der Überschreibungsfunktion verwendete Logik verstanden haben. Diese Regel wird unter zwei Bedingungen aufgerufen:

  • Wenn das Hinzufügen von Freigabeprüfungen durch Überschreibungen aktiviert ist, ein Fertigungsauftrag zu einem Batch hinzugefügt wird und dieser Batch die minimale Freigabemenge noch nicht erreicht oder überschritten hat.
  • Bei regelmäßigen Freigabeprüfungen durch Überschreibungen, die, wenn Regelmäßig prüfen aktiviert wurde, in einem Intervall ausgeführt werden, das in der Batch-Definition festgelegt wurde.

Wenn die Batch-Überschreibungsfunktion aufgerufen wird, bestimmt sie, ob der Batch freigegeben werden soll.

Benennen der Funktion

Sie können einen beliebigen Namen für Ihre anwenderdefinierte Überschreibungsfunktion wählen, solange es sich nicht um den Namen einer von Anwendern aufrufbaren Standardfunktion handelt.

Argumente


#include "factor.h"
int borl(formbat, batch)
FORMBAT *formbat;    /* pointer to the forming batch */
BATCHDEF *batch;     /* pointer to the batch definition */

Die Überschreibungsfunktion verwendet zwei Argumente: einen Zeiger zum zu bildenden Batch (Typ: FORMBAT *) und einen Zeiger zum Batch (Typ: BATCHDEF *).

Rückgabewert

Die Funktion gibt TRUE (ungleich Null) zurück, wenn der zu bildende Batch freigegeben werden soll, oder FALSE (Null), wenn er nicht freigegeben werden soll (Typ: int).

Im folgenden Beispiel für eine Batch-Überschreibungsfunktion wird als Basis die Zeit mit einem Schwellenwert verglichen:


int borl (FORMBAT *formbat, BATCHDEF *batch)
/*-----------------------------------------------------------------
     Batch override rule which determines that the forming batch should
     be released if it has been waiting longer or equal to the override
     threshold.
     ARGS:
       formbat - pointer to the arriving forming batch
       batch - pointer to the batch that this load will follow
     RETURNS: true, if it has been waiting too long
              false, otherwise
-----------------------------------------------------------------*/
{
     double x;
     x = cstnow - formbat->fbsttim;
     /* If the time the batch has been forming is at least the
        threshold, then release the batch */
     if (x >= batch->btovth)
     {
         return(1)
     }
     else
     {
         return(0)
     }
{

Installieren der anwenderdefinierten Funktion

Um Ihre anwenderdefinierte Überschreibungsfunktion für die Reihenfolgeplanung verfügbar zu machen, müssen Sie sie mit der Funktion ucini1 installieren, indem Sie die Funktion sedfok aufrufen. Diese Funktion hat zwei Argumente in der folgenden Reihenfolge:

  • Die Nummer der Batch-Überschreibungsregel, für die Sie das anwenderdefinierte Programm geschrieben haben.
  • Die Adresse Ihrer Batch-Überschreibungsfunktion.

So installieren Sie die obige Beispielregel "borl" an Regelposition 39:


sedfok (39, borl);