编写自定义批处理置换规则

“排产器”使用批处理定义表单中的置换规则确定成形批是否应在批数量未达到最小下达数量的情况下下达。
注意: 关于创建定制规则所要求的步骤总结,请参见编写定制排产器规则。有关该主题中所述函数的详细信息,请参见排产自定义指南,该指南可从我们的技术支持网站下载。

置换规则逻辑

在创建定制批置换规则并编写相应的批处理置换函数前,应理解置换函数使用的逻辑。该规则将在下面两种情况下调用:

  • 当启用添加置换下达检查并且作业添加到已形成批时,却发现已形成批未达到或未超出其最小下达数量。
  • 在周期性置换下达检查期间,如果启用了周期性检查,该规则将在批处理定义中指定的间隔生效。

当批置换函数进行调用时,它将决定是否应下达已成形的批。

命名函数

定制置换函数可使用非标准用户可调用函数名的任何名称。

自变量


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

置换函数接受两种参数,一个指向负荷(类型:FORMBAT *),一个指向批(类型:BATCHDEF *)。

返回值

该函数在已形成批应下达的情况下返回“真”(非零),或在已形成批不应下达的情况下返回“假”(零)(类型:int)。

以下是根据时间大于或等于置换阈值的批置换函数的示例:


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)
     }
{

安装定制函数

要使定制置换函数对“排产器”可用,必须调用函数 sedfok 从 ucini1 函数将其“安装”。函数必须按以下顺序使用两个自变量:

  • 函数包括定制逻辑的批处理置换规则的数量。
  • 批置换函数的地址。

例如,要在规则位置 39 安装以上示例规则“borl”:


sedfok (39, borl);