Dorado 7 : 06. DataPath(SEFC)

在之前实做主从维护界面中我们接触了DataPath,另外在@DataProvider与@DataResolver中我们也将DataPath与数据中的SQL做过类比。其实也可以认为它是XML中的XPath技术。主要用于描述如何提取、挖掘立体数据模型中的数据的表达式。

基本语法:
属性名1(参数1,参数2,..)[逻辑表达式1,逻辑表达式2,..].属性名2(参数1,..)[逻辑表达式1,..]..

除了上面的基本语法外,DataPath支持用户为其扩展语法——自定义片段。
关于DataPath的详细说明请参考: http://wiki.bsdn.org/x/HgAL

范例说明

下面我么通过一些实例了解DataPath的基本用法,首先我们设计的立体数据模型如下:

下面为正对上述立体数据模型定义的一些DataPath,我们解释一下它的含义:

表达式

含义

null(即空)

相当于直接返回被查询的数据,也就是整个集合

 *

同上

[#current]

表示顶层集合中的当前Department,也就是第三个Department(带红框表示是当前对象)

 #

同上

[#dirty]

表示顶层集合中所有在客户端被改变过的(包含被删除的)Department

#.employees

表示顶层集合中当前Department中所有的Employee,也就是第三个Department对应的员工列表

#.#employees

表示顶层集合中当前Department中的当前Employee,也就是第三个Department对应的员工列表中的第二个员工

departments(repeat)或者departments(R)

表示所有Department的集合,它表示循环整棵树,将所有的Department作为一个数组返回

.departments(R)

表示除顶层Department外所有其它Department的集合

#departments(R)

表示各层当前Department的集合

#departments(leaf)

表示最末端的当前Department。即通过不断的尝试获取当前Department中的当前Department,直到最末端那个Department

departments(R).employees[@.get("salary")>5000 && @.get("sex")=="male"]

表示所有Department中的薪水高于5000的男性Employee

departments(R).employees.id

表示返回所有Employee对象的id属性值的集合(DataPath并不总是返回实体对象,如本例是将值的集合返回)

Attachments:

DataPathTree.png (image/png)