Mendix Excel导入组件的分析和应用

2023-11-07 09:20

本文主要是介绍Mendix Excel导入组件的分析和应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、前言

企业在发展的过程中会使用各种各样的系统,其中很多系统用了5-10年,我们称之为遗留系统存在诸多风险:维护耗时、中断频繁、用户不友好、与新软件的兼容性问题等。总有一天,这些庞大的问题会垄断IT资源,使数字化转型过程变得更加复杂。同时我们也发现,很多企业的流程和业务场景还停留在线下使用各种office工具,没有落实到系统上。

现在解决现代化的遗留问题有一条捷径。低代码是一种可视化开发方法,可帮助组织构建自定义应用程序以补充或替换遗留系统。低代码平台通过提供各种编码技能水平的人都可以构建可随组织扩展和发展的关键业务应用程序的环境来快速跟踪开发。替换遗留系统或者将线下流程和场景迁移到线上,我们都可以称之为应用现代化。企业实现应用现代化是一项长期的任重道远的工作,后续我们会陆续发布关于应用现代化的文章,来看如何帮助企业实现应用现代化。

回到我们今天的主题,首先请大家思考一个问题,企业员工在日常工作中使用的最多的工具是什么?没错就是Excel,在日常工作中,Excel确实必不可少,在很多场景下都非常适合,但是Excel的过度使用也会带来各种问题。

二、需求分析

首先,我们来看一下下面的两个项目需求:

1.某汽车零配件工厂,Planner每周会去用Excel填报基于个人负责的物料的一整年的预测数量,以每个月为单位填报,填报销售预测的数量,工厂预计生产的数量,工厂预计发货的数量,财务审核的数量。填报完成之后,会根据物料的单价,汇率进行价格计算,同时根据不同的BU包括不同的产品线,不同产品线包括不同的Group,不同的Group包含不同的人员和物料,按照这样的层级关系,计算出BU,产品线,Group负责的物料的价格情况,同时会与上周,上上周的数据进行比较,如果发现某个月的数据以上周或上上周相比,差距比较多,需要报异常,提醒Planner做出备注。

同时管理层希望能随时灵活的查看各个BU,产品线,Group相关的数据。

管理员也需要定期从SAP导出基础数据,比如组织架构关系,成本数据,汇率等需要后续计算用到的数据,这些导出的数据都是以Excel的方式。

2.某电子厂商,工厂员工需要每天去用Excel填报工时,填报工时完成后上传,无论填报多少数据,只基于最后一行数据进行创建,并且创建的数据会去SAP查找是否匹配,如果不匹配则反馈需要修改数据,如果匹配则更新数据,更新数据时,首先基于产品号去查看是否已有数据,如果没有则新建数据,如果有则更新数据,并绑定上传的Excel到当前数据。其他旧的Excel则保存在服务器上。

报表查看不同的产品号的工时数据,且显示的工时数据都是最新数据,同时显示最新上传的相关的Excel,可以一键下载。

从上面两个项目需求我们可以看出有很多类似的地方,首先并没有改变普通员工的工作方式,无论是Planner还是工厂员工还是会通过Excel填报数据,只是在填报数据之后,会有非常多的计算和逻辑需要处理,如果这时还通过Excel的方式去做,我们可以看到在Case1里需要多个Excel表的数据进行合并计算,非常容易出错,其次每周填报数据就要计算,工作量非常大,且不易于版本管理,当发现计算错误后,也非常难去追溯。要注意,没有会有非常多的Planner和工厂员工去填报数据,再用Excel来实现后面的业务场景,这样的人力消耗是巨大的。

其次两个项目都有管理层查看报表的需求,而管理层更加希望能随时随地通过各种终端查看想要看到的数据,这也是通过Excel是无法满足的。

现在这两个需求,可以通过Mendix非常快速的实现,实现的整个过程不在我们本次讨论的范围,本次我们重点介绍如何通过Excel导入组件,将线下流程完美地迁移到线上。

三、Excel导入组件

组件下载

在Mendix Marketplace中输入Excel查找,找到Excel importer组件下载

找到Model Reflection 组件下载,为了配置 Excel 列和域模型之间的映射

 找到Community Commons Function Library组件安装,以确保可以导入 BigDecimal 值

下载这几个模块后,都可以在Marketplace module下找到。

导入模块后,将Templates_OverviewExcelImporter.ExcelImportOverview页面配置到导航栏。这是定义 Excel 映射的起点。

在我们正式开始之前先了解下Excel模板的各种定义,这有助于我们后续根据不同的业务场景来做配置。https://docs.mendix.com/appstore/modules/excel-importer/#413-header-row-nr

下面我们来开始如何导入一个Excel

导入 Excel 文档

1 简介

向应用程序添加大量数据(例如,引用数据或来自外部应用程序的数据)可能非常耗时。为了节省时间和精力,可以使用Excel导入组件来实现。在此操作指南中,将设置导入模板并使用此模块将数据导入应用程序。

2 先决条件

在开始此操作方法之前,请确保知道如何执行以下操作:

  • 创建领域模型(见配置领域模型)
  • 创建概述和详细信息页面(请参阅如何创建前两个概述和详细信息页面)
  • 创建导航栏(请参阅设置导航)
  • 创建微流(请参阅从菜单项触发微流
  • 保护您的应用程序(请参阅如何创建安全应用程序)

3 准备数据结构、GUI 和模块

在开始将数据导入应用程序之前,您首先需要按照以下步骤设置数据结构和 GUI:

1. 创建以下域模型:

OrderStatus属性创建一个枚举,其值为Open 、 ProcessingComplete 。

XLSFile对象配置为从FileDocument对象继承。

2. 创建概览详细信息页面以管理客户订单类型的对象。

3. 创建菜单项以访问订单客户概览页面。

4. 为ExcelImportOverviewMxObjects_Overview页面创建菜单项(这些页面已存在于下载模块的_USE_ME文件夹中)。

5. 将Administrator用户角色配置为具有ExcelImporter模块的Configurator模块角色,以及Mx 模型反射模块的ModelAdministrator模块角色。

4 准备数据导入的逻辑

因为枚举用于OrderStatus属性,所以您需要创建一个微流来根据 Excel 文件的输入确定属性的枚举值。如果导入数据没有枚举的情况,可以忽略此步骤。

1. 创建以下微流并将其命名为IVK_ParseStatus

2. 设置返回值如下:

if $Unformatted = 'open' then MyFirstModule.OrderStatus.Open

else if $Unformatted = 'processing' then MyFirstModule.OrderStatus.Processing

else if $Unformatted = 'complete' then MyFirstModule.OrderStatus.Complete

else MyFirstModule.OrderStatus.Complete

3. 保存微流。

5 在客户端使用应用程序模型元数据

为了设置用于导入数据的导入模板,您的应用程序模型元数据应该反映在客户端。这可以通过使用Mx 模型反射模块来实现。按照以下步骤执行此操作:

  1. 单击播放按钮(本地运行)以启动的应用程序。
  2. 单击查看应用程序以在浏览器中打开您的应用程序。
  3. 以管理员身份登录
  4. 在导航中单击MxObjects_Overview的菜单项。
  5. 通过选中左侧的框来选择包含要在客户中使用的对象的模块——在本例中为MyFirstModule
  6. 单击左侧 Synchronize all entities and microflows of checked modules 旁边的按钮。现在可以在客户端看到和使用来自MyFirstModule模块的两个对象和解析微流。

6 手动创建导入模板

在将 Excel 文件中的数据导入应用程序之前,必须设置导入模板。在此模板中,将配置数据应映射到的对象、对象是否与另一个对象关联、导入应从 Excel 文件的哪一行开始以及应导入哪些列。

将从一个简单的 Excel 文件示例中导入数据,该示例可在此处下载:

下载示例

根据要导入的文件的结构,需要按照以下步骤手动设置模板:

  1. 单击应用主页导航中的ExcelImportOverview菜单项。
  2. 点击新建模板

     3. 为模板命名。

     4. 单击Mendix对象框旁边的箭头。

     5. 双击客户对象:

     6. 单击“引用以导入对象”框旁边的箭头。

     7. 选择Customer_XLSFile关联。通过设置与 XLS 文件的关联,将 XLS 文件保存在磁盘上,并将导入的数据连接到源文件。

     8. 确保导入操作设置为同步对象

对于此示例,将使用一个简单的 Excel 文件,该文件在第一行只有一个工作表和列标题。如果使用更全面的 Excel 文件,可以通过Sheet nr 、 Header row nrImport from row nr字段更改这些值。

     9. 在将列连接到属性部分中,单击新建以创建从 Excel 工作表列到正确Mendix属性的映射。

     10. 添加与要映射的 Excel 文件中的列号对应的列号。

Excel 中第一列的编号为 0,第二列为 1,依此类推。

     11. 将 Excel 列标题定义为Caption值。

     12. 为类型选择属性

     13. 单击属性框旁边的箭头:

     14. 双击要将 Excel 值映射到的属性

     15. 对Customer对象的每个属性重复上述步骤 9 到 14。

  • 对于Name属性的映射,将Key值设置为Yes以防止重复客户。

 如果映射设置正确,则行前会出现一个绿色对勾。

     16. 现在需要为Order对象属性创建映射。但是,因为Order对象与Customer对象相关联,所以映射设置会略有不同。对Order对象的每个属性执行以下步骤:

  1. 添加与要映射的 Excel 文件中的列号对应的列号。
  2. 将 Excel 列标题定义为Caption值。
  3. 为类型选择参考
  4. 单击参考框旁边的箭头,您可以在其中选择将订单链接到客户的关联——在本例中应为 Order_Customer
  5. 单击属性框旁边的箭头,然后双击要将 Excel 值映射到的属性
  6. 对于属性Number的映射,将Key值设置为Yes,仅针对关联对象,以防止重复订单。
  7. 单击Save

     17. 对于OrderStatus属性的映射,需要将 Excel 文件值解析为枚举值。为此,您可以使用IVK_ParseStatus微流(在上面的准备数据导入逻辑部分中创建)。单击Parse with框旁边的箭头并选择IVK_ParseStatus微流:

     18. 保存导入模板。

6.1 导入 Excel 文件

现在模板已设置好,可以开始将数据从 Excel 文件导入到您的应用程序中。可以使用在上面的创建导入模板部分下载的示例文件。

按照以下步骤导入 Excel 文件:

  1. 单击应用主页导航中的ExcelImportOverview菜单项。
  2. 转到导入文件选项卡并单击新建:

   

     3. 选择刚刚创建的模板。

     4. 点击浏览

    

     5. 选择您下载的示例 Excel 文件,然后单击Save

     6. 单击Filename下的 Excel 文件将其选中,然后单击Import file

     7. 导入完成后单击确定

这样就完成了Excel数据导入,至于后续的逻辑处理就可以通过微流来实现,不在本次介绍的范围内。

四、应用展示

完成了Excel组件的配置后,让我们看看针对前面的两个客户需求的实际应用效果。

项目一

Excel上传模板

 Planner上传后生成的数据

 经过计算后的展现不同BU,产品线,Group的数据

通过Excel导入的主数据

项目二

工厂员工导入的Excel工时模板

填写表单然后上传Excel

最终数据展示

五、参考资料

  1. Excel组件 Marketplace介绍https://marketplace.mendix.com/link/component/72
  2. MX Model Reflection组件MarketPlace介绍https://marketplace.mendix.com/link/component/69
  3. Community Common组件介绍https://marketplace.mendix.com/link/component/170
  4. Excel导入具体文档参考https://docs.mendix.com/appstore/modules/excel-importer/#413-header-row-nr 和Import Excel Documents | Mendix Documentation

关于Mendix

Mendix,a Siemens business是全球企业级低代码的领导者,正在从根本上重塑数字化企业构建应用的方式。企业可通过Mendix低代码软件快速开发平台来扩展自身的开发能力,打破软件开发的瓶颈。借助Mendix开发平台,企业可以打造具备智能、主动性和人机互动等原生体验的智能化应用,对核心系统进行现代化升级并实现规模化应用开发,以跟上业务增长的速度。Mendix低代码软件快速开发平台可在保持最高安全、质量和治理标准的前提下,促进业务与IT团队之间的密切合作,大大缩短应用开发周期,帮助企业自信迈向数字化未来。Mendix的“Go Make It”平台已被全球4000多家领先公司采用。

这篇关于Mendix Excel导入组件的分析和应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/362656

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499