カスタムバッチ区切りルールの作成
スケジューラは、区切りルール を使用して、着信ジョブをバッチに区切る方法を定義します。
注: カスタムルールの作成に必要な手順のサマリは、「カスタムスケジュールルールの作成」を参照してください。このトピックで説明した関数の詳細については、弊社サポートサイトからダウンロードできる
『Scheduling Customization Guide』
(スケジューリングカスタマイズガイド)を参照してください。
バッチ区切りルールの論理
カスタムバッチ区切りルールを作成し、対応するバッチ区切り関数を作成する前に、バッチ区切り関数で使用する論理を理解しておく必要があります。バッチ区切り関数は、バッチ定義が指定されている作業にジョブが到着すると呼び出されます。
バッチ区切り関数は、呼び出されると、品億番号、色などの特性に基づいて、到着ジョブを入れる形成中のバッチを決定します。そのバッチによる処理を待機している他のジョブがある場合、到着ジョブをそれらと組み合わせることができます。そうでない場合、新しい形成中のバッチが作成されます。
関数の命名
カスタムバッチ発行関数には、ユーザによる呼び出し可能な標準の関数名 ではない任意の名前を付けることができます。
引数
#include "factor.h"
FORMBAT *bsrl(ldp, batch)
LOAD *ldp; /* pointer to the load */
BATCHDEF *batch; /* pointer to the batch definition */
この関数は、2 つの引数として、負荷へのポインタ(タイプ: LOAD *)とバッチへのポインター(タイプ: BATCHDEF *)を受け入れます。BATCHDEF *)を受け入れます。
戻り値
この関数は、このジョブを追加する形成バッチへのポインタを返します。新しい形成バッチ(区分: FORMBAT *) を開始する場合は Null を返します。
以下に、品目に基づいたバッチ区切り関数の例を示します。
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);
{
</_>
カスタム関数のインストール
カスタム区切り関数をスケジューラで使用できるようにするには、sedfsb 関数を呼び出すことにより、ucini1 からカスタム区切り関数を「インストール」する必要があります。この関数には、次の順序の 2 つの引数があります。
- 関数に含まれるカスタム論理のバッチ区切りルールの番号
- バッチ区切り関数のアドレス
たとえば、上記のルール例「bsrl」をルール位置 39 にインストールするには、以下のようにします。
sedfsb (39, bsrl);