0%

PageEditor数据标识

ExportTab 页面导出数据的backup逻辑中,特殊处理一下PageEditor数据,导出的PageEditor带有当前APP的标识,当前的Project如果没有打包App的话,则当前的PageEditor数据标识还是存的上一个App的标识。

需求背景

目前License针对的是每种套件的SDK接口层进行验证,但是创建了Project之后,在MEPER-Cloud环境中,是默认可以使用所有的SDK接口参数的,我们的套件的主要逻辑又是基于PageEditor数据的,所以将当前Project的依赖逻辑处理标识放在PageEditor数据中,增加当前PageEditorEntity中标注出当前的页面是从哪个套件或者App中导出的,作为一个可追溯来源的标识。

字段设计

针对PageEditorEntity模型新增两个字段,一个是来源App标识(SourceApp),一个是当前App标识(CurrentApp)。

SourceApp

项目创建的时候会选择空项目或者是基于MES的项目这种情况,则数据包中对应的PageEditor数据中,数据AppBase的这部分数据对应的SourceApp字段就是AppBase,若是选择的MES项目的话,则对应数据包中,AppBase部分的PageEditor数据对应的字段就是AppBase,而在MES中新增的PageEditor数据对应的SourceApp字段则为MES。

CurrentApp

当前字段的逻辑设计是为了追溯当前PageEditor数据来源设计的,当一个项目创建的时候,基于哪个App的数据包进行初始化的时候,则SourceApp就是去找对应的CurrentApp进行赋值。若是Project没有进行打包App处理的话,直接通过数据备份进行导出话,则当前CurrentApp字段为空,直接默认SourceApp就是之前的值。

如果当前的Project进行过一次打包App的话,则对应的数据中的PageEditor中对应CurrentApp字段都需要赋值为对应打包的App标识。而这个时候直接从数据备份中导出的话,则SourceApp将会自动变为当前Project创建的App的标识,导入到其他的Project中去。

字段逻辑

套件数据

系统默认的套件数据包中,PageEditor数据的SourceApp和CurrentApp数据都是对应套件App的标识。

AppBase

1
2
3
4
5
6
PageEditor:
{
"SourceApp":"AppBase",
"CurrentApp":"AppBase"
}

MES

1
2
3
4
5
6
PageEditor:
{
"SourceApp":"MES",
"CurrentApp":"MES"
}

新创建的Project

当用户创建新的项目基于对应的App,则对应的PageEditor数据字段应当是对应创建Project的时候的App。

例如如果是基于AppBase创建的项目:

AppBase 创建了 Project1

1
2
3
4
5
6
PageEditor:
{
"SourceApp":"AppBase",
"CurrentApp":""
}

创建完成后SourceApp是对应数据中的CurrentApp,而现在的CurrentApp字段则默认为空。

所以按照这个逻辑处理的话,SourceApp是一直有字段的,所以在这个时候使用数据备份导出当前的PageEditor数据的话,SourceApp是数据的,导入其他的Project的话,导入逻辑如果CurrentApp字段为空的话,使用SourceApp相当于溯源到上级项目

Project打包了App

当创建的工作空间进行了APP打包,那么在打包过程中可以通过PageEditor的SourceApp数据进行统计当前的套件使用情况,或者是来源的App情况,然后去溯源App对应的License。

而且打包过程中创建了App,则需要在数据中将PageEditor的CurrentApp字段都赋值为当前创建的App。

Project1 打包了 App1

1
2
3
4
5
6
PageEditor:
{
"SourceApp":"AppBase",
"CurrentApp":"App1"
}

所以当这个时候在备份数据中导出PageEditor的话,对应的CurrentApp字段就为当前的App,那么导入到其他的Project中的话,其他的Project中对应的PageEditor字段的
SourceApp就变成了当前的App(也就是App1)。

需求目的

记录了所有的PageEditor的这两字段后,当Project进行数据打包的时候,就可以根据PageEditor中的SourceApp字段作为依据产生对应的License。

如果是当前的Project项目是基于系统App创建的话,那么如果PageEditor的SourceApp有AppBase或者MES那么License产生的时候,应该自动默认包含这两个部分的套件。

如果当前的Project是经过SI二次开发的,而且打包了对应的APP的话,那么SourceApp对应的字段应该可以找到对应的App,然后通过对应的App产生的License进行重新产生当前Project对应App的License。