数据接口
接口详情请参考第五章节《接口和样式参考.docx》
1、createSourceAttribute
接口用于存储资产来源属性:资产上架页,订购页都可能用,比如Astro轻应用资产上架页用于存储用户鉴权信息。
2、querySourceAttribute
接口用于用户查询来源属性值,资产上架页,订阅页都可能用。
3、filterSourceAttribute
资产上架过滤已被使用的来源属性:以Astro轻应用资产为例,因为不允许同一个资产对象多次被上架,此接口用于过滤已被上架过的资产对象,资产上架页调用。
4、querySubscriptionSourceAttribute
接口用于业务用户根据订阅实例号查询商品和用户属性,订阅页调用,查询订阅自定义属性。同时对订阅实例号与当前用户信息进行校验
5、notifySubscriptionStatus
接口用于适配器通知订阅实例状态,订阅页调用。
变更:为适配多来源底座,在通知订阅状态时,新增sourceId参数作为某一来源下的订阅实例状态,用于区分多来源部署状态划分。
6、recordLog
记录接口日志及操作日志。
7、uploadOBSObject
存入OBS对象,适用于ServiceStage类来源部署时,存入私仓中。
8、downloadOBSObject
获取OBS对象,适用于ServiceStage类来源发布时,从私仓中下载。
9、createOBSBucket
创建OBS桶,适用于serviceStage类安装时使用,创建的OBS桶信息存储进用户级来源属性信息内,每次进行安装时,校验当前用户当前来源下的‘User’级属性信息内是否存在桶信息,存在则直接使用,不存在则创建OBS桶,将桶信息存储进当前来源User级来源属性信息内。
10、fileDownload
附件下载接口,屏蔽基线接口校验,直接从租户公仓下载资源。
11、交互脚本(用于资产管理各个阶段调用适配器逻辑)
命名规范:适配器名称__Interaction
注意:交互脚本命名取适配器命名,否则在安装适配器时无法自动获取脚本脚本,需手动添加适配器交互脚本数据。
格式定义参考:
①提交资产上架申请
exportfunction submitAsset(sourceAttributes:object, sourceId:string):void{
// 实现资产上架时校验或其他操作
}
② 撤销/驳回资产上架申请
exportfunction cancelAsset(sourceAttributes:object, sourceId:string):
void{
// 实现资产上架驳回时校验或其他操作
}
③ 资产下架成功
exportfunction unshelfAsset(sourceAttributes:object, sourceId:string):
void{
// 实现资产下架成功时校验或其他操作
}
④ 资产上架申请成功
exportfunction submitAssetSuccess(sourceAttributes:object, sourceId:string, subjectId:string):
object{
//实现资产上架申请成功是需要触发的操作,新增入参subjectId为来源用户,因审批人发生变更,无法获取发布者信息,故添加入参。
}
⑤资产提交订阅申请
exportfunction subscribeAsset(sourceAttributes:object, sourceId:string):
void{
// 资产提交订阅申请时校验或其他操作
}
⑥ 撤销/驳回资产订阅申请
exportfunction cancelSubscribeAsset(sourceAttributes:object, sourceId:string):
void{
//撤销/驳回资产订阅申请时校验或其他操作
}
⑦删除资产申请
exportfunction deleteAsset(sourceAttributes:object, sourceId:string):void{
// 实现资产删除时删除相关附件或其他操作
}
交互脚本方法存在返回值时,根据业务需要在基线触发交互处,接收返回数据,并进行处理操作。
7,基线触发脚本:CP_DS__offeringPublishApplication
交互方式:
//调用适配器交互方法
const reservedField2 = dataParse['offering']['reservedField2'];
const sourceAttributes = dataParse['sourceAttributes'];
if(reservedField2 && sourceAttributes){
const sources =newQueryAssetSourcesList().run({ id: reservedField2 }).sources;
if(sources.length ==0){
throw new I18nError('CP_DS__NotFoundSource');
}
const interactionScript = sources[0].interactionScript;
if(interactionScript &&Object.keys(require(interactionScript)).indexOf('submitAssetSuccess')!=-1){
const sourceAttributesTmpl =require(interactionScript).submitAssetSuccess(sourceAttributes, reservedField2, owner);
if(sourceAttributesTmpl){
dataParse['sourceAttributes']= sourceAttributesTmpl;
}
}
}
此交互方式触发的适配器方法为submitAssetSuccess,并使用了该方法的返回值,回写进dataParse['sourceAttributes']。其余方法的触发调用与此类似,只需要变更需要触发的方法名称即可。