Verfassen von anwenderdefinierten Batch-Überschreibungsregeln
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);