普元的EOS我们也曾经试图协作和商讨过,但正像yuxie所说的,偏离了OO,更像面向过程,而且对于开发人员来说,上手不是那么简单,从某种程度来说,更加复杂,而且经过我们一段时间的评估,中间还有一些常见的企业级问题不能解决。当然,EOS能够发展到现在,我已经相当佩服,包括一种新的理念和他们的投入。

诸如IBM这类企业,他们是做底层平台的,虽然也有一些业务倾向,但毕竟不是专业,而我们需要的是他们的底层支撑,我们要把业务层专业化。

看来我对这个问题认识还是不够仔细。谢谢zjsun的回复

其实这样的平台构件早就出来了,但是出于中国的实际情况,无法在短时间内做进一步推广.

建议登陆 http://www.mybo.org/
http://www.mybo.com.cn/

你所提出的几点问题,在这个平台中已经非常成熟了.

业务平台倒没见过好用的。

到见过一个工作流平台是我见过的最接近大家所谓的“平台”了。

就是这个东冬:Joinwork,与J2EE各层面结合的不错,也支持OO。

比较佩服他们敢于直接让别人下载使用,网上的演示版本也是完整特性展示。国内公司能做到这一点的不多。

>
>
> 建议登陆 http://www.mybo.org/
> http://www.mybo.com.cn/
>
> 你所提出的几点问题,在这个平台中已经非常成熟了.

刚上去看了看,除了售前宣传资料,看不到实质内容。演示站点也进不去,估计不柞样。看都不敢给人看,呵呵。

申明:我所指的是“业务构建”,而非“业务构件”
避免大家概念混淆。

我和我的同事在2001年和2002年之间干过和zjsun类似的事情,
后来失败了,
有各方面的原因,
其中最主要的就是管理方面的原因和开发人员自身素质不够,
当时我们实现的是可视化数据建模,
自动生成数据操纵组件比如EJB,
当时用的是Jonas调试,
根据图形化的工具编辑显示用的Xml,
自动生成jsp,
自动生成各种“模”的修改事件方法,
能够支持将很简单的脚本语言编译成Java代码,
代码包括中间层的处理和前台事件的处理,
还包括事务的处理,
。。。。。。
做这个东西真的比较麻烦,
后来也见识过不少其它公司做的类似于这种目的的产品,
但是都不太理想,
现在埋头做这个产品不行,
非得在多年的大量实际开发经验中获得丰富的认识才能够更好开发出有用产品,
光有注重于对各种开发思想的研究而没有大量实战经验不行,
光埋头苦干不注重新的思想吸收也不行,
真的需要一定的功力,
对于技术方面来说,
我感觉你可能要从各种业务功能实现中跳出来,
变成各种规则的定义和解释执行,
还有就是丰富的接口定义,
另外建议你先从简单点的做起,
不要试图一下子整个平台能够完美建成,
还需要一定时日的,
希望你能够成功啊!

_对于这么一个构件平台,是不是应该加上一条需求:为了加快开发人员上手,加快开发速度,构建平台应该是面向数据库操作的,而不是面向对象的?


这位哥们分析最透彻。

个人看还是方法论方面的问题。既然是面向对象,也须知道对象的不稳定性。用哲学术语讲,就是形而上的概念向来都是在不断超越与被超越。

为一个单纯目的“加快上手,加快开发速度”而搭建的平台,自然有其不足之处。依靠它来解决它专长之外的问题,正如为搞阶级斗争全盘接受毛思想的人突然被要求去搞存在主义一样境遇尴尬。

老BanQ的回答文不对题,瞎扯!
J2EE能符合楼主的这些条件吗。
不要总是装成一个J2EE专家的样子。

> 业务构件平台……
> 国内一些电信软件开发商使用了一个号称 银弹
> 的面向构件的开发平台,叫做EOS。这个东东设计了一个基于J
> EE的框架,把常用的操作封装成一个个的构件,并同时有相应
> IDE支持。系统在运行时通过XML的配置定义数据结构和业务?> 程,调用其写好的构件,输出XML数据流,并通过tag展现到we
> 层。实际工作中这个东西确实有方便的地方,加速了系统的开
> ⒐獭2还畲蟮奈侍饫戳耍辛苏飧龆髦螅械南低
> 分析和设计就跟OO无关了,所有工作只要围绕数据库实体模型
> 淳OK了,调用个数据库操作的构件(比如执行sql的构件,写
> sql语句),输出结果……用的过程感到很失落……
> 没有了OO,实际应用过程中自然有好多的问题,构件复用粒度
> 螅斐闪榛钚院艿停导士⑺俣群孟褚部觳涣硕嗌佟U
> 个号称
> 银弹的东西自然被骂了好多,但是它确实能满足我们的需求,
> 坪跻材苈懵ブ魉档哪切┬枨蟆?> 这里我就不明白了,对于这么一个构件平台,是不是应该加上
> 惶跣枨螅何思涌炜⑷嗽鄙鲜郑涌炜⑺俣龋菇ㄆ教ㄓ
> 该是面向数据库操作的,而不是面向对象的?

这玩意速度快吗?如果象电信那种业务复杂的东东,估计读一次XML都要半天了。

做这个东西需要优秀的技术实力 和丰富的业务经验知识,这些总能解决
但是按照目前的具体情况,很多公司的流程都不规范,解决这点最难

>J2EE能符合楼主的这些条件吗?

J2EE当然符合楼主这些,使用realmethods Jdon 等之类快速开发工具就可达到分合自如。

难得看到这么多人关注构建平台,做了快四年,发表点想法;

OO,首先说OO,OO本身就是面向编程的,如果业务过程的数据处理也要OO肯定是快不了的;
粒度,粒度的掌握极其重要,太大太小都出问题,粒度太小,速度肯定上不去,画程序肯定没有Ctrl C Ctrl V快
策略,数据是核心,表现更重要;数据处理是构建平台的核心,如果你预先定义了规则,肯定没机会啦,只能做做公文流转之类的Workflow,一切都要回归数据;表现是头痛的东西,如果还要标签,还要Jsp/Asp之类的,那你在构建什么?不要让开发人员去写页面,没人认为写页面能够进行快速开发
沉淀,构建平台说实话不是依据完整的设计开发出来的,而是沉淀出来的,基于最为简单的设计思想(也许是最美的),而后为这个简单的核心添加更多的简单的东西,最后成为还算简单的东西(对开发人员而言);不要奢想让客户的办公文员去开发软件,适度复杂是最可能的,不过牢记复杂只为复杂目标而存在
速度,构建平台如果开发速度不行,将会失去一半市场机会,速度快不仅仅指开发,更重要是测试/跟踪,开发中解决问题的时间一般不会少于开发时间;
技术,构建平台肯定是低技术的,能降低到多少就看各个设计者的想法,0编码是可能的,不需要掌握编程语言是应该的;

还好国内在构建平台上还不算落后,做的人也越发多;

有兴趣可以看看我们公司的产品
上海群萃软件有限公司

如楼上所说,平台确实是沉淀出来的
不要妄想平台实现100%的功能

dongqi_zhao@hotmail.com

开发框架

Ver 1.1


基于经验,有如下认知:

人员能力不一,特别有创造力的很少。
同样的工具,不一样用法,不一样的效率。
对于人员素质,能够快速上手即可。对普通员工的要求越高,说明公司的开发模式越差。

关于质量,做如下保证:
90%的常规代码自动生成。手写的东西出错几率大。
通过迭代,原型,业务对象分分析,确定需求。此阶段所有代码自动生成,不做任何手工编码,但系统能运行。

接下来,少量编码,界面美工,完善。

这些的实现,赖以完善的基础框,他提供快速的开发,测试,无缝集成,发布。


会写select语句的人员不能说他就会开发。。
但是,高效的模式就能做到:
对员工做短期培训,便可达到会开发的水平。


设想的开发模式:
功能完善的基础平台,其上集成产品构件。就像windows,在上面可以安装、卸载各类应用软件一样。
所以,产品的开发,只要遵从给出的模式,就应当无缝集成。


目标:
1. 提高开发、测试、集成、发布之效率
2. 产品模块化,集成无缝化
3. 通过迭代,快速的代码自动生成技术,提高项目化软件的可控性。
4. 这是一套生成j2se代码的产品,对任务关键型不适用,但这并不说他脆弱。

功能:
1. 基础功能:
1. 1数据库访问
1. 2对象
1. 3技术框架
1. 4代码生成
2.
2. 扩展功能
2.1多web应用集成,单点登陆
2.2权限控制
2.3参数引用

3. 附件


功能介绍:
本框架提供根据数据库表,自动生成代码的功能。数据库目前支持Oralce、MsSql、MySql。生成代码基于Struts框架,代码是完全的J2SE模式。包括jsp界面(add、list、update),struts-config.xml,action类(add、list、update、delete),form类,dao类(数据访问对象),业务对象(通数据库表格字段一一对应),master类(封装业务逻辑)。

1.基础功能:
1.1 数据库访问
jdbc的统一数据库访问模式,无疑问应用的跨数据库特性提供了有力支持。本框架提供了一套数据库连接池技术,可以为不同的产品模块指定不同的数据库连接。
配置文件实例:

how to get the config file
add the follow java options
#-DdbConfig=$SAVED_PATH\dbprop.txt
E.G.
#-DdbConfig=c:\db\dbprop.txt
by default,it get config file from c:\dbprop.txt
#
#
com.virtual.test.driver=oracle.jdbc.driver.OracleDriver
com.virtual.test.url=jdbc:oracle:thin:@10.5.5.25:1521:shsw
com.virtual.test.user=vopak
com.virtual.test.password=vopak2004
com.virtual.test.size=10
com.virtual.test.database=ORACLE


default.driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
default.url=jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=northwind;SelectMethod=cursor
default.user=sa
default.password=sa
default.size=10
default.database=MSSQL

通过配置文件,指明数据库类别(额外属性,供数据库解析使用),连接属性,连接池的id,如com.virtual.test,default,若找不到指定的连接池的id,则返回default的配置。
代码实例:
public static DepartmentDAO dao = new DepartmentDAO();

public static java.util.List findAll(int start, int range) throws
Exception {
Map map = new HashMap();
List list = new ArrayList();

ConnPool cp = ConnPoolMgr.getConnPool(dao.DB_ID);
Connection conn = cp.getConn();
try {
list = dao.listAllObjects(conn, start, range);
}
finally {
cp.freeConn(conn);
}

return list;
}


1.2 对象
针对java语言开发应用,有这么两类极端的、低效的方式:A. 大多数从windows桌面应用开发转过来的人员,停留在数据纪录集层面,jsp页面到处可见sql语句;B. 疯狂的运用所谓的设计模式,遵从死板的格式,却没有快速的代码生成做支撑。
本框架,运用了一些基本类概念:A. 每个数据库表格,对应一个业务对象类,该类是最基本的java bean,包含set、get方法。B. 针对此业务对象类,关联出两个类:数据库访问类DAO,业务方法类MASTER。DAO类负责数据库访问,指明数据库表格―业务对象的关联关系,基本的增删改查功能;MASTER则是对业务方法的封装,提供了创建、查询、更新、删除等基本方法。

1.3 技术框架
基于Struts框架,代码纯J2SE形式。


PublicForm继承自ActionForm,实现了当前登陆用户的统一获取(getUserId()),分页显示参数的统一传递(getStart(),getRange()),功能扩展参数(getDoType())。

PublicAction继承自Action,附加权限的判别,异常处理,日志纪录等功能
e.g.
<action name="stuentForm" type="com.virtual.test.action.StuentAddAction" scope="request" path="/test/stuentAddAction">
<forward name="list" path="/test/stuentListAction.do?doType=0" />
<forward name="add" path="/test/stuentAdd.jsp" />
<forward name="resource" path="2004105001002" />
<forward name="operator" path="201" />
</action>
通过resource,operator获取当前的资源,操作,进而进行权限鉴别。


1.4 代码生成



2.扩展功能
2.1 多web应用集成,单点登陆
实现简单的SSO,即通过COOKIE共享登陆用户信息。

2.2 权限控制
提供用户管理,角色管理,授权管理


2.3 参数引用
针对最常见的主从关系,实现一种快速的引用方法,快速生成下拉框、复选框、单选框,弹出式窗口等。

3. 附件
功能演示avi,公共jar(struts 1.1,Oracle、MsSql、MySql jdbc driver),本框架核心jar(open.jar),全套源代码。
安装指南.doc,代码结构分析.doc,平台功能.doc。