实体操作

1.概念

实体操作定义为对某种实体的操作的抽象,一般来说对应一次http请求。例如,用户实体有一下几个操作:列表、编辑、查看等等。用户请求执行某个操作的时候,会根据操作的信息,触发从struts action开始的一系列方法调用。而操作权限的控制实际上就是对行为主体是否能够使用某个操作的限制。操作定义中配置了表单验证逻辑、操作影响的实体属性等信息,是系统中最重要的概念之一。这个模型在metawork中的实体类是:net.lingdot.metawork.core.entity.meta.Operation。

2.属性

属性名称 中文含义 备注
name 操作名称  
alias 别名 在一个试题类型范围内唯一,作为操作的标识
entityAlias 实体别名 在执行当前操作的时候,实体的别名,
例如一个本来叫做文章的实体,被用
作新闻,那么可以配置新闻编辑这个
操作的实体别名是新闻,从而覆盖文
章实体的本来名称
operationRule 操作规则 用XML描述的操作规则,在校验输入
的时候会从请求参数中过滤这里指
定只读了的属性参数,另外一方面
在处理Json/XML输出的时候会控制
只序列化这里指定了的属性。另外,
也根据这里的配置做了一些表单自
动控制的工作
metaEntity 所属元实体  
validateRule 校验配置 struts2方式的校验配置
common 是否通用操作 通用操作不属于某个元实体,
而是在运行时根据当前请求确定
method XML描述的操作要调用的Action方法配置 可以配置不同方式的HTTP请求调用的Action方法

3.初始化

系统第一次启动初始化的时候,会添加4个通用操作(随着系统的发展可能会越来越多),分别是:通用编辑、通用列表、通用查看、导出Excel。这些通用操作都有一些默认的行为,在后面介绍。另外,系统初始化的时候还会根据需要初始化一些特定实体的其他操作。

4.特殊属性说明

操作有一些属性配置使用XML来描述,具体如下:

4.1.operationRule(操作规则)

在操作的编辑页面,操作规则是用一个树状编辑器来编辑的,最终保存到数据库是XML形式。

举例说明之,看用户实体的个人信息编辑操作的规则:

<?xml version="1.0" encoding="UTF-8"?>
<Rule>
	<field name="addDate"/>
	<field name="author"/>
	<field name="category">
		<field name="id"/>
	</field>
	<field name="content"/>
	<field name="id"/>
	<field name="link"/>
	<field name="name"/>
	<field name="picture"/>
	<field name="summary"/>
</Rule>

可以看出,操作规则的描述采用了树形的结构。假设这是实体A的某个操作的规则,那么这些配置表明在执行这个操作的时候,可以查看以及编辑上面的每一个field元素的name属性指定的实体属性。前面在关于实体属性的一节中我们曾经说过实体属性通过relatedEntityType属性最终关联成了一颗树,此处其实就是在A实体的整个属性树上从根开始选取了一部分属性(其中当然包括属性的属性,例如category属性的id属性)。另外,在field元素上可以加入一系列的其他属性来描述操作规则的其他方面:

属性名 可选的值 说明
readOnly true或者false 指定一个属性是否只读,可以用于表单项控制,默认为false
hidden true或者false 指定一个属性是否隐藏,可用于表单项或者列表的列的控制,默认为false
default 字符串,或者形如%{#session.currentUser.id}的表达式 属性的默认值,可以用于表单控制

4.2.validateRule(校验规则)

在操作的编辑页面上可以直接编辑校验规则的XML描述。这个XML和struts2的校验器需要的XML配置语法是一样的。例如:

<?xml version="1.0" encoding="UTF-8"?>
<validators>
	<field name="entity.name">
		<field-validator type="requiredstring">
			<message>用户名不能为空!</message>
		</field-validator>
	</field>
	<field name="entity.email">
		<field-validator type="email">
			<message>电子邮件不正确</message>
		</field-validator>
	</field>
</validators>

如果这个操作对应到了一个表单页面,那么表单提交的时候会自动触发校验。

4.3.method(方法配置)

方法配置在操作规则编辑页面也是直接以XML的形式出现的。例如通用编辑这个操作的方法描述如下:

<?xml version="1.0" encoding="UTF-8"?>
<MethodConfig>
	<method name="edit" type="GET" default="true"/>
	<method name="save" type="POST"/>
	<method name="delete" type="DELETE"/>
</MethodConfig>

含义很明显,当以GET方式请求执行该操作的时候,调用action的edit方法,以POST方式请求执行该操作时调用save方法,以此类推。

5.通用操作

系统初始化的时候初始化了一些通用操作,下面分别描述:

4.1.通用编辑

这个操作可以用于实体的编辑。各属性值如下:

属性名称
name 通用编辑
alias edit
entityAlias null
operationRule 值为null,但在程序中处理为可以显示并编辑当前实体的简单属性以及关联属性的标识
metaEntity null
validateRule null
common true
method
<?xml version="1.0" encoding="UTF-8"?>
<MethodConfig>
	<method name="edit" type="GET" default="true"/>
	<method name="save" type="POST"/>
	<method name="delete" type="DELETE"/>
</MethodConfig>

4.2.通用列表

这个操作可以用于实体的列表。各属性值如下:

属性名称
name 通用列表
alias list
entityAlias null
operationRule 值为null,但在程序中处理为可以显示并编辑当前实体的简单属性
metaEntity null
validateRule null
common true
method
<?xml version="1.0" encoding="UTF-8"?>
<MethodConfig>
	<method name="list" default="true"/>
</MethodConfig>

4.3.通用查看

这个操作可以用于实体的查看。各属性值如下:

属性名称
name 通用查看
alias list
entityAlias null
operationRule 值为null,但在程序中处理为可以显示并编辑当前实体的简单属性和关联属性的标识,所有属性只读
metaEntity null
validateRule null
common true
method
<?xml version="1.0" encoding="UTF-8"?>
<MethodConfig>
	<method name="view" default="true"/>
</MethodConfig>

4.4.导出Excel

这个操作可以用于实体导出Excel。各属性值如下:

属性名称
name 导出Excel
alias exportExcel
entityAlias null
operationRule 值为null,但在程序中处理为可以显示并编辑当前实体的简单属性和关联属性的标识,所有属性只读
metaEntity null
validateRule null
common true
method
<?xml version="1.0" encoding="UTF-8"?>
<MethodConfig>
	<method name="exportExcel" default="true"/>
</MethodConfig>

5.其他

在请求执行一个操作的时候,如果该操作是通用操作,那么会复制一份这个通用操作对象,并把当前实体对应的metaEntity设置到这个复制结果上,后续的执行过程就和非通用操作相同了。

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

标签

 
(没有)