pfc对于pb的mis开发非常重要。

本文探讨了PFC在PowerBuilder(MIS)开发中的重要性及其架构特点。重点介绍了PFC的服务概念、体系结构及如何增强应用程序功能,特别是在数据库处理方面的作用。同时,文章深入分析了linkage服务的工作原理及其在主从表关联中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pfc对于pb的mis开发非常重要。  
  重要性首先在于它的正确性与稳定性,这是由很多pfc的开发实践证明的,否则无法解释pfc为何从5到8没有结构上的变化。  
  第二个是它提供了一个完整的体系结构,它试图用这个体系结构来应付各种各样的需求变化,实践证明是行之有效的,这也就是各种行业软件的mis开发都能应用pfc。  
   
  pfc内部元素的组成来源有两个,一个是继承原有的pb对象,可以叫它对象,如pfc_w_master,   pfc_u_dw.另一个是新建的对象,一般称之为服务。如pfc_rowmanager,   pfc_linkage.服务主要描述的是控件间的关系。  
   
  一般mis应用,mdi应用的比较多。mdi的组成部分主要有application,   frame,   menu,   sheet,   userobject,   dw.    
  pfc针对各部分都提供了功能增强和扩展。  
   
   
  增强和扩展的主要方式是  
  1是继承,增加实例变量(用于保存状态),增加事件(用于和外部控件提供接口),增加函数(改变自己的状态)。比如sheet继承于windows提供了关闭,打开,等附加功能。  
  2是利用服务,这是一种组合的方式,通过检测是否开关服务,可以判断是调用相应的服务处理程序,还是用默认的自身的处理程序。这差不多可以在各个事件都能看到。  
  由于从application到dw路径很长,因此提供了一个消息路由功能,提供了一些默认的消息处理路径,和消息发送方式,如menu的。而最大,最主要的消息处理分发功能集中在w_sheet上。这样子可以把开发者的注意力集中到各部分的接口部分,和各部分内部的处理,而不用过多考虑复杂的调用关系,  
   
  mis开发的一个主要部分是处理数据库。而处理数据库是pfc的主要方向,这也是把pfc_save事件放到w_sheet的一个主要原因。另一个原因是save消息一般是从菜单或按钮命令发出的,而w_sheet是消息的集中处理地。  
   
  u_dw的事件可以从几个部分解剖,retrieve部分,update部分,   数据操纵部分。  
  数据操纵需要有两个定位条件,一个是行,一个是列。因此一部分事件是行变换部分,一部分事件是列变换部分。数据操纵是开发的主要部分,因此在rowfocuschange,itemchange事件可以看到大量的服务,而这些服务无外乎是增强本u_dw的功能和建立和其他控件的联系的作用(最典型的是linkage).  
   
  考察pfc_save事件,可以看到pfc_w_master的80%的代码都是为pfc_save做准备。而pfc_save也是有7,8个事件组成,而这每个事件又大都遍历所有的u_dw,这也是面向对象所说的,“自己的事情自己做,自己做不了的给上级做”的一个体现。另一方面,又提供了可以为用户在不同层次,随意的在合适的位置添加业务逻辑,可以在不伤害原来代码的情况下,增加业务逻辑。  
   
  数据校验有几个层次,1、数据格式不对,2、validition   表达式,   3、本dw的一些业务校验,如不能为空等等,这些能判断出来的就放在pfc_validation去写,4、本dw判断不出的,比如借贷,存盘时要相等,就可以放在pfc_preupdate   去写,总而言之,能尽早处理就尽早处理,攒到最后就处理不过来了,会漏掉的。  
   
  再说一说典型的linkage服务,这个服务是提供了主从表服务。而主从表关系体现在行和列上。  
  主要逻辑是:  
  1、主表行变化时,从表显示对应的行。  
  2、主表连接字段变化,从表也变化。  
  3、从表增加时,主表必须要有行。而且相应的连接字段必须和主表一致。  
  4、主表删除时时间,从表也删除。  
  5、主表在有从表的行时,不能把连接字段清空,不能和已有的主表行连接字段内容一样。  
  还有一些其他的,也不少,从linkage的代码上可以看出来。  
   
  因此linkage调用会发生在rowfocuschanging,   rowfocuschanged,   itemchanged   ,  
  itemerror,   pfc_deleterow,   pfc_addrow,pfc_save等事件上。  
  还应该注意到linkage所加的实例变量的目的。  
  linkage会遍历所有的linkage链上的dw,做相应的处理。  
  最后可以看一看linkage的保存,是如何解决主从表间有外键的办法,分四次去update,很有趣.  
  总结一下,写或读一个服务的主要过程就是,  
  1、了解服务的目的。  
  2、总结服务所有可能触发的时间。  
  3、定义实例变量。  
  4、定义事件  
  5、定义函数  
  6、写代码。  
   
  最后我想说,pfc虽然好,但还是要结合自己的开发方式,对它做扩展,才更合用,千万别把pfc挖一块,那样破坏了这个体系的完整性,会有问题的.   
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值