首页 > 开发 > 综合 > 正文

PB通用类库和业务类库的设计思想(二)

2024-07-21 02:10:08
字体:
来源:转载
供稿:网友

二、ufc通用类库框架
(一)ufc通用类库简介
   ufc(user foundation class)类库是一组powerbulider的对象,它是由许多通用对象组成的基础类库。主要包括权限管理对象、错误截获对象、应用程序管理对象、事务管理对象、数据窗口服务对象、窗口对象等。
   类库主要包括以下几个包:
1、五个核心包
ufcappsrv.pbl  应用对象服务包,包括应用程序管理对象、字符串操作对象、数值操作对象等。
ufcmain.pbl  通用对象服务包, 包括pb的标准对象的各种扩展对象:窗口、数据窗口、编辑框、图片按钮等。
ufcobjsrv.pbl  定制对象服务包, 大部分是一些定制的用户对象,例如工具条、outlook条等。
ufcdwsrv.pbl  数据窗口服务包,包括各种数据窗口服务,例如过滤服务、查找服务、排序服务、弹出菜单服务等。
ufcwnsrv.pbl  窗口服务包,包括数据窗口上的扩展服务,例如状态条服务、个性化风格服务等。
2、两个辅助包
ufctemplate.pbl  模板对象包, 包括各种模板窗口。
ufccommon.pbl    公共业务对象包, 包括mis系统的一些通用业务窗口和数据窗口,例如权限管理窗口、系统参数管理窗口等。
3、可选包(可以根据需要包含)
ufcexternal.pbl   外部扩展对象包,包括各种第三方pb对象,以及api相关对象。
ufcdatabase.pbl   数据库对象包,包括对各数据库对象的统一封装,以及业务帐套的管理。
4、工具包(可以根据需要包含)
ufcreport.pbl  通用报表对象包,提供了一个通用的报表工具。
ufcupdate.pbl  自动升级对象包,提供了一个最新程序上载和更新的工具。
ufcstatistic.pbl   通用数据统计分析图表包,提供通用的对数据的统计和分析工具,以及图表显示。
(二)ufc通用类库命名规范
1、ufc对象的命名
    所有基础类库的对象(包括所有的结构体和全局函数), 其名称都带前缀ufc_,加上这个前缀的好处是让业务对象与类库对象区别开来, 而不会产生重名的麻烦:      ufc_type_objectname
具体类型说明如下:
     前缀                               描述 
ufc_m_                       menu 
ufc_n_                        standard class user object 
ufc_n_                        custom class user object 
ufc_s_                        global structure 
ufc_u_                        visual user object 
ufc_w_                       window 

例如:             
       例子                             解释 
ufc_w_base                      所有窗口的基类 
ufc_u_tv                          treeview控件基类 
ufc_u_dw                        datawindow控件基础类 
ufc_n_dwsrv                   数据窗口服务基础类 
ufc_n_tr                         不可视的事务对象基础类 

2、ufc对象实例命名
   所有对象实例采用pb中标准的命名方式, 采用(对象类型缩写)+(_)+(实例英文描述)
例如:  dw_master ,   w_logon 等。

3、ufc变量命名
   所有变量和pb中默认的命名方式一致, 采用 (作用域)+(类型)+(_)+(变量英文描述)
例如:  gnv_app   li_index   is_username   等。

4、ufc基础类库中事件和函数命名
   所有自定义事件(非系统事件), 都采用 (ufc_)+(事件描述)的方式, 例如:  ufc_open
   对于一个事件的前触发和后触发, 采用(ufc_pre)+(事件描述)表式前触发, 采用(ufc_post)+(事件描述)表示后触发,  例如:  ufc_preopen ,  ufc_postopen。
   对于函数, 采用 (of_)+(函数描述)的方式,  例如 of_getusername() 。

(三)核心包分析
   ufc基础类库主要采用窗口、标准用户对象、定制用户对象来实现面向对象封装。主要的服务有:
1、应用程序管理对象(ufc_n_appmanage),实现整个应用程序的管理,以及对应用系统全局变量的封装。它包含的服务主要有:
   a。系统参数对象(ufc_n_sysparam),提供了对业务系统数据库中的各种全局参数的访问。
   b。错误日志对象(ufc_n_error), 提供了对系统中各种错误的捕获,最后统一记录和显示出错信息。
   c。事件日志对象(ufc_n_eventlog),提供了每个系统登录用户的登录细节,以及对系统的操作情况。
   d。系统序列号对象(ufc_n_sequence), 提供定义系统中各种编号的规则定义,以及各种编号的自动生成。
   e。权限管理对象(ufc_n_rightmanage), 提供了一个统一的权限管理对象,通过它来获取登录用户对每个模块的访问权限(ufc_n_right),所有权限感应对象根据传递给它的ufc_n_right来初始化其自身表现。

2、窗口对象和窗口服务对象
   主要的几个窗口基类说明:
ufc_w_base  --是所有窗口的基类,封装了一些与业务无关的通用功能。
-ufc_w_master --为了扩展一些api效果,在ufcmain.pbl或ufcexternal.pbl中实现。
--ufc_w_frame  --mdi窗口基类
---ufc_w_navigateframe --导航式的mdi窗口模板
--ufc_w_main  --业务窗口基类,实现了与数据窗口的关联和事件映射。
---ufc_w_sheet  --业务子窗口
--ufc_w_popup    --popup风格窗口基类
--ufc_w_response --response风格窗口基类
    主要的窗口服务有:
      a。状态条服务, 为pb中的mdi窗口提供多功能的状态提示条。
      b。工具条服务, 提供对pb中的标准工具条的操作界面。
      c。桌面配置服务, 对应用程序的整体外观进行配置,包括导航条、状态条、工具条的开关,窗口位置的保存等。
      d。墙纸服务,提供在应用程序的mdi区显示背景图片。
      e。个性化偏爱服务, 提供了对窗口配置的自动读取和设置。

3、数据窗口对象和数据窗口服务
    整个基础类库就是对数据窗口的扩展,为了不导致数据窗口对象的过度膨胀,把各种服务功能独立成一个服务对象,而在数据窗口中采用引用服务对象的方式来实现。 其中主要的数据窗口服务有:
    a。排序服务(ufc_n_dwsrv_sort)  b。过滤服务(ufc_n_dwsrv_filter)
    c。查询服务(ufc_n_dwsrv_query)  d。检索服务(ufc_n_dwsrv_retrieve)
    e。自动保存服务(ufc_n_dwsrv_autosave) f。数据导出服务(ufc_n_dwsrv_export)
    g。数据导入服务(ufc_n_dwsrv_import) h。下拉查找服务(ufc_n_dwsrv_dropdownsearch)
    i。链接服务(ufc_n_dwsrv_linkage)  j。多表服务(ufc_n_dwsrv_multitable)
    k。弹出菜单服务(ufc_n_dwsrv_popmenu) l。弹出选择服务(ufc_n_dwsrv_popselect)
    m。行管理服务(ufc_n_dwsrv_rowmanage) n。行选择服务(ufc_n_dwsrv_rowselect)
    o。重复列判断服务(ufc_n_dwsrv_repeate) p。要求列判断服务(ufc_n_dwsrv_required)
    q。初始化列服务(ufc_n_dwsrv_initcolumn)   r。改变大小服务(ufc_n_dwsrv_resize)
    s。日历服务(ufc_u_calendar)  t。计算器服务(ufc_u_calculate)
    u。错误记录服务(ufc_n_error)  v。弹出按钮服务(ufc_u_popbutton)

4、全局服务对象
   主要有以下服务对象:
   a、字符串操作对象(ufc_n_string) --包括对字符串的分割、全局替换等。
   b、日期时间操作对象(ufc_n_datetime) --包括对日期时间的增减、日期字符串的转换等。
   c、数值操作对象(ufc_n_numerical) --包括对数值的转换,包括金额的大小写转换等。
   d、类型转换对象(ufc_n_conversion) --提供对各种枚举与基本类型之间的转换。
   e、平台对象(ufc_n_platform) --提供对操作系统平台的支持。
   f、sql对象(ufc_n_sql) --对sql语句进行解析和拆分


类库的基本框架大体上就是这样, 它们之间具体怎么关联的, 请听下回分解。

(待续)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表