职业生涯 信息化行业 查看内容

谈一谈WEB开发平台

老高 | 发布于 2015-01-01 20:21| 浏览()| 评论() | 收藏() | 点赞() | 打印

摘要: 从编程之初,便免不了和函数,类,抽象,接口之类的东西打交道。久而久之,自然会对此进行总结,这便是开发平台之由来。在中国的程序员之中,有很大一部分都是编一些企业信息化,政府信息化之类的程序。

web开发平台之架构

一个web开发平台大体应包含如下东西:

1、元数据设计

字段的信息:如中文名称,长度,数据类型,输入方式等等;表信息:表间关系,主键,外键,中文名称等等。

一个单据,常分为主从两部分。每部分的字段中文名要录入进去,以为了界面设计。有些字段的录入是参照字典的,哪些字段参照哪些字段,也做个关联,这就是最简单实用的元数据设计。

2、单据设计

界面运行期动态拖拉的控件多的是,增加单据头,还是细目,有了元数据就好办多了

单据上的控件不外乎日期、文本、数字、字典参照、CHECK、GRID,

BUTTON、PAGECONTROL、TREE等等,这样,就解决了客户要界面变,录入的字段要增加减少,验证要改变的要求,控件的颜色、长度、约束条件、是否必填、中文名、跳转顺序,你可以存在表里面,也可以保存在表单文件中。

3、单据保存

这个单据对的什么主从表,有字典对照就可以了

主从表的提交和单表的提交,都很简单,这很通用。

这样录入就完成了。但是,我们这里还缺三块的描述,一个是录入和浏览细目的GRID,一个是字典参照控件,一个是通用字典录入。

4、录入和浏览细目的GRID、字典参照控件、通用字典录入

对于字典参照控件,肯定就是一个模糊检索EDIT和一个检索出来的结果显示的GRID。

对于录入细目和浏览用的GRID,需要过滤、定位、列的排列先后顺序,哪些列可视。这种功能,在单据录入的GRID中一样通用。

有时候录入的时候发现字典条目没有,就需要增加。这里就用到通用字典录入。

当然,你可以为每一个字典录入做一个模块。这样:在录入单据时也可以用,单独调用也可以专门录入字典。

每个字典录入界面,在表中记录好对应哪个字典表。这样,在程序的任何地方,你都可以调用起这个窗口

输入界面做完了,字典维护也完了,就剩下查询和报表了


5、数据查询与报表

查询条件千变万化,但都在单据的可选字段之中。本质上就是用单据表中的某个列进行查询过滤,结果输出到GRID中。报表其实和查询一样,只不过查询是输出为GRID。但是报表又分为普通二维表、交叉表、图表、套打表、固定行列表、多源、关联分片、不规则分组、自由格间运算。

报表的查询条件设计和查询一样的原理。报表的设计需要单独的设计工具。要在主程序中打印预览报表,也要能调出查询条件,能将报表结果导出为Excel pdf 等文件。

6、工作流,集成工作流引擎,能够对业务流程进行灵活的定义。业务流程定义的结果以元数据的方式保存在数据库中,运行时由工作流引擎根据元数据的描述驱动,业务单据都可以通过工作流进行驱动,从而实现业务流和数据流的统一。

7、基座

输入输出都有了,就应该有个基座把这些功能都装进去,而且要根据每个人的登陆权限动态装入,基座的作用就是验证用户登录是否正确,从服务器上取回用户的配置信息,根据权限分配,建立用户功能菜单,点击菜单的时候就装入模块。

8、组织结构设计、权限分配

组织结构设计:需要有集团-公司-部门-人这样的维护界面。人又归类为一些角色。角色包含角色特有的功能。这样你在分配权限的时候,就非常容易先给一个人分配一个角色,这样标准功能就都有了,如果这个人还有特殊性,就个别再增删功能。角色也有高低,这样在使用同一个模块是,如查询我手下所有人的工作单。我是小组长,我就只能看我这个小组的人的工作单,我是科长,我就能看所有小组长,包括各组下的普通员工的工作单。

而权限,这在架构上很有要求。权限分配分为三类:

业务功能权限分配,要能分配到这个模块的每个按钮功能及子功能,大多数普通的管理软件,只能到模块。一个模块,不同的人使用应该有不同的权限。有人就能看,有人就能删除,有人就能修改,有人就能增加。而且更特殊的是,科长能录入负值,其他人不能录入负值。这些很细的功能权限都要分配到。字典权限的分配。有人就能看,有人就能删除,有人就能修改,有人就能增加。报表权限。有的人能看这张,有的人能看那张。更深入的是:有的人能打印这张,能导出这样。有的人不能导出数据。

管理,管理,就是定规则,然后执行。所以权限是定规则过程,执行就是日常使用了。

9、还有一些公共业务函数和使用公共数据库连接池,就放在公共模块中,让普通业务程序员调用。做OpenApi,开放的web服务,供外部实现mash-up(一个网站或应用程序,将来自多个随需应变平台的工具组合起来创建新功能)。

10、还有一些外围的功能,如软件加密,导入用户以前的数据,安装数据库而不是恢复备份,标示这个软件是什么版本打了什么补丁,这样在追查错误时比较容易判定是什么版本。

还有一些,就是登陆日志记录,软件操作错误就把错误记录下来,把界面屏幕抓下来。

当然,如单据审批工作流,单据回溯追单一查到底关联查询,如短信的结合,如单据确认消息发送,这些都是外围的一部份,但却是很重要很实用的功能。


web开发平台之顿悟

它山之石,可以攻玉。还是来看看salesforce的web开发平台吧!在《创建随需应变的应用程序:Force.com 平台简介》中主要说明了web开发平台实现一个招聘程序的过程。

定位给业务人员使用的。对技术要求较低。不过,我想在其内部一定有一层清晰的开发平台。也就是说,其实质是用两层平台来分别应对简单易用和功能强大性。这两层平台之间又是相互联系的,即面向业务人员用的这层平台很可能是由背后的平台生成简化而来的。如下图所示的两层平台,分别应对简单易用和功能强大性。

由此可见,先有一个功能强大的开发平台,由它来应对复杂的功能。然后由此生成简化一个面向业务人员使用的平台。由这两层平台同时提供给用户使用。同时使用在一个应用中。业务人员用简单易用的平台来完成一些基本的功能,技术人员用底层的平台来完成复杂多变的特性。再辅于开放的api,web服务供外部集成。这似乎是一种圆满的web开发平台解决方案也未可知。


Web开发平台一旦用起来了,可以很大的提高团队开发的效率。等大家实现了,你会发现,你给了程序员业务描述说明,里面包含要写的表和界面和功能操作说明,给了他数据库结构说明,数据库设计员写好SP和VIEW,普通程序员很快就能做出一个功能和改变一个功能。如果再加上这个普通程序员写的代码风格统一规范,小函数封装,界面和功能分离,即使没有什么OO和UML,这个产品仍然容易定制和修改。作为一个技术架构师,就是提供工具和公共功能,并且联合数据库设计师或自己合并担当数据库设计, 使软件就高性能、稳定、安全、可裁减修改。一个软件的终极目标不就是这些吗?如果这些都实现了,普通程序员的地位又是怎样呢?项目经理负责进度和业务描述和质量、架构师负责上述架构、普通开发人员和测试人员保证产品出来、售前售后培训人员调研客户需求培训人员、普通实施技术人员和普通支持人员做好支持。一个梦之队就产生了。中国的软件公司大部分都是50人以下,UML、OO、模式、软件工程,都是不现实的。从目前来看,不乏项目经理,也不乏架构师,因为一个开发团队,只需要一个项目经理和一个架构师。而目前中国软件业特别需要普通程序员。但是很低的工资很少可做的工作,对于本科毕业的大学生来说,这简直就是浪费人才。但是,没办法。就像传统行业,现在特别缺技术工人,农民工太低,城市下岗人太老,本科生不愿意下车间,但是没有人愿意上职高和中专。这就是现状,你不接受也得接受。你接受不接受?我们唯一能做的就是利用现有的资源,把事情做到最好。中国人的奇迹一般都是这么创造的。


web开发平台之明天

毫无疑问,在不久的将来,web开发平台将依然在迷雾中前行。依然会有一批批执着的程序员抱着各种各样的美好梦想投身进来。几十年了,人月神话依然是一个神话。或许,这也象是永动机一样是个无解之题。或许,这只是看上去很美而已,永远无法落地成为真实。或许,它挑战了人类的极限,引来了上帝的笑话。

在社会分工越来越细的今天,想让业务人员来搭建自己的信息系统,这个方向本身就值得怀疑。当然,在中国,怀着各种各样目的,编造不可能实现的慌言,来蒙骗不懂得技术的人,这似乎成了一种主流。从早期的ERP到当今如火如荼SOA。使得用户不得不察亮双眼,来寻找自己的真正需要。

只要能真正提高编程工作的效率,就会受到用户的青睐,就会有持久的生命力和存在的价值。

发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)

表情