前言
见客多了,总有那么一些客户让你心生敬佩!
他们总能抓住事物本质,即使是沟通低代码时,提的问题也直击内核。
去年初有客户问“如何用3-4张表实现一个问卷应用,问题数量不确定且类型多样”。
这个深刻问题体现出来的睿智和极致,最后证明只有Mendix配得上:他买了Mendix。
今年初,另一个客户在初次交流中提出要看个Demo,实现工厂间物料移动。
老铁们可能会想,这场景不足以体现Mendix的过人之处。其实不然!
场景分析
看似就一个增删改查操作嘛,背后充满玄机,我们逐一拆解。
如何定义模型?
工厂仓库物料移动,顾名思义,必然有工厂、物料这2个实体。
至于把工厂和物料全塞进一个实体(一张表)的过家家式的纯表单驱动做法,这里就不多讨论了,看官必然了解其中局限性。
2个实体就够吗?工厂物料库存量如何体现?物料移动记录如何体现?
如何定义表单?
物料移动会有多种类型,至少考虑收货、销售发货和内部调拨三种类型。
问题来了,收货和发货操作时只涉及1个工厂,内部调拨却有2个,在表单上如何控制呢?
另外就是表单校验问题。
所有字段必填,发货量必须为非负数值。
且库存不存在,无法发货。库存量少于移动量,无法发货。
以上规则如何低代码实现?
如何实现操作原子性?
比如,内部调拨时调出工厂库存更新和调入工厂库存更新及物料移动记录,三处更改必须是一个原子操作。
如程序执行遇到问题,三处更改必须全部回退,避免数据不一致问题。
如何实现应用多语言?
客户是一家出海制造业,不仅有海外销售公司,还在东南亚建有3家工厂,海外产能扩张还在继续。
因此,工厂使用的自建应用,要考虑到海外推广,语言是基本要求。
Mendix 的答案
利器在手,无往不克。
关于模型
从企业级应用角度,工厂和物料2个实体几乎肯定是独立的,甚至主数据在不同系统。
后者Mendix 可以通过Connect - Datahub 访问跨系统数据,如同在一个系统,不赘述。
工厂、物料之外,创建库存和物料移动明细2个实体,分别与工厂、物料相关联。
其中,物料移动可能涉及2个工厂间的内部调拨,因此创建To和From2个关联关系。
最终模型建立如下:
关于表单
这里主要利用 Mendix表单构建的前端可见性设置和字段校验规则。
在发起物料移动的表单上,为目标工厂ID、目标工厂名2个字段设置可见性条件:当为内部调拨时方可见。
表单校验规则是前端开发做到手麻的日常作业。
Mendix 带来的福利是自动生成必填、数值非负等规则,并允许添加新的规则,如邮箱必包括@。
在该场景下,接受系统福利之余,只需要在自动生成的校验微流中添加一条即可。
即,当物料移动为调出类型(发货或内部调拨)时,判断调出工厂库存量是否小于移动量。
至此,表单就绪。
关于交易的原子性
目标很清晰,不能出现调出仓库减量而调入仓库未增量的情况,也不能出现库存调整生效物料移动未记录的情况。
回答也很直接,Mendix 平台微流的标准设计就保证了交易逻辑的原子性,而无需其他操作。
口说无凭,考虑到客户眼见才心安,我们做个小试验。
通过创建一个数值型变量且赋值为3除以0(3 div 0),引入程序执行一个异常,来模拟应用中断事件。
如上图,物料移动带来的库存变化在3个子微流中commit,物料移动记录在外部微流执行,中间引入中断。
测试执行,当发起工厂3 100件纽扣的内部调拨时,中断引发了回退,仓库变化和物料移动都没有提交。Safe!
有老铁看到这可能对这里错误处理方式感兴趣,推荐产品帮助文档:Error Handling in Microflows | Mendix Documentation
关于多语言
Mendix 内置多语言支持功能,通过Batch translate,可以将前端界面的词条翻译成其他语言。
具体可以参考过往文章: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多万款应用程序。