使用高代码服务编排自定义API
工业数字模型驱动引擎-数据建模引擎(xDM Foundation,简称xDM-F)不仅为用户提供了丰富的标准API(如数据实体API、关系实体API、系统管理API),还提供了高代码的服务编排能力,适配Java和JavaScript类型服务编排。当iDME提供的标准API无法满足用户的业务需求时,用户可使用服务编排能力编排原子API形成一个跨实体(表)的组合API,提高应用开发的速度与质量。
以如下示例场景及JavaScript类型服务编排为例,指导您如何使用高代码服务编排自定义API。
示例场景
假设在应用运行态有如下数据实体和关系实体,并基于这些实体创建了若干实例。希望自定义一个API,该API可根据票价和余票的具体值,查询票价≤票价具体值,余票≥余票具体值的电影院和影片信息,分页显示。例如,查询票价≤19.9,余票≥8的电影院ID、影片ID、票价和余票信息。
|
实体类型 |
实体名称 |
说明 |
|---|---|---|
|
数据实体 |
英文名称:Cinema 中文名称:电影院 |
用于存储电影院信息,如部门、收入等。 |
|
英文名称:Film 中文名称:影片 |
用于存储影片信息,如电影导演、主演、简介、语言、片长、类型等。 |
|
|
关系实体 |
英文名称:Play 中文名称:上映 |
为Cinema(源数据实体)和Film(目标数据实体)建立多对多关系。 关系实体属性包含票价(price)和余票(remain),均为数值型属性。 |
步骤1:创建高代码编排
- 登录应用运行态。
- 在左侧导航栏中,选择,单击“创建”。
- 在展开的“服务定义”页面,设置如下主要信息,其他保持默认,单击“保存”。
图1 创建服务编排
表2 参数信息 参数
说明
API英文名称
输入“QueryByPriceRemain”。
API中文名称
输入“按票价和余额查询”。
API英文描述
输入“Query by price and remain”。
API中文描述
输入“按票价和余额查询”。
API类型
选择“JavaScript”。
- 选择“脚本显示”页签,根据系统提供的参考样例,输入如下JavaScript编排脚本,单击“保存”。
var request = ""; var sqlCount = "select count(*) as count from TestDME_Play_REL p "; var sql = "select c.name as cinema, f.name as film, p.price, p.remain from TestDME_Play_REL p "; sql += "left join TestDME_Cinema c on c.id = p._sourceid "; sql += "left join TestDME_Film f on f.id = p._targetid "; if (request.price != null && request.remain!=null) { sql += " where price <= {#price} and remain>={#remain} "; sqlCount += " where price <= {#price} and remain>= {#remain} "; }- TestDME_Play_REL/TestDME_Cinema/TestDME_Film:表示Play关系实体/Cinema数据实体/Film数据实体在数据库中的表名称。
- id/name/_sourceid/_targetid/price/remain:表示实体表中的属性名称,即唯一编号(ID属性),名称,源数据实体(Cinema)的唯一编号(ID属性)、目标数据实体(Film)的唯一编号(ID属性)、票价和余票。
- {#price}和{#remain}:数值型属性(票价和余票)的写法。如为文本类型属性,应修改为'{#price}'和'{#remain}'。
- 在“模拟API-输入参数”栏中,输入price和remain的参数值,单击“保存并执行”,验证JavaScript编排脚本。
图2 模拟API
returnTotalCountFlag参数是系统自动添加,如果returnTotalCountFlag为true,输出结果将返回数据实例总数。
- 选择“服务预览”页签,输入price和remain的参数值,单击“运行”,预览生产环境的运行效果。
图3 服务预览
- 选择“服务发布”页签,确认该服务编排的基本信息、请求参数说明、响应参数说明、请求示例、正常响应示例等信息无误后,单击“发布”。
步骤2:验证服务编排
- 在应用运行态左侧导航栏中,选择,进入全量数据服务页面。
- 在“分类”栏中,展开服务编排,找到并选择刚创建的服务编排(QueryByPriceRemain)。
图4 全量数据服务
- 在API列表栏中,单击API英文名称,查看QueryByPriceRemain API的详细信息。
图5 API详情
步骤3:使用服务编排API
根据QueryByPriceRemain API的详细信息,在用户应用的管理系统中构造如下请求示例:
POST http://{Endpoint}/rdm_{appID}_app/services/rdm/basic/api/customservice/QueryByPriceRemain/execute/20/1 Content-Type: application/json Content-Length: Content Length X-AUTH-TOKEN: XXXXXXXXXX { "params": { "price": 19.9, "remain": 8, "returnTotalCountFlag": true, } }
其中,{Endpoint}表示数据建模引擎所在域名或IP地址,{appID}表示应用ID。