Mendix 实现WMS物料移动场景

前言

见客多了,总有那么一些客户让你心生敬佩!

他们总能抓住事物本质,即使是沟通低代码时,提的问题也直击内核。

去年初有客户问“如何用3-4张表实现一个问卷应用,问题数量不确定且类型多样”。

这个深刻问题体现出来的睿智和极致,最后证明只有Mendix配得上:他买了Mendix。

今年初,另一个客户在初次交流中提出要看个Demo,实现工厂间物料移动。

老铁们可能会想,这场景不足以体现Mendix的过人之处。其实不然!

场景分析

看似就一个增删改查操作嘛,背后充满玄机,我们逐一拆解。

如何定义模型?

工厂仓库物料移动,顾名思义,必然有工厂、物料这2个实体。

至于把工厂和物料全塞进一个实体(一张表)的过家家式的纯表单驱动做法,这里就不多讨论了,看官必然了解其中局限性。

2个实体就够吗?工厂物料库存量如何体现?物料移动记录如何体现?

如何定义表单?

物料移动会有多种类型,至少考虑收货、销售发货和内部调拨三种类型。

问题来了,收货和发货操作时只涉及1个工厂,内部调拨却有2个,在表单上如何控制呢?

另外就是表单校验问题。

所有字段必填,发货量必须为非负数值。

且库存不存在,无法发货。库存量少于移动量,无法发货。

以上规则如何低代码实现?

如何实现操作原子性?

比如,内部调拨时调出工厂库存更新和调入工厂库存更新及物料移动记录,三处更改必须是一个原子操作。

如程序执行遇到问题,三处更改必须全部回退,避免数据不一致问题。

如何实现应用多语言?

客户是一家出海制造业,不仅有海外销售公司,还在东南亚建有3家工厂,海外产能扩张还在继续。

因此,工厂使用的自建应用,要考虑到海外推广,语言是基本要求。

Mendix 的答案

利器在手,无往不克。

关于模型

从企业级应用角度,工厂和物料2个实体几乎肯定是独立的,甚至主数据在不同系统。

后者Mendix 可以通过Connect - Datahub 访问跨系统数据,如同在一个系统,不赘述。

工厂、物料之外,创建库存和物料移动明细2个实体,分别与工厂、物料相关联。

其中,物料移动可能涉及2个工厂间的内部调拨,因此创建To和From2个关联关系。

最终模型建立如下:

image01.png

关于表单

这里主要利用 Mendix表单构建的前端可见性设置和字段校验规则。

在发起物料移动的表单上,为目标工厂ID、目标工厂名2个字段设置可见性条件:当为内部调拨时方可见。

image02.png

表单校验规则是前端开发做到手麻的日常作业。

Mendix 带来的福利是自动生成必填、数值非负等规则,并允许添加新的规则,如邮箱必包括@。

20240205162201_rec_01.gif

在该场景下,接受系统福利之余,只需要在自动生成的校验微流中添加一条即可。

即,当物料移动为调出类型(发货或内部调拨)时,判断调出工厂库存量是否小于移动量。

20240205163557_rec_02.gif

至此,表单就绪。

关于交易的原子性

目标很清晰,不能出现调出仓库减量而调入仓库未增量的情况,也不能出现库存调整生效物料移动未记录的情况。

回答也很直接,Mendix 平台微流的标准设计就保证了交易逻辑的原子性,而无需其他操作。

口说无凭,考虑到客户眼见才心安,我们做个小试验。

通过创建一个数值型变量且赋值为3除以0(3 div 0),引入程序执行一个异常,来模拟应用中断事件。

image03.png

如上图,物料移动带来的库存变化在3个子微流中commit,物料移动记录在外部微流执行,中间引入中断。

测试执行,当发起工厂3 100件纽扣的内部调拨时,中断引发了回退,仓库变化和物料移动都没有提交。Safe!

20240205170115_rec_03.gif

有老铁看到这可能对这里错误处理方式感兴趣,推荐产品帮助文档:Error Handling in Microflows | Mendix Documentation

关于多语言

Mendix 内置多语言支持功能,通过Batch translate,可以将前端界面的词条翻译成其他语言。

image04.png

具体可以参考过往文章:https://mendix.bbscloud.com/info/b622547549034fea9a7e53a224c70f61?csr=1

总结

真相都已清晰,剩下一个问题:

提出这个问题的客户,会不会像去年初那位客户一样,最后选择Mendix呢?

我们拭目以待。

看官如对完整实现感兴趣,欢迎留言索取MPK文件。

关于Mendix

作为西门子Xcelerator平台的低代码引擎,Mendix正在迅速成为推动企业数字化发展的首选应用程序开发平台。Mendix让企业能够以前所未有的速度构建应用程序、促进IT团队与业务专家之间开展有意义的协作,并帮助IT团队保持对整个应用程序环境的控制。作为一直被领先的行业分析师视为“领军者和远见者”的低代码平台,Mendix是云原生的、开放的、可扩展的、敏捷的,并且经过实践验证。从人工智能和增强现实,到智能自动化和原生移动,Mendix和西门子Xcelerator已成为“数字优先”企业的中坚力量。Mendix已被46个国家的4,000多家企业采用,并建立了由30多万名开发人员组成的活跃社区,这些开发人员使用该平台创建了20多万款应用程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/485544.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据揭秘:Hadoop短视频流量分析实战

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

【高频SQL基础版本】1204.最后一个能进入巴士的人

题目: 自己去搜一下吧。 解题思路: 这里最重要的知识点是累加求和,而不是直接汇总求和。 如果直接汇总求和体重就是SUM(weight),而根据turn的次序,累加求和,则需要SUM(weight)over (order by turn),这样…

华为算法题 go语言或者ptython

1 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返…

Hudi程序导致集群RPC偏高问题分析

1、背景 Hudi程序中upsert操作频繁,过多的删除和回滚操作,导致集群RPC持续偏高 2、描述 hudi采用的是mvcc设计,提供了清理工具cleaner来把旧版本的文件分片删除,默认开启了清理功能,可以防止文件系统的存储空间和文件数量的无限…

ITSM专家会诊功能上线,群聊解难题,协同解决就这么简单!

在最新推出的V1.28.0版本中,燕千云带来了一系列激动人心的新功能及优化,旨在全面提升您的工作效率和体验:全新的多会话模式,大幅强化的Prompt模板,便捷的群聊功能,智能工单旅程和审批单动态记录的深度优化&…

RAW 编程接口 TCP 简介

一、LWIP 中 中 RAW API 编程接口中与 TCP 相关的函数 二、LWIP TCP RAW API 函数 三、LwIP_Periodic_Handle函数 LwIP_Periodic_Handle 函数是一个必须被无限循环调用的 LwIP支持函数,一般在 main函数的无限循环中调用,主要功能是为 LwIP各个模块提供…

【思扬赠书 | 第3期】由面试题“Redis是否为单线程”引发的思考

⛳️ 写在前面参与规则!!! ✅参与方式:关注博主、点赞、收藏、评论,任意评论(每人最多评论三次) ⛳️本次送书1~4本【取决于阅读量,阅读量越多,送的越多】 很多人都遇到…

java.lang.IllegalStateException: Promise already completed.

spark submit 提交作业的时候提示Promise already complete 完整日志如下 File "/data5/hadoop/yarn/local/usercache/processuser/appcache/application_1706192609294_136972/container_e41_1706192609294_136972_02_000001/py4j-0.10.6-src.zip/py4j/protocol.py"…

SpringBoot和SpringCloud的区别,使用微服务的好处和缺点

SpringBoot是一个用于快速开发单个Spring应用程序的框架,通过提供默认配置和约定大于配置的方式,快速搭建基于Spring的应用。让程序员更专注于业务逻辑的编写,不需要过多关注配置细节。可以看成是一种快速搭建房子的工具包,不用从…

C# cass10 面积计算

运行环境Visual Studio 2022 c# cad2016 cass10 通过面积计算得到扩展数据,宗地面积 ,房屋占地面积,房屋使用面积 一、主要步骤 获取当前AutoCAD应用中的活动文档、数据库和编辑器对象。创建一个选择过滤器,限制用户只能选择&q…

第3.6章:StarRocks数据导入——DataX StarRocksWriter

一、Datax 1.1 DataX 3.0概述 DataX3.0是一个异构数据源离线同步工具,可以方便的对各种异构数据源进行高效的数据同步。 其github地址为: https://github.com/alibaba/DataX/blob/master/introduction.mdhttps://github.com/alibaba/DataX/blob/mast…

了解红帽认证,看这篇就够了!

红帽公司成立于1993年,是全球首家收入超10亿美元的开源公司,总部位于美国,分支机构遍布全球。 红帽公司作为全球领先的开源和Linux系统提供商,其产品已被业界广泛认可并使用,尤其是RHEL系统在业内拥有超高的Linux系统…