发信人: edison()
整理人: edison(1999-11-24 07:11:45), 站内信件
|
哈哈哈,几乎是一模一样。看来 fanpb 老兄不需要我的 Edit Service 了。
我的 Edit Service 和你描述没两样(共享数据源,可以翻页、可以滚动
无须交换数据)。我的传递参数情况只有个别特殊业务规则时采用的。
一般都是用 Edit Service 。
我也和你一样爱使用事件,继承的时候容易操作许多,所以我爱用事件。
我也爱和你一样提供一些空事件,这招我也是跟 PFC 学的。
PFE 的层概念非常 COOL!真的。但是它最大的毛病使得程序的体积整整
扩大了一倍。PFC 是一个非常通用的类库,它有很多功能。但是如果不是
靠出售类库为生的话,还是使用自己编写、单层结构方便一点。正如 fanpb
所说专用性强一点的自己的类库。但是我们不能忽视 PFC,因为 PFC 里
的内容非常丰富。各种编程技巧、面向对象、面向服务、PB 技巧等等。无
一不值得我们学习。所以我仍然鼓励大家多看看 PFC 。
【 在 fanpb (笨笨) 的大作中提到: 】 : 【 在 edison (edison) 的大作中提到: 】 : : 我的天,我们的思路几乎一模一样!太 Cool 了! : : 我曾说一个 DW 对应一个 Object 。其实我们的意思是一样的,我可 : : 能漏说了。我的 DW 有些是对应一个表、有些是对应多个表。而且我 : : 的 n_om 是继承 DataStore 的。因此,我已将关于各个表之间的完 : : ....... : : 殊途同归,确实太cool了。 : 处理上略有不同之处在于:我们没有用结构或uo传递一条记录。 : 而直接使用PB提供的Sharedata函数。好处是:在Datawindow修改 : 升级时,只要保证grid和freeform的sql一样即可,而无其它烦恼。 : 不需要改结构或uo。而且在卡片窗口里可以滚动、翻页,不需要 : 每次交换数据。 : : 我也喜欢标准界面,但用户有时有要求,因此不得加一些button : 之类。 如“含废品”,“过滤已记帐的”。这样还得重载窗口控件 : 布局函数,很烦。而我们的领导要求我们“体贴”用户,没办法,加吧。 : : 在设计功能基类时,预留了大量的事件,其代码往往为return true。 : 这些事件中用于开发重载的。比如保存动作,要触发保存前事件、保存事件、 : 保存后事件。其中任何一个事件返回FALSE算保存失败,ROLLBACK;全成 : 功COMMIT。这样基类就有了另一个用途——程序框架。开发者只要填写 : 事件的script就完成了开发。例如我们规定: : 保存前:检查权限、能否保存,不准写数据库。 : 保存:datawindow update。 : 保存后:相应修改,如减库存。 : 最后commit,并打印。 : : 为什么用事件?其实这些事件都应该是protected 的函数。但我是个 : 实用主义者:在pb中,继承后的对象看不到基类的函数。而且需要手工复制参数 : : 等。基类函数修改参数个数和类型后,继承后的对象的函数会变成另一个。 : 而事件好得多:在继承后的对可视化看到,填代码即可。基类参数变化后, : regerate继承后的对象就对了。 : : 有了程序框架,自动生成就容易了。其实说出来我都觉得不好意思,我不 : 懂PFE是怎么做的。我们做法是:从基类派生出一个模板,并按开发规范填好代码 : : 和注释。如保存前事件override模式,模板是这样写的: : if not event 基类:aa_beforeupdate(参数) then : return false : end if : : // Your code,由开发时填写商业逻辑代码,如检查权限等。 : : return true : 剩下的自动生成就是把模板对象的语法取出,按操作输入的参数修改一些变 : 量、 : 名称,最后存到目标PBL中即可。没什么高深之处。 : : 悄悄地TO EDISON:能不能把DataWindow Edit Service 发到我的信箱中,可 : : 我不能全部发给你我们的类库,因为是这公司版权,而且不准公开。我只能告诉 : 你 : 我们是怎么做的。先谢过了。
-- 谢谢没有在 "将本文章寄一份给原作者" 处打勾, 再次感谢!
※ 来源:.网易 BBS bbs.netease.com.[FROM: bbs.szptt.net.cn]
|
|