定制 Tivoli 资产管理


维护源代码

使用灵活字段

使用前事件处理器和后事件处理器


维护源代码

如果计划定制“Tivoli 资产管理”,“Tivoli 系统”建议操作如下:


使用灵活字段

灵活字段是在数据库的特定的表中定义的附加的、未使用的字段。使用灵活字段可以:

可以在特定对话框中添加新文本框以查看或编辑灵活字段。要使用灵活字段,可使用“接口设计器”将文本框添加到专用对话框中。文本框的控制标识必须与表中的灵活字段名称相匹配,如 flx_einv_vchr1。这使文本框中输入的值可以自动保存到数据库中。有关如何在对话框中创建文本框的详细指示,请参见“TSD 开发人员工具包”联机帮助。注:如果希望能够使用灵活字段查询或搜索字段,可以通过在灵活字段列上创建索引来提高系统性能。

表名称 灵活字段名称 数据类型
PEOPLE Flx_Peo_Vchr1 SAI_ADDRESS
Flx_Peo_Vchr2 SAI_ADDRESS
Flx_Peo_Vchr3 SAI_ADDRESS
Flx_Peo_Vchr4 SAI_ADDRESS
VALUATION Flx_Val_Date1 SAI_DATE
Flx_Val_Date2 SAI_DATE
Flx_Val_Date3 SAI_DATE
Flx_Val_Vchr1 SAI_ADDRESS
Flx_Val_Vchr2 SAI_ADDRESS
Flx_Val_Vchr3 SAI_ADDRESS
Flx_Val_Int1 SAI_INTEGER
Flx_Val_Int2 SAI_INTEGER
Flx_Val_Int3 SAI_INTEGER
IS_INVENTORY Flx_Einv_Vchr1 SAI_ADDRESS
Flx_Einv_Vchr2 SAI_ADDRESS
Flx_Einv_Vchr3 SAI_ADDRESS
INVENTORY_HISTORY Flx_Ihist_Vchr1 SAI_ADDRESS
Flx_Ihist_Vchr2 SAI_ADDRESS
Flx_Ihist_Vchr3 SAI_ADDRESS
Flx_Ihist_Float1 SAI_FLOAT
Flx_Ihist_Float2 SAI_FLOAT
Flx_Ihist_Float3 SAI_FLOAT
ORGANIZATION Flx_Org_Vchr1 SAI_ADDRESS
Flx_Org_Vchr2 SAI_ADDRESS

使用前事件处理器和后事件处理器

DelegateEvent 语句和前事件处理器及后事件处理器将定制进程连成一个整体。

除 i_sched.kb 文件外,可以在应用程序(包括数据公用程序中的应用程序)的每一事件记录处理器之前和之后调用 DelegateEvent,因此,可以在 i_events.kb 文件中的前事件处理器或后事件处理器中进行函数定制。通过在事件处理器中或 i_events.kb 文件中进行更改,可以在中央场所保持更改并减少对原始程序的修改数量。

DelegateEvent 的各个实例将返回前事件或后事件的整数值。根据返回代码值,或者忽略或者排序与事件相关联的原始代码。

前事件处理的 DelegateEvent 语句包含在每一事件处理器的第一行中。后事件处理的 DelegateEvent 语句包含在每一事件处理器的最后一行中。

为了调用 DelegateEvent,i_events.kb 文件必须包括在调用程序文件的 USES 链中。例如,为使 i_expinv.kb 文件调用前事件或后事件,其 USES 链中必须有 i_events.kb 文件。提供的源文件的 USES 链中已包括了 i_events.kb 文件。

命名约定

对于“Tivoli 资产管理”,前事件和后事件存储在 i_events.kb 中。全部前事件使用下列命名约定:

pre_i_事件处理器 

全部后事件使用下列命名约定:

post_i_事件处理器 

例如,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) ;

退出事件处理器

前事件和后事件应输出返回代码如下:

graphic3.gif (3412 bytes)

graphic4.gif (3324 bytes)

graphic5.gif (3502 bytes)