整体思路
- 针对每个数据源,创建REST Service。
- 在页面上,针对每一个数据源,创建一个ADP(Array Data Provider)变量。查询的时候,执行以下步骤:
- 调用相应的REST Service
- 调用完成后,将结果通过assign赋予ADP变量。
- 在页面上,针对最后要显示的表,创建一个ADP变量。该变量用来显示结合后的结果集。
- 编写JS函数,将第二步创建的ADP变量作为输入参数输入到函数中。通过多层循环,将结合后的结果集作为数组返回。
实现步骤
- 这里我们先用ORDS创建2个REST Service,一个基于DEPT部门表,另一个基于EMP员工表。
- 部门表对应的REST Service:
- 员工表对应的REST Service:
- 新建空的VBCS应用
- 新建根据DEPT和EMP的REST Service,分别新建VBCS的Service:
- 新建DEPT的Service,填入REST URL
- 自动解析得到Server信息,无需修改
- 输入有意义的Server Name
- 测试REST Service,将返回Response报文保存为Example,完成创建。
- 新建EMP的Service是类似的,略。完成后的状态如下:
- 新建DEPT的Service,填入REST URL
- 部门表对应的REST Service:
- 新建页面(略)
- 在页面上新建2个ADP,分别用来存放DEPT的数据和EMP的数据。此处以DEPT为例,首先新建对象类型的Type
- 在新建的Type下面,根据DEPT的表定义,新建3个字段deptno、dname和location
- 新建deptType类型的变
- 为新建的ADP变量指定Item Type,选择表的主键或者唯一字段作为Key Attribute
- 重复以上步骤,给EMP表也创建相应的ADP
- 在页面上再新建一个ADP,用来存放join之后的DeptEmp数据。因此这个ADP需要包含DEPT和EMP字段的合集。
- 在画面上新建查询按钮
- 对DEPT的Service进行调用
- 调用REST DEPT API之后,将结果通过Assign的方式保存到DEPT的ADP中
针对EMP,执行相同的操作