灵活字段是在某些数据库表中定义的附加、未用的字段。通过灵活字段,您可以:
可以添加新的文本框以查看或编辑某些对话框中的灵活字段数据,使用灵活字段,需要用接口设计器来添加文本框到恰当的对话框中去。文本框的 Control_ID 值必须与表中灵活字段的名字相匹配,如 FLX_CHG_VCHR1。这样才允许将文本框中输入的值自动存储到数据库中。有关如何在对话框中创建文本框的详细说明,请参见 TSD 开发工具包联机帮助。
注:如果想用灵活字段去查询或搜索记录,可以通过在那个灵活字段列中创建一个索引来改进系统的性能。
灵活字段是可选的。如果想使用它们,必须通过用 ESMBuild 执行数据库脚本文件并把代码改成 rmod_wf.kb 把这些灵活字段添加到数据库中去。
把灵活字段添加到数据库中之后,在 TSD DT 文档中查找有关给对话框添加控件的说明。用 TSDBuild 为数据库执行数据库脚本。请参阅下表确定该运行哪个脚本文件。
如果 DBMS 是... 那么运行此脚本... DB2/2 r_flx.db2 Informix r_flx.inf SQL 服务器 r_flx.mss Oracle r_flx.ora Sybase r_flx.syb
注:在每次安装新版本或者重装 Tivoli 更改管理时,必须取消代码注释。
下表列出了带有灵活字段的表、每个表中的灵活字段名称和每个字段中的数据类型。
表名称 | 灵活字段名称 | 数据类型 |
CHANGE | FLX_CHG_VCHR1 | VARCHAR(254) |
FLX_CHG_VCHR2 | VARCHAR(254) | |
FLX_CHG_VCHR3 | VARCHAR(254) | |
FLX_CHG_VCHR4 | VARCHAR(254) | |
FLX_CHG_DATE1 | DATE | |
FLX_CHG_DATE2 | DATE | |
FLX_CHG_INT1 | INTEGER | |
FLX_CHG_INT2 | INTEGER | |
FLX_CHG_TIME1 | TIME | |
FLX_CHG_TIME2 | TIME | |
CHANGE_MODEL | FLX_CHG_MOD_VCHR1 | VARCHAR(254) |
FLX_CHG_MOD_VCHR2 | VARCHAR(254) | |
FLX_CHG_MOD_VCHR3 | VARCHAR(254) | |
FLX_CHG_MOD_VCHR4 | VARCHAR(254) | |
FLX_MOD_CHG_DATE1 | DATE | |
FLX_MOD_CHG_DATE2 | DATE | |
FLX_MOD_CHG_INT1 | INTEGER | |
FLX_MOD_CHG_INT2 | INTEGER | |
FLX_MOD_CHG_TIME1 | TIME | |
FLX_MOD_CHG_TIME2 | TIME |
DelegateEvent 语句及前事件和后事件处理器简化了定制进程。
除了 i_sched.kb 文件之外,可以在应用程序的每个事件处理器之前或之后调用 DelegateEvent,其中事件处理器包括数据公用程序中的处理器。因此,可以在 i_events.kb 文件里的前事件或后事件处理器上做一个功能定制。通过在事件处理器中或 i_events.kb 文件中做一些更改,可以保留中央场所中的更改并减少修改原始程序的次数。
每个 DelegateEvent 实例为前事件或后事件返回一个整数值。依据这个返回码的值,决定与该事件相关的原始代码是跳过还是执行。
每个事件处理器的第一行都是为前事件处理列入的 DelegateEvent 语句。每个事件处理器的最后一行都是为后事件处理列入的 DelegateEvent 语句。
为了调用 DelegateEvent,在调用程序文件的 USES 链上必须包含 i_events.kb 文件。例如,为了让 i_expinv.kb 文件调用一个前事件或后事件,在它的 USES 链上必须有 i_events.kb 文件。在装配的源文件中的 USES 链上已列入 i_events.kb 文件。
对 Tivoli 资产管理来说,前事件和后事件都保存在 i_events.kb 当中。所有的前事件都使用下面的命名约定:
pre_i_eventhandler
所有的后事件都使用下面的命名约定:
post_i_eventhandler
例如,AssetCopy 事件处理器的前事件命名为 pre_i_AssetCopy,它的后事件命名为 post_i_AssetCopy。
传送到事件处理器的参数也可以被这个事件的前事件和后事件处理器接受。当你给事件处理器传送一个参数时,该事件处理器就会处理所需的参数。例如:当调用事件处理器 InventoryMainEvent 时,要调用的参数 EA_Win 通过引用传送到该处理器中。在 i_events.kb 中,事件处理器按下面方式创建:
Event pre_i_AssetCopy (REF InvCopies: LIST OF Inv_Rec);Event post_i_AssetCopy (REF InvCopies: LIST OF Inv_Rec);
DelegateEvent 语句传送已传送给原始事件处理器的同一变量。例如,若 InventoryMainEvent 按如下形式创建:
Event InventoryMainEvent (Ref ea_win:WINDOW) ;
则对 DelegateEvent 的调用也应该传送相同的变量:
$Result:= DelegateEvent (pre_i_InventoryMainEvent,ea_win) ;
前事件与后事件应该产生如下的返回码: