目录
依赖包
安装GraphQL的工具
登录gql
导出生成json文件子
业务工程中导入示例代码
简介
通过调用导出接口,将设计器的设计数据与元数据打包导出到文件中。
提供了download/export两类接口。
依赖包
<dependency>
<groupId>pro.shushi.pamirs.metadata.manager</groupId>
<artifactId>pamirs-metadata-manager</artifactId>
</dependency>
安装GraphQL的工具
下载官网地址:https://github.com/Kong/insomnia/releases
登录gql
示例调用代码
mutation {
pamirsUserTransientMutation {
login(user: { login: "admin", password: "admin" }) {
needRedirect
broken
errorMsg
errorCode
errorField
}
}
}
导出生成json文件
执行GraphQL,直接返回导出数据。适用于通过浏览器直接下载文件。
按模块示例调用代码
请求示例:
mutation {
uiDesignerExportReqMutation {
download/export(
data: { module: "demo_core", fileName: "demo_meta", moduleBasics: true }
) {
jsonUrl
}
}
}
- module参数:模块编码;
- fileName参数:指定⽣成的json⽂件名称;
- moduleBasics参数:指定是否只导出模块基础数据,如果为true,只导出内置布局、模块菜单、菜单关联的动作。 如果为false,还会导出模块内的所有页⾯,以及页⾯关联的动作元数据、页⾯设计数据 等等。 默认值为false。
按菜单导出
mutation {
uiDesignerExportReqMutation {
download/export(
data: {
menu: { name: "uiMenu0000000000048001" }
fileName: "demo_meta"
relationViews: true
}
) {
jsonUrl
}
}
}
- menu参数:菜单对象,指定菜单的name。只会导出该菜单及其绑定页⾯,不会递归查询⼦菜单
- fileName参数:指定⽣成的json⽂件名称
- relationViews参数:指定是否导出关联页⾯,默认为false,只导出菜单关联的页⾯。如果为true,还会导出该页⾯通过跳转动作关联的⾃定义页⾯。
指定页⾯导出
mutation {
uiDesignerExportReqMutation {
download/export(
data: {
view: {
name: "xx_TABLE_0000000000119001"
model: "ui.designer.TestUiDesigner"
}
fileName: "demo_meta"
relationViews: true
}
) {
jsonUrl
}
}
}
- view参数:视图对象,指定视图的name和model
- fileName参数:指定⽣成的json⽂件名称
- relationViews参数:指定是否导出关联页⾯,默认为false,只导出菜单关联的页⾯。如果为true,还会导出该页⾯通过跳转动作关联的⾃定义页⾯。
导出组件
导出全部组件数据
mutation {
uiDesignerExportReqMutation {
downloadWidget/exportWidget(data: { fileName: "demo_widget" }) {
jsonUrl
}
}
}
- fileName参数:指定⽣成的json⽂件名称
- 注意:⾃定义组件的元数据归属于页⾯设计器(ui_designer) 因此导⼊元数据的模块(module)并不是业务模块。组件导⼊建议使⽤pro.shushi.pamirs.metadata.manager.core.helper.WidgetInstallHelper
导出全部组件⽂件
当开发环境,和导⼊环境的oss不互通时,可通过⼀下⽅法导出⾃定义组件的css和js⽂件压缩包,在导⼊时⽀持指定zip⽂件上传到oss,并替换导⼊组件数据中的css和js⽂件路径。
mutation {
uiDesignerExportReqMutation {
downloadWidgetFile/exportWidgetFile(data: { fileName: "demo_widget" }) {
jsonUrl
}
}
}
业务工程中导入示例代码
导入元数据示例代码
@Slf4j
@Order(Integer.MAX_VALUE-1)
@ConditionalOnProperty(prefix = "pm", name = "install.enable", havingValue = "true")
@Component
public class DemoAppMetaInstall implements MetaDataEditor {
@Autowired
private ApplicationContext applicationContext;
@Override
public void edit(AppLifecycleCommand command, Map<String, Meta> metaMap) {
if (!doImport()) {
return;
}
log.info("[设计器业务元数据导⼊]");
InitializationUtil bizInitializationUtil = InitializationUtil.get(metaMap, DemoModule.MODULE_MODULE/***改成⾃⼰的Module*/, DemoModule.MODULE_NAME/***改成⾃⼰的Module*/);
DesignerInstallHelper.mateInitialization(bizInitializationUtil, "install/meta.json");
log.info("[⾃定义组件元数据导⼊]");
// 写法1: 将组件元数据导⼊到⻚⾯设计器. 只有在安装设计器的服务中执⾏才有效果
WidgetInstallHelper.mateInitialization(metaMap, "install/widget.json");
// 写法2: 与写法1相同效果. 只有在安装设计器的服务中执⾏才有效果
//InitializationUtil uiInitializationUtil = InitializationUtil.get(metaMap, "ui_designer", "uiDesigner");
//if (uiInitializationUtil != null) {
// DesignerInstallHelper.mateInitialization(uiInitializationUtil, "install/widget.json");
//}
// 写法3: 业务⼯程和设计器分布式部署,且希望通过业务⼯程导⼊⾃定义组件元数据. 业务模块需要依赖⻚⾯设计器模块,然后指定业务模块导⼊
DesignerInstallHelper.mateInitialization(bizInitializationUtil, "install/widget.json");
}
private boolean doImport() {
// ⾃定义导⼊判断. 避免⽤于设计的开发环境执⾏导⼊逻辑
String[] envs = applicationContext.getEnvironment().getActiveProfiles();
List<String> envList = Lists.newArrayList(envs);
return CollectionUtils.isNotEmpty(envList) && (envList.contains("prod"));
}
}
Oinone社区 作者:数式-海波原创文章,如若转载,请注明出处:https://doc.oinone.top/designer/uidesigner/7294.html
访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验