【
赵斌
原创,保留一切权利,转载请保留引用:
www.blogjava.net/zhaobin
,谢谢!】
浪潮楼上平台在国内还是比较有名气,在平台软件和工作流方面可以称为一流软件开发商,和上海普元EOS、起步软件(原来叫思维加速)、炎黄盈动、东方易维、华苓科技、东方通、山东中创等各有特色。
最近,《程序员》杂志主办的“软件中国2006年度风云榜”,浪潮Loushang平台V3.2荣获“2006年度最佳创新技术奖”。
在IBM的SOA培训,碰到了浪潮的兄弟黄兄(名字就省略了),兴致勃勃的介绍了一番Loushang平台,而后,有幸申请了浪潮楼上平台的试用帐号,试用了一番,感想颇多。虽然是试用,但只是试了试,并没有实际用,所以,还是用参观有感比较合适。
浪潮Loushang平台最新的版本是V3.2,目前在网上可以试用的是V3.1版本,黄兄也说V3.2有了不少的改进。我此次介绍的则是网上可以试用的V3.1版本。
1、 平台概念突出,其整体架构合理,简介如下:
a) Loushang Web组件,提供了各种常用的界面组件,如:表格、树、联动下拉框等。
b) Web应用框架,丰富的构件,采用N-Tie思想,核心基于服务的架构,有点类似Spring集成的框架,更多是技术框架。
c) 业务服务平台(BSP),业务框架,包含各通用业务模块
i. 组织机构,这部分还是做的不错的,详细说明见后。
ii. 权限模型,基于RBAC(基于角色访问控制)理论设计。
iii. 日历管理与业务流水管理
d) BPM产品,构建在BSP之上,提供表单和流程服务,包括:
i. 表单设计工具(form designer),基于WEB,采用HTML解析。
ii. 流程设计工具(process designer),基于WEB,采用applet,流程定义文件以XML格式存储,符合XPDL标准。
iii. 工作流引擎(workflow engine)
iv. 流程监控工具(monitor)
e) 模型驱动架构:MDA(Model Driven Architecture)包括MDA建模、业务应用模式的模型驱动表达、利用MDA描述生成运行系统、利用MDA进行构件之间的协作等。
2、
自主的
WEB
应用框架
这点和很多大量采用开源产品的公司不同,我很难评价是完全自主的Web应用框架更好,还是在开源框架的基础上进行适应性开发更好,各有利弊吧。
对于浪潮Loushang平台的开发团队这样能够保证资金和人力资源供应的公司,自主开发不但更容易从底层入手,解决系统级的问题,而且也能有效的满足业务的深层次应用,但对于一般规模的公司,则在开源的基础上进行开发效率更高,至少更容易聘用到合适的技术人员。
当然,我强烈反对将大量开源项目进行堆砌,每引入一个开源项目,都意味着同时引入了相应的技术风险,必须在深入剖析开源项目之后,确实彻底掌握了,可以驾驭了,开源项目才能为你所用,否则,则是埋下了一个个未知的隐患。
(WEB应用框架架构图)
其中的Command比较有意思,所有的命令都是以xxx.cmd来执行的,有点类似Struts的xxx.do,而且,在后台的性能监控中,可以监控到执行的每一个cmd命令的运行时间、运行次数,访问数据库的次数等,见下图:
3、
业务服务平台(
BSP
)
Web应用框架是一个技术上的Framework,而业务服务平台则将通用的、公共的部分提炼出来,形成业务系统的支撑,我们公司称之为“公共资源管理配置平台”。目前包括三部分,组织机构、权限模型、日历和流水号。总的感觉BSP只有这3部分内容,显得过于单薄了一些。
感觉其组织机构的部分做得挺细致,考虑了很多实际的业务需求,我就不详细描述了,下面这段文字直接从浪潮Loushang平台的网站上抄过来的,【浅蓝色的字是我的评论】
组织机构是企业级应用的基础,任何企业级应用的业务核心数据来源。
技术特性:
完整的组织机构模型。
科学合理的管理模型确保了组织结构管理在操作级的灵活性和知识级的稳定性。
支持直线制、职能制、直线-职能制、事业部制、模拟分权制、矩阵制等组织结构模式。允许用户根据自身战略选择适合自己业务需要的组织结构模式。【没有看到对各种模式是如何支持的,好像完全从应用软件层去支持各种模式,很难,不如在设计和API层支持更灵活】
支持组织结构规则(如上下级规则、不相容岗位等)的灵活定义。
提供了完备的组织结构版本管理功能,允许用户在若干年后查阅历史组织变更版本记录。【好像只能用于查看而已,没有什么实际用途】
系统内嵌了人事事件记录功能,对于部门的设立、撤销,员工的入职、升职、加薪、改序等提供了完备的人事事件记录,在此基础上支持对职工进行职业成长性分析。
支持直接下级排序(如下级部门间排序、下级员工间排序)和员工的全局排序(如根据领导岗位与非领导岗位进行排序)。
支持从不同的维度对组织结构进行观测,如从人力资源层面、计划、考核、销售管理、采购、库存等视角进行切分,并用图形方式显示。【这个功能倒是不错,不过没有看见】
支持组织结构构件的分布式部署和基于LDAP V3国际标准的组织核心级数据共享。【如果完全基于数据库,恐怕支持LDAP就有点悬了】
组织机构,定义了灵活的结构设计,绘制了灵活的抽象结构模型,提供丰富的接口,方便开发人员在此基础上根据业务需要定制开发,并能灵活扩展,以适应实际的业务需求。开发人员可以利用定义的上下级方式,方便的实现形成组织结构的树型结构,方便开发和维护。
权限模型则基于RBAC(基于角色访问控制)理论设计,目前产品大多如此,属于大众思路,RBAC规范中RBAC主要分为四个级别,分别为RBAC 0、RBAC 1、RBAC 2和RBAC 3。
RBAC 0又称为Core RBAC,实现的为基本的权限模型,如用户与角色、角色与资源权限、资源权限与资源、资源操作的关系的维护,同时提供基于角色的资源操作权限的校验,类似的伪代码:role.doPrivilege(Principle,Resource,Operation),相对来讲RBAC 0是比较容易实现的,在RBAC 0中进行权限校验时的关键就是根据用户的角色来检验用户是否有操作的权限。
RBAC 1中提出了角色权限继承的实现,虽然看起来只是增加了一个角色权限继承,但在实现起来系统的复杂度则是大大的增加了。
RBAC 2则更为复杂,RBAC 2中提出了角色权限互斥的问题,其实在角色权限继承的基础上我们就会考虑到这个问题,既然角色权限继承那么很容易出现权限互斥的问题,RBAC 2模型就是为了解决这个。
RBAC 3则没什么说的,因为它就是RBAC 1和RBAC 2都实现。
按照浪潮Loushang平台的《BSP技术白皮书》,其权限模型是实现了RBAC 3的,实际试用了一下,基本的功能还可以,比较高级的授权就不太方便了,而且RBAC 2角色权限互斥感觉不太好用。
把授权的对象分为功能资源管理和数据资源管理,功能资源管理对应功能点,通过功能点控制菜单项的显示以及进行权限校验,数据资源管理是要实现数据集的权限,也就是行权限或者部分行集合的权限,这点感觉每一普元EOS实现得好。
另外,这些功能资源(功能点)之间是有关系的,通常只有具有浏览权限后,才能具有删除权限。而在浪潮Loushang平台中,所有的功能点是平行关系,这点既不符合实际的业务需求,又增加了授权的工作量,而且容易产生人为的错误。建议应该在功能点之间建立相互依存关系,可能是个树型,也可能是矩阵。
至于在BSP的安全部分谈到支持XACML(eXtensible Access Control Markup Language)2.0 标准,恐怕就值得商榷了。
4、 BPM平台
现在平台必有BPM,而BPM则必称平台,好像成了相生相克的连理枝,这在我朋友银狐999的《论工作流与平台的发展怪圈》一文中已经有所论述。而且,在很多宣传资料中,BPM和Workflow是可以相互混用的,这里实际的含义应该是Workflow。
对于Workflow最重要的当然是流程和表单,虽然按照标准的工作流产品并不一定需要表单,但在国内,如果没有表单,恐怕工作流就很难卖出去了。
下面是基于浏览器的表单设计工具,功能偏简单了一些,勉强能用,远不如客户端工具功能强大,比较有特色的功能是可以添加细表单,而且只需要定义就可以使用,不需要编码。
浪潮Loushang平台V3.1的Workflow是用Applet来实现的,也还是满漂亮的,见下图:
比较有特色的流程可以导出,而且是将流程和相应的表单分别形成xml,然后压成zip导出,流程信息放在Flow_XXXX.xpdl和Flow_XXXX.xml中,表单则生成FormsManageData.xml和FormHtmlCode.dat、FormTemplate.dat文件。看了一下生成的xpdl文件,是基于XPDL 1.0的。能够将表单和流程导出,还是要下一番功夫的,这就需要相应的Schema定义和语法解析。流程导入、导出功能不但便于流程能够在各个项目中共享,也便于制作流程模版,也便于解决流程版本问题,总之,益处多多。
另外,其流程的历程、一些统计图表,是采用flash来显示的,我只见到上海携创采用类似的做法,显示效果美观,而且图像文件小,速度快,还是值得借鉴的。
5、 MDA模型驱动
MDA很火,那不是一般的火。
我一直都比较关注MDA的发展,2006年7月28参加IBM的2006年开发者大会,其中有一个专题讲座《MDA/MDD技术离您有多远?-罗学聪》【思维导图】,从这个标题就可以看出,MDA离我们还是有一定的距离,即使对IBM这样高端的厂商来说,MDD/MDA也属于比较前沿的技术,其主讲人也是专程从上海飞过来演讲,国内应用MDA技术的也还没有几家。
浪潮Loushang平台的MDA更多的处在Modeling & Code Generation这个层面。(参见《MDA/MDD技术离您有多远?》第7页)
浪潮Loushang平台能够在MDA领域有所尝试,还是很值得敬佩的,不要说整个浪潮Loushang平台所取得的成就,单就这一点而言,我就很敬佩平台事业部经理周恒。
我对浪潮Loushang平台没有深入研究,感觉更像是基于数据库表、业务对象、表单以及对应功能:列表、增、删、改、查的代码生成器。而且浪潮的黄兄说V3.2版本又有比较大的改进。
期待早日能在网上看到V3.2版本,期待增强型的MDA。
这次的参观就介绍到这里,期待中国的软件产业能日益发展、成熟、壮大。
【
赵斌
原创,保留一切权利,转载请保留引用:
www.blogjava.net/zhaobin
,谢谢!】
【
赵斌原创,保留一切权利,转载请保留引用:
www.blogjava.net/zhaobin,注明转载除外,谢谢!】