前言

Metawork是什么

看到Metawork这个名字,也许你会毫不犹豫的说:"嘿,又一个框架",在当前开源社区这样繁荣昌盛的状态下你能比其他框架做的好吗?

上面的问题的答案是:Metawork不是一个框架,而只是一个应用(It's not a framework,but a runnable application)。Metawork是建立在众多开源组件基础之上的一个应用,你不用做任何事情就可以使用系统中已经提供的强大功能(见"Metawork入门-开始体验"),当然也可以经过二次开发加入你自己的业务(当然,对于开发人员来说,后者才是最重要的)。

曾经有某牛人言道,一个框架,重要的不是告诉你能做什么事情,而是告诉你不能做什么事情。我想着就是Metawork作为一个应用,与所谓"框架"的不同。因为Metawork希望向你展示的,仅仅是他所提供的众多功能,这些功能为你的开发和使用可以带来便利。更重要的是,Metawork不在他所使用的底层框架(SSH)上面附加任何必须的限制,因此你可以使用Metawork,却毫不理会Metawork提供了什么(至少目标如此)。于是,如果你只是希望使用Metawork提供的上层功能,却不想采用其推荐的业务开发模式,那么,完全没有问题,你可以完全按照你自己的方式去开发,最终的结果是Metawork提供的及基本功能会运行在Metawork所推荐的业务模式下,而你自己开发的功能则运行在你自己的业务模式下。

总结起来,Metawork就是一个业务开发模式,再加上一系列的通用服务。

Metawork干了什么

明确了Metawork可能会在你的应用中处于什么样的位置之后,我们来大概看看Metawork究竟做了些什么。

在Metawork中,我们想向开发人员展示的,不是各个技术细节,而是一种新的业务开发模式。这种模式将业务抽象、建模成为"功能"、"操作" 这样的模型,然后基于这些模型,提供一些列的通用服务,最常用的是领域模型的CRUD。在底层,我们通过记录受管领域模型的结构、行为信息(元信息)来支持前面所说的业务模式。也就是说,Metawork提供的,是一种业务开发模式,再加上一系列的通用服务。

为了理解Metawork中的业务模式,首先来看看一个业务系统概括起来需要处理些什么问题:行为主体(Actor)、客体(Entity)、活动(Activity)三者相互之间的关系以及他们各自自身不同对象之间的关系。如下图所示:

图中,三个核心关注点是行为主体、客体以及活动。他们之间的连线上注明了对两两之间的关系的解释,这种解释同样放在三个核心自身于自身的一个环状关系线上面。

针对上面的问题,Metawork提出了自己的解决方案,建模的结果如下图:

图中的各个元素在参考手册中将会做详细的解释,在这里,只是向读者简单的展示一下其中的核心内容。从图中可以看到,我们把前面一张图中的"活动"这个元素建模成为"功能"和"操作"两个模型。简言之,功能和日常语言中的功能是一样的,例如说某系统提供了请假条管理功能;而操作,则对应用户的一次请求,例如删除某个请假条。Metawork提供了权限控制模块,可以控制行为主体所能够使用的功能,也可以控制一个行为主体使用某功能时所能够执行的操作。同时,我们在功能上面加入了数据范围定义,从而确定行为主体对操作对象的数据权限。

目前,Metawork核心主要提供了下列功能:行为主体维护、领域模型元数据维护、基本的CRUD服务,通用查询等等。

技术实现方面,基本结构是Spring+Hibernate+Struts2,外加许多的开源工具,例如Ext,dwr等等。具体的实现细节请参见参考手册。

最后想说的是,这是一个刚刚起步的开源项目。其中有许多值得改进之处,或者说一些因完全不对而应该摒弃的内容。非常希望有兴趣的朋友能够加入进来,共同推动其向前发展。也惟其如此,才能够让冠于项目之上的"开源"两个字,变得真正有意义。

团队
Group: Lingdot
Allan Zhang (allanz)
guyan6644@163.com
Jonney Xian (jonney)
jonney_82@163.com
亚运 祝 (zhuyy)
zhuyy0825@163.com
刘 洛麒 (llq667)
llq667@gmail.com
孙 海龙 (sunhl)
sunny.hl@163.com
宋颂 (ssong)
ss0070@163.com
张盈盈 (zyy200411)
04281118@bjtu.edu.cn
振强 许 (xuzz)
handstandboy2008@163.com
牛 俊力 (niujl)
05272140@bjtu.edu.cn
胡文锦 (cattyjin)
07122053@bjtu.edu.cn
苏 哲 (billy)
mvpierce34@gmail.com

标签

 
(没有)