数据被认为是企业发展和决策的重要资产。随着业务的不断发展和数据量的不断增加,企业通常需要将数据从不同的源头导出,并将其固化到产品中,以便进行进一步的分析、处理和利用。数据导出与固化的过程涉及到数据的提取、清洗、整合和存储,是确保数据长期有效性和可用性的关键步骤。
了解数据导出与固化的流程和方法对于企业具有重要意义。通过有效的数据导出和固化,企业可以更好地管理和利用数据资源,提升决策的准确性和效率,实现业务的持续发展和创新。本次讨论将重点探讨数据导出与固化的流程和关键步骤,帮助参与者深入了解如何将数据从导出到产品中,为企业数据管理和应用提供有力支持。
1. 数据导出与固化:将数据从导出到产品中的流程
1.1. pom依赖:
<dependency>
<groupId>pro.shushi.pamirs.metadata.manager</groupId>
<artifactId>pamirs-metadata-manager</artifactId>
</dependency>
1.2 将第⼆步下载后的⽂件放⼊项⽬中(注意⽂件放置的位置)。放置⼯程的resources
下⾯。例如:
1.3 项⽬启动过程中,将⽂件中的数据导⼊(通常放在core模型的init包下
⾯)。⽰例代码:
package pro.shushi.pamirs.sys.setting.enmu;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import
org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import
pro.shushi.pamirs.boot.common.api.command.AppLifecycleCom
mand;
import
pro.shushi.pamirs.boot.common.api.init.LifecycleCompleted
AllInit;
import
pro.shushi.pamirs.boot.common.extend.MetaDataEditor;
import pro.shushi.pamirs.core.common.InitializationUtil;
import
pro.shushi.pamirs.meta.annotation.fun.extern.Slf4j;
import pro.shushi.pamirs.meta.api.dto.meta.Meta;
import
pro.shushi.pamirs.meta.domain.module.ModuleDefinition;
import
pro.shushi.pamirs.metadata.manager.core.helper.DesignerIn
stallHelper;
import
pro.shushi.pamirs.metadata.manager.core.helper.WidgetInst
allHelper;
import java.util.List;
import java.util.Map;
@Slf4j
@Component
public class DemoAppMetaInstall implements
MetaDataEditor, LifecycleCompletedAllInit {
@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(bizInitializatio
nUtil, "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(uiInitialization
Util, "install/widget.json");
}
// 写法3: 业务⼯程和设计器分布式部署,且希望通过业务⼯程导⼊
⾃定义组件元数据. 业务模块需要依赖⻚⾯设计器模块,然后指定业务模块导
⼊
DesignerInstallHelper.mateInitialization(bizInitializatio
nUtil, "install/widget.json");
}
@Override
public void process(AppLifecycleCommand command,
Map<String, ModuleDefinition> runModuleMap) {
if (!doImport()) {
return;
}
log.info("[设计器业务数据导⼊]");
// ⽀持远程调⽤,但是执⾏的⽣命周期必须是
LifecycleCompletedAllInit或之后. 本地如果安装了设计器,则没有要
求
DesignerInstallHelper.bizInitialization("install/
meta.json");
log.info("[⾃定义组件业务数据导⼊]");
// 当开发环境和导⼊环境的⽂件服务不互通时, 可通过指定js和
css的⽂件压缩包,⾃动上传到导⼊环境,并替换导⼊组件数据中的⽂件url
// WidgetInstallHelper.bizInitialization("install/
widget.json", "install/widget.zip");
WidgetInstallHelper.bizInitialization("install/
widget.json");
return;
}
private boolean doImport() {
// ⾃定义导⼊判断. 避免⽤于设计的开发环境执⾏导⼊逻辑
String[] envs =
applicationContext.getEnvironment().getActiveProfiles();
List<String> envList = Lists.newArrayList(envs);
return CollectionUtils.isNotEmpty(envList) &&
(envList.contains("prod"));
}
}
2. 设计器数据导出
简介
通过调⽤导出接口,将设计器的设计数据与运动数据打包导出到⽂件中。
提供了download/export两类接⼜。
export
导出到OSS。导出的⽂件会上传到⽂件服务,通过返回的url下载导出⽂件。
请求⽰例:
mutation {
uiDesignerExportReqMutation {
export(
data: { module: "gemini_core", fileName: "meta", moduleBasics: true }
) {
jsonUrl
}
}
}
响应⽰例:
{
"data": {
"uiDesignerExportReqMutation": {
"export": {
"jsonUrl": "https://xxx/meta.json"
}
}
},
"errors": [
],
"extensions": {
}
}
download
直接返回导出数据。适⽤于通过浏览器直接下载⽂件。
请求⽰例:
mutation {
uiDesignerExportReqMutation {
download(
data: { module: "gemini_core", fileName: "meta", moduleBasics: true }
) {
jsonUrl
}
}
}
如何构造url
protocol :// hostname[:port] / path ?
query=URLEncode(GraphQL)
例:
http://127.0.0.1:8080/pamirs/base?
query=mutation%20%7B%0A%09uiDesignerExportReqMutation%20%
7B%0A%09%09download(%0A%09%09%09data%3A%20%7B%20module%3A
%20%22gemini_core%22%2C%20fileName%3A%20%22meta%22%2C%20m
oduleBasics%3A%20true%20%7D%0A%09%09)%20%7B%0A%09%09%09js
onUrl%0A%09%09%7D%0A%09%7D%0A%7D
在浏览器中访问构造后的url,可直接下载⽂件
接口列表
2.1 模型设计器
指定模块导出
#生成json
query {
modelMetaDataExporterQuery {
export(query: { module: "模块编码" }) {
module
url
}
}
}
#生成json文件下载
query {
modelMetaDataExporterQuery {
download(query: { module: "模块编码" }) {
module
url
}
}
}
module参数:指定导出的模块编码
url返回结果:export⽅式导出的⽂件url
2.2 页⾯设计器-导出页⾯
2.2.1 指定模块导出
#生成json
mutation {
uiDesignerExportReqMutation {
export(
data: { module: "gemini_core", fileName: "meta", moduleBasics: true }
) {
jsonUrl
}
}
}
#生成json文件下载
mutation {
uiDesignerExportReqMutation {
download(
data: { module: "gemini_core", fileName: "meta", moduleBasics: true }
) {
jsonUrl
}
}
}
module参数:模块编码
fileName参数:指定⽣成的json⽂件名称
moduleBasics参数:指定是否只导出模块基础数据,如果为true,只导出内置布局、模
块菜单、菜单关联的动作。 如果为false,还会导出模块内的所有页⾯,以及页⾯关联
的动作元数据、页⾯设计数据 等等。 默认值为false。
2.2.2 指定菜单导出
#生成json
mutation {
uiDesignerExportReqMutation {
export(
data: {
menu: { name: "uiMenu0000000000048001" }
fileName: "meta"
relationViews: true
}
) {
jsonUrl
}
}
}
#生成json文件下载
mutation {
uiDesignerExportReqMutation {
download(
data: {
menu: { name: "uiMenu0000000000048001" }
fileName: "meta"
relationViews: true
}
) {
jsonUrl
}
}
}
menu参数:菜单对象,指定菜单的name。只会导出该菜单及其绑定页⾯,不会递归查
询⼦菜单
fileName参数:指定⽣成的json⽂件名称
relationViews参数:指定是否导出关联页⾯,默认为false,只导出菜单关联的页⾯。如
果为true,还会导出该页⾯通过跳转动作关联的⾃定义页⾯。
2.2.3 指定页⾯导出
#生成json
mutation {
uiDesignerExportReqMutation {
export(
data: {
view: {
name: "xx_TABLE_0000000000119001"
model: "ui.designer.TestUiDesigner"
}
fileName: "meta"
relationViews: true
}
) {
jsonUrl
}
}
}
#生成json文件下载
mutation {
uiDesignerExportReqMutation {
download(
data: {
view: {
name: "xx_TABLE_0000000000119001"
model: "ui.designer.TestUiDesigner"
}
fileName: "meta"
relationViews: true
}
) {
jsonUrl
}
}
}
view参数:视图对象,指定视图的name和model
fileName参数:指定⽣成的json⽂件名称
relationViews参数:指定是否导出关联页⾯,默认为false,只导出菜单关联的页⾯。如
果为true,还会导出该页⾯通过跳转动作关联的⾃定义页⾯。
2.3 导出组件
2.3.1 导出全部组件数据
#生成json
mutation {
uiDesignerExportReqMutation {
exportWidget(data: { fileName: "meta" }) {
jsonUrl
}
}
}
#生成json文件下载
mutation {
uiDesignerExportReqMutation {
downloadWidget(data: { fileName: "meta" }) {
jsonUrl
}
}
}
fileName参数:指定⽣成的json⽂件名称
注意:⾃定义组件的元数据归属于页⾯设计器(ui_designer) 因此导⼊元数据的模块
(module)并不是业务模块。组件导⼊建议使⽤
pro.shushi.pamirs.metadata.manager.core.helper.WidgetInstallHelper
2.3.2 导出全部组件⽂件
当开发环境,和导⼊环境的oss不互通时,可通过⼀下⽅法导出⾃定义组件的css和
js⽂件压缩包,在导⼊时⽀持指定zip⽂件上传到oss,并替换导⼊组件数据中的css和js
⽂件路径。
#生成json
mutation {
uiDesignerExportReqMutation {
exportWidgetFile(data: { fileName: "widget" }) {
jsonUrl
}
}
}
#生成json文件下载
mutation {
uiDesignerExportReqMutation {
downloadWidgetFile(data: { fileName: "widget" }) {
jsonUrl
}
}
}
2.4 流程设计器
2.4.1 指定模块导出
参数说明:
- module参数:模块编码
接口示例:
#生成json
mutation {
workflowDesignerExportReqMutation {
export(data: { module: "resource", fileName: "meta" }) {
jsonUrl
}
}
}
#生成json文件下载
mutation {
workflowDesignerExportReqMutation {
download(data: { module: "resource", fileName: "meta" }) {
jsonUrl
}
}
}
2.4.2 指定流程编码导出
参数说明:
- workflowCode参数:流程编码
接口示例:
#生成json
mutation {
workflowDesignerExportReqMutation {
export(data: { workflowCode: "WF0000000000132500", fileName: "meta" }) {
jsonUrl
}
}
}
#生成json文件下载
mutation {
workflowDesignerExportReqMutation {
download(data: { workflowCode: "WF0000000000132500", fileName: "meta" }) {
jsonUrl
}
}
}
2.4 数据可视化
2.4.1全部导出
接口示例:
#生成json
mutation {
dataDesignerExportReqMutation {
export(data: { fileName: "meta" }) {
jsonUrl
}
}
}
#生成json文件下载
mutation {
dataDesignerExportReqMutation {
download(data: { fileName: "meta" }) {
jsonUrl
}
}
}
2.4.2 指定图表导出
参数说明:
- chartCode参数:图表编码
接口示例:
#生成json
mutation {
dataDesignerExportReqMutation {
export(data: { chartCode: "CT00000000002000", fileName: "meta" }) {
jsonUrl
}
}
}
#生成json文件下载
mutation {
dataDesignerExportReqMutation {
download(data: { chartCode: "CT00000000002000", fileName: "meta" }) {
jsonUrl
}
}
}
2.4.3指定报表导出
参数说明:
- reportCode参数:报表编码
接口示例:
#生成json
mutation {
dataDesignerExportReqMutation {
export(data: { reportCode: "RP00001000", fileName: "meta" }) {
jsonUrl
}
}
}
#生成json文件下载
mutation {
dataDesignerExportReqMutation {
download(data: { reportCode: "RP00001000", fileName: "meta" }) {
jsonUrl
}
}
}
2.4.4 指定业务⼤屏导出
参数说明:
- screenCode参数:业务⼤屏
接口示例:
#生成json
mutation {
dataDesignerExportReqMutation {
export(data: { screenCode: "DS00001000", fileName: "meta" }) {
jsonUrl
}
}
}
#生成json文件下载
mutation {
dataDesignerExportReqMutation {
download(data: { screenCode: "DS00001000", fileName: "meta" }) {
jsonUrl
}
}
}
以上方式通过有效的数据导出和固化,企业可以建立可靠的数据基础设施,支持数据驱动的决策和业务发展。
Oinone社区 作者:数式-海波原创文章,如若转载,请注明出处:https://doc.oinone.top/backend/5785.html
访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验