我开发了一个产品,正在推广,但是,遇到了不同用户需求个性化的问题:即我的产品基本能满足大多数用户的需要,但是不同的用户,在某些地方又有不同的需求。
例如:某个录入窗口,大部分用户需要10个字段,但是,某些个别用户需要8个或11、12个字段,我该如何维护我程序的版本呢?我总不能为不同的用户都做一个版本吧?我现在的做法是:程序和数据库都用一个版本,用配置参数的方法决定某些字段的显示与存取。这样对于少量用户还行,但是随着用户的增加,越来越麻烦。请有经验的朋友谈一下吧。

解决方案 »

  1.   

    不知道这样能不能绕开版权问题:
    解释性delphi
    一个通用的解释器(客户端)自动从服务器下载 pas/dfm的加密包,在本地解压到内存里直接解释执行
    pas/dfm可以通过delphi的免费版进行开发,测试完毕在自动分发(压缩加密)到服务器
      

  2.   


    做数据表的字典表,,
    每个用户可以自行维护数据表的显示否、宽度,位置等。
    grid显示时,会根据字典表来。
    dbedit也可以根据字典表来自动创建,动态的位置,动态宽度。有点点不好,,要多在表中建些字段。
    如:本来打算只有9个字段,字符,日期,数字各三个。。
    这样子一来,你就每程建5个,共15个
      

  3.   

    haochin:你的思路不错。
    按你的思路,数据库和程序都用一个版本,是吗?例如:入库单表,字段中就要包括所有用户需要的字段,然后再根据数据字典表,决定哪些字段的显示与否。显示方面好控制,就是操作界面上,动态创建控件不太好控制吧?界面上可能有很多控制逻辑的,还有布局。我想用一个笨方法:事先设计好几种界面,然后根据不同的用户调用不同的界面,行吗?不用动态创建的。
      

  4.   


    每个用户可以自行维护数据表的显示否、宽度,位置等。
    不过我是把它自动存在本地的ini文件,下次运行时自动调入
    如果某个dbgrid没有任何设置,则从服务器调入一个缺省的配置,关闭程序时也自动保存到ini了
      

  5.   

    我的想法:1 数据字典不可少.描述一个数据集里面有什么字段,每个字段该如何显示.哪些字段属于关键字段,用户不可修改,其他字段用户可自由增删.依据数据字典中的SQL来生成数据集
    2 DBEdit等编辑控件,用与EControl_Designer类似的界面控件,提供运行期修改界面功能.这样就能解决编辑数据集的问题.如果要求高些可加入运行期脚本支持. 
    3 提供数据集TDataset的各种模板,如浏览模板,编辑模板,主从表模板,图表模板. 只要关联对应的数据集,套用模板(Form),加上辅助的动态修改界面,可以应付大多数界面情况.  数据(来源于数据集) + 控制器(数据字典控制格式,选择不同模板得到不同结果) + 显示方式(Form模板) = 终端界面终端界面 + 动态修改 + 可选的动态脚本= 最终成品
    动态脚本主要用于维护界面逻辑 , 业务逻辑主要用"硬编码+关键字段"来实现   数据字典描述的是数据集,不是真实的表,这样用户不能修改真实的数据表,但又能提供动态增删字段的行为, 至于多出的冗余字段,可以使用所谓的"优化器"来删除冗余字段,来达到性能的优化.这样需要维护的内容比较少,界面部分基本不用多管了, 不同的用户其界面不一样,显示的字段内容不一样,但是不需要更改程序.但仅是这样,应该还是不能满足不同用户的需求, 因为不同的用户,其业务逻辑一般是不一样的,这时可以考虑使用插件模式,为不同的用户编写特定的功能插件DLL(BPL).利用继承,只需要写额外的业务逻辑代码而已.
      

  6.   

    未必,特别是版本升级,修改bug时
      

  7.   

    PPower:你的思路很好。具体实现上不太容易。kampan:参考哪个ERP啊。请指教。请有经验的朋友继续指教。
      

  8.   

    pengxuan:这不是收费的问题。是程序开发的问题。