编写定制排产器规则
在某些 SyteLine 表单上,排产器规则的一些位置被列为“用户自定义”。例如,“顺序规则”的位置 24-39 为用户自定义规则保留。一个用户自定义规则就是逻辑定制的一部分,该逻辑用一个或多个定制 C++ 函数编写。用户自定义规则使您能够模拟标准规则无法处理的独特排产情况。
例如,以下来自初始化函数 ucini1 的分段为顺序规则 39 安装负荷等级函数:
double myrule39(LOAD*);
void ucini1()
{
sedfrk(39, myrule39);
/* Install other user-defined rules here. */
}
double myrule39(LOAD*)
{
/* Insert your custom logic for myrule39 here. */
}
有关每种用户可调用排产器函数的完整说明,请参见排产自定义指南,该指南可从我们的技术支持网站下载。
命名规则、自变量和返回值
要正确执行,定制函数必须接受正确的自变量,并为规则类型返回正确值。这些函数的名称一定不可与标准用户可调用函数的名称相矛盾。通过在初始化函数 ucini1 中调用安装函数,必须使定制函数可访问排产器。关于以下规则的详细信息,请参见如下主题:
Usercode 目录
为“排产器”编译的用户码适用于数据库中的所有选择项。安装程序创建一个名称为 USERCODE 的子目录,该 USERCODE 包括用户码支持文件。应在与 SQL 数据库有相同名称的文件下创建一个子目录以保留用户码源文件。排产器还在该目录找出用户码 DLL 文件 (USER.DLL)。
为 UNICODE 编写
“排产器”使用 Unicode 解决国际字符串问题。要编写为 Unicode、MBCS 或两者兼无可有条件编译的代码,遵循这些编程指导原则:
- 使用 _T macro 将文字字符串有条件编码以移植到 Unicode。例如:psqlda = dboptab (_T("MYBOM"), p_ssgvar->sgctrl.scprtds, DB_FETCH)
- 当忽略字符串时,注意函数自变量是否需要字符长度或字节长度。如果要使用 Unicode 字符串,这种差别很重要。
- 使用可移植版本的 C 运行字符串处理函数。关于完整列表和详细信息,请参见 Microsoft Visual C/C++ 文档中“字符串处理”节。
例如:
- _tcscpy 而不是 strcpy
- _tcsncpy 而不是 strncpy
- _tcscmp 而不是 strcmp
- _tcsncmp 而不是 strncmp
- _tcscat 而不是 strcat
- _tcsncat 而不是 strncat
- _tcschr 而不是 strchr
- _stprintf 而不是 sprintf
- 为字符和字符指针使用以下数据类型:
- 在使用 char 的场合使用 TCHAR。
- 使用 char 所在的 LPTSTR 或 TCHAR *。
- 使用 const char* 所在的 LPCTSTR。
将定制规则并入排产器
在编写定制规则后,必须将其链接到标准系统。