摘要: 本期结合一个“生产执行管理”案例场景涉及的相关业务活动流程,系统地介绍了华为云数字工厂平台的逻辑模型编排器的使用方法。
本文分享自华为云社区《数字工厂深入浅出系列(三):逻辑模型编排器的使用方法介绍》,作者:云起MAE 。
华为云数字工厂平台的制造应用构建引擎(Manufacturing App Engine,以下简称MAE引擎),采用实时事件驱动架构,业务逻辑支持动态配置和加载运行,实现业务逻辑与数据模型解耦、业务应用与技术平台解耦。华为云数字工厂平台MAE引擎,提供强大易用的逻辑流编排工具、规则引擎与数据流引擎,实时感知业务对象的状态变化,自动触发不同业务对象之间的数据分析、处理和流转。逻辑流编排工具与业务对象的信息模型天然融合,业务人员也能看懂与快速编排业务流程处理所需的上下文信息,随时响应业务需求变化调整数字系统中的业务逻辑流程,实现数字系统能真正适配日益柔性化的生产业务流程,实现敏捷可柔性化配置,实现真正由业务需求快速驱动数字化应用的构建与升级。
华为云数字工厂平台MAE引擎的逻辑流由三类节点组成:
本期结合上期的“生产执行管理”场景案例继续展开,来详细介绍华为云数字工厂平台的“逻辑模型”编排器的使用方法。
本期场景案例,需要通过实现以下4个业务逻辑流的编排与运行,来完成“生产执行管理”涉及的相关业务对象之间数据的按需自动流转:
下面介绍如何使用华为云数字工厂平台MAE引擎的逻辑编排器,来实现本期场景案例中4个业务逻辑流:
上期我们介绍华为云数字工厂平台的信息配置器的使用方法时,完成了以下业务对象的信息模型配置:生产订单、工序任务单和物料需求单,为了完成第4个业务流“更新库存量”,我们需要补充配置完成“完工入库单”的信息模型。
在“事务”模型构建器,选择“生产”领域页签,然后新建或者使用已有的业务场景“生产管理”,在业务场景下新建事务模型“完工入库单”:
“完工入库单”的信息模型字段的配置方法,请参考上期介绍的信息配置器的使用方法,这里不再展开说明。
用户在华为云数字工厂平台的“建模工作台”,使用“事务”模型构建器,选择相应的事务模型,在事务模型的“逻辑模型”中新建和发布所需的逻辑流程:
通常我们在触发源的事务模型下创建相应的逻辑流来完成业务流转处理,在逻辑流运行时,会自动带入触发来源模型的实例数据作为输入信息,然后在逻辑流里面可以按需选择串联到与来源模型存在信息关联关系的其他业务模型,从来实现数据从触发源业务对象自动处理流转到目标业务对象。
逻辑流模型,主要提供以下几种操作:
a.编辑:修改逻辑流的名称、优先级和状态等基础信息;
b.启用:启用或者停用逻辑流;
c.配置:打开逻辑流编排器,配置逻辑流的执行逻辑;
d.复制:复制当前逻辑流,创建一个新的逻辑流;
e.日志:查看逻辑流的历史运行日志,可用来查看逻辑流某次运行的详细日志,来诊断异常原因,针对逻辑流的运行结果状态为异常的运行实例,支持通过“重试”操作重新运行。
在“生产订单”模型的“逻辑模型”下,操作“新建流程”按钮,新增一个逻辑流 “生成工序任务单”:
新增完成后,点击逻辑流右侧的“配置”操作,打开逻辑流编排器,配置逻辑流的执行逻辑:
(1) 触发器配置
触发器用来触发逻辑流运行,逻辑编排器目前支持以下触发器类型,根据实际业务需求选择相应的触发器类型:
a.数据创建:在所选的触发对象模型的数据实例创建时,自动触发逻辑流的执行;
b.数据变更:在所选的触发对象模型数据实例所设定的某些字段值变化时,自动触发逻辑流的执行;
c.用户操作:当用户在前端界面,操作执行当前模型定义的某个“用户操作”按钮,自动触发逻辑流的执行;
d.定时触发:按定时计划策略触发,需要设置任务执行周期(每小时/每天/每周/每月/每年)、计划有效期范围(开始日期/终止日期)等等,根据计划策略定期自动定时触发逻辑流的运行。“定时触发”的逻辑流,支持配置“过滤规则”来按一定的条件来筛选触发数据模型的数据实例范围。
触发器的“触发对象”支持选择当前业务模型的主信息模型和其下的子信息模型(比如在“产品”模型下创建的逻辑流的触发对象,可选择“产品信息”主数据模型,也可选择“BOM/BOM清单”等子模型),在逻辑流运行时,“触发对象”所选定的业务模型的数据实例信息自动放到逻辑流的输入信息上下文,可被逻辑流中后续的“规则”或“动作”节点所使用。
用户需要在创建“生产订单”后,自动根据生产订单的工艺路线拆解成过程工序数据来生成工序任务单,则“触发器类型”选择“数据创建”,然后触发对象选择“生产订单”,填写一个有业务含义的触发器名称“生产订单创建”:
(2) 创建动作节点
点击创建的“触发器”后面的“+”图标,选择“添加动作(当前)”或者“添加动作(分支)”,可以创建一个动作节点,前者是在前一个节点(即触发器节点)后面创建一个动作节点,后者是与前一个节点并行创建一个动作节点分支。
逻辑流的“动作”节点,主要有以下2个配置项:
如果在创建动作节点时,输出模型选不到所需的业务模型,可以暂时留空,在动作节点中通过编排数据转换逻辑来串联补充其他相关的业务对象模型后,即可选择到所需的业务模型。
用户需要在创建“生产订单”后,自动根据生产订单的工艺路线来拆解后,创建相应的工序任务单数据,则“输出类型”选择“创建数据”,输出模型选择“工序任务单”,最后填写一个有业务含义的动作名称“创建工序任务”:
(3)配置动作节点的数据转换逻辑
添加创建动作节点后,进入“动作配置器”,根据实际业务需求,在动作配置器中进一步编排“数据转换逻辑”,以满足目标输出模型的数据需求:
“动作配置器”有以下3个配置项:
关联节点:用来获取与输入数据或者前一个数据转换节点的输出数据有关联关系的其他业务对象的数据字段;
拆分节点:用来获取输入数据或者前一个数据转换节点的输出数据的子模型数据;
计算节点:用来对输入数据或者前一个数据转换节点的输出数据中的数值类字段值进行四则运算处理或者引用标准函数进行数据处理;
聚合节点:用来对输入数据或者前一个数据转换节点的输出数据按某些维度字段汇总统计。
根据实际业务需求,灵活组合编排4类数据转换算子节点,实现对动作节点的输入数据进行数据转换加工,以满足当前动作节点最终输出的数据结果需求
3.输出数据字段映射:将动作节点经过“数据转换”处理后缓存在数据管道中数据字段,映射配置到输出模型的字段值。输出模型字段值,也支持手工输入常值、引用标准函数运算结果和系统变量(系统时间、当前登录人员等)。
根据业务需求,需要将生产订单按照其生产的工艺路线下的过程工序来拆分,创建相应的工序任务单数据,则需要在“创建工序任务”动作节点中:
a.添加一个关联节点“关联工艺路线”,来实现从输入的“生产订单”数据关联获取到相关的“工艺路线”主数据:
关联转换节点有以下3个配置区:
b.添加一个拆分转换节点“展开工艺过程工序”,基于上一步关联节点转换输出的“工艺路线”数据,来进一步获取“工艺路线”数据下的“过程工序”子模型数据实现数据拆分转换:
拆分转换节点有以下3个配置项:
(4)输出模型配置
通过“动作配置器”编排动作节点“创建工序任务”的“数据转换逻辑”后,获得满足创建输出模型“工序任务单”数据所需的工艺路线和过程工序数据后,最后按需映射配置“输出模型”的字段值。
“输出模型配置器”有以下3个配置区:
按需配置标准函数的参数值,支持引用管道数据字段:
对于输出类型是“创建数据”的动作节点,输出模型配置会自动校验除了“数据标识”字段以外其他所有的模型必填字段都必需映射值(数据标识字段留空时后台会自动处理)。对于“更新数据”等其他输出类型的动作节点,对需要变更的字段值配置映射值即可。
通过以上4个配置步骤,完成了“创建生产订单,生成工序任务单”业务逻辑流的建模配置。
“操作生产订单,生成物料需求单”逻辑流需求:
用户操作某个生产订单上点击“生成物料需求”按钮时,根据生产订单的产品字段信息和计划产量,自动根据产品主数据展开获取BOM物料清单数据,把展开的物料清单的基准数量乘以“生产订单”的计划产量得到物料需求数量,然后创建相应的物料需求单和需求物料明细数据。逻辑流中生成的物料需求单号,需要回填到“生产订单”。
(1)新增用户操作“生成物料需求”
在“生产订单”模型上,新增一个用户操作“生成物料需求”:
“用户操作”有以下3个配置项:
比如控制已创建物料需求单的生产订单不能再使用“生成物料需求”操作,则配置“生成物料需求”用户操作可用显示的规则条件为“生产订单”的“关联物料需求单”字段值为空。
(2)创建用户操作触发的逻辑流
在新增的“生成物料需求”操作的配置窗口,可选择“保存并配置逻辑流”,快速创建一个由用户操作触发执行的逻辑流,也可以先确定保存“用户操作”,后续在新增逻辑流的触发器配置中绑定“用户操作”:
“生成物料需求”的逻辑流的编排配置步骤中,与上面“创建生产订单,生成工序任务单”的逻辑流中类似需求的配置方法不再展开说明:
差异性的需求以及相应逻辑流的配置方法,有以下3点:
1.物料需求数量的计算:输出创建物料需求单明细中的物料需求数量的字段值,需要按产品主数据拆分成BOM物料清单数据后,将物料清单上的基准数量乘以“生产订单”的计划产量来计算得到“物料需求数量”。
满足此需求,需要在“创建物料需求单明细”的动作节点的“数据转换逻辑”中使用到“计算节点”:
以下是计算节点“计算物料需求数量”的配置:
点击“度量信息字段”右侧的“添加”按钮,添加一个计算字段“物料需求数量”,依次配置:计算字段名称、计算字段编码,然后编辑计算公式:从左侧数据管道中拖入“生产订单”的“计划产量”字段和“BOM物料清单”的“数量”字段作为计算参数,然后在中间输入乘号“*”运算符。计算公式支持“+-*/”加减乘除四则运算符,支持点击拖动引用标准函数计算。
2.按相同物料汇总需求数量后,生成物料需求明细:
需要将前序转换节点输出的物料清单数据,按相同物料编码汇总需求数量后,再生成相应物料需求明细数据。
在“创建物料需求单明细”的动作节点,需要在“数据转换逻辑”中使用到“聚合算子节点”:
以下是聚合节点“按物料汇总需求”的配置:
聚合转换节点的配置说明:
保存聚合节点后,我们配置输出模型时,会看到数据管道中只保留了勾选的聚合维度字段和计算字段:
3.物料需求单的数据是“头行结构”,创建物料需求单需要同步创建需求明细:
在逻辑流中先创建“生成物料需求单”动作节点,然后再创建“生成物料需求单明细”的动作节点,前一个动作节点,根据输入的“生产订单”数据实例,输出创建相应的物料需求单数据,平台自动将动作节点输出创建的物料需求单数据添加到数据管道中;在后一个动作节点,输出创建相应的物料需求单明细(即物料需求单的子模型“需求明细”)数据时,可以从数据管道中拿到创建“物料需求单明细”数据所需关联的“物料需求单号”。
4.创建的物料需求单号,需要回填更新“生产订单”:
前一个“创建物料需求单”动作节点输出创建的物料需求单号,需要回填更新到“生产订单”的“关联物料需求单”字段。
在“创建物料需求单”动作节点后,点击“添加动作(分支)”,新增一个与“创建物料需求单明细”动作节点并行的分支节点“回填订单需求单号”:
“回填订单需求单号”动作节点的输出类型选择“更新数据”,然后配置输出模型字段:
对于输出类型为“更新数据”的输出模型配置说明:
至此,完成了 “操作生产订单,生成物料需求单”业务逻辑流的建模配置。
“关闭生产订单,自动关闭工序任务单”逻辑流的需求:
针对“未开始/进行中/已完成”任一状态的“生产订单”,提供“关闭订单”的操作按钮,用户操作“关闭订单”按钮时,需要填写“关闭原因”后,然后验证生产订单的状态是否满足条件,不满足条件提示用户原因,如果满足条件,则更新“生产订单”的状态为“已关闭”,将用户填写的“关闭原因”更新到“生产订单”的“关闭原因”字段。关闭“生产订单”后,需要同步关闭 “生产订单”相关的所有“工序任务单”,即更新工序任务单的状态为“已关闭”。
(1)新增用户操作“关闭”
在“生产订单”模型上,新增一个用户操作“关闭”,勾选“启用参数?”:
“用户操作”的参数配置窗口有以下2个配置项:
1.参数类型:参数支持两种定义方式:
2.参数显示控制:
针对“关闭订单”操作,我们添加一个“自定义”类型的参数,字段类型选“文本”,然后填写参数在前端显示的名称,以及用于后台传递的“参数编码”,最后勾选“必填”,完成参数配置。
配置完成“关闭订单”的参数后,选择点击“保存并配置逻辑流”,开始配置“关闭订单”操作的处理逻辑流。
(2)新增规则节点,校验订单状态
添加一个“规则”节点,配置规则条件:
规则节点有以下3个配置项:
1.规则编辑模式:提供“常规”和“脚本”两种编辑规则条件的方式:
2.匹配规则:支持通过添加多个“条件组”来组合复杂的规则条件,每个条件组可以设定条件组合方式是“满足所有条件”或者“满足任一条件”。在条件组下,添加具体的条件:选择“条件字段”、选择条件运算符,以及选择或录入条件值。
3.校验提示文案:配置的提示文案内容,用来在逻辑流运行时,当规则判断不满足条件时,在前端提醒用户。
针对“关闭订单”的规则节点,“匹配规则”选择“任一条件”,然后添加三个条件,依次配置“生产订单”的状态字段允许满足的三个状态值:“进行中”、“已完成”和“未开始”。
“关闭订单”逻辑流的其他编排配置步骤,与上面介绍“创建生产订单,生成工序任务单”的逻辑流的配置方法类似,不再展开说明:
至此,完成了 “关闭生产订单,自动关闭工序任务单”业务逻辑流的建模配置。
“确认完工入库单,自动更新产品及仓库库存量”逻辑流的需求:
“完工入库单”,提供“确认完成”的操作按钮,用户操作“确认完成”按钮时,需要验证“完工入库单”的状态是否满足条件,不满足条件提示用户,如果满足条件,则根据“完工入库单”的“产品”、“仓库”和“入库数量”等信息,更新相应产品主数据的“库存现有量”,以及相应仓库下产品的库存现有量。最后更新“完工入库单”状态为“已完成”。
“确认完工入库单”逻辑流涉及的编排配置方法,已经在上面几个逻辑流案例中介绍过的,不再展开说明。
这里重点介绍“更新仓库产品库存”动作节点的配置方法:
“基准字段”参数选择输出模型“仓库-产品库存”的“库存现有量”字段(可获取相应仓库产品的当前库存量),“增量字段”参数选择“完工入库单”的“入库数量”,实现在仓库下某产品的当前库存量上增加“入库数量”。
至此,我们完成了案例场景的4个业务逻辑流的建模配置,逻辑流建模完成后,需要启用发布逻辑流以及所属的业务模型,逻辑流才会生效:
创建一个生产订单,录入订单的生产“产品”、“工艺路线”和“计划产量”等字段信息:
保存“生产订单”后,进入创建的生产订单的详情编辑页面,查看验证是否同步创建相应的工序任务单:
使用上一步创建的生产订单,验证是否有“生成物料需求”的操作按钮:
然后点击“生成物料需求”按钮,等待执行完毕后,查看是否生成了相应的物料需求单、生产订单上的“关联物料需求单”字段值是否已自动回填更新,以及“生成物料需求”按钮是否已不可见:
查看生成的物料需求单的需求明细是否涵盖了生产订单上产品的BOM物料:
使用上一步创建的生产订单,验证是否有“关闭”的操作按钮:
然后点击“关闭”按钮,验证是否弹窗需要录入“关闭原因”:
确定后,验证生产订单、以及相关工序任务单的状态是否已自动更新为“已关闭”:
创建一个“完工入库单”,录入订单的生产“产品”、“入库数量”和“仓库位置”等字段信息:
保存“完工入库单”后,在完工入库单的数据查看页面,点击操作,然后选择“确认完成”:
等待操作执行完成后,在“产品”主数据功能,查看产品的现有量是否增加:
在“工厂>仓库”主数据功能,查看“成品仓”仓库下产品的现有量是否增加:
以上是结合一个实际的“生产执行管理”场景涉及的相关业务活动流程,系统地介绍了使用华为云数字工厂平台的逻辑模型编排器,如何完成相关业务流程逻辑的建模和使用。下期将系统介绍如何使用华为云数字工厂平台的“分析”模型配置器,来搭建业务数据统计分析类功能。
添加华为云IoT小助手微信hwc-iot,回复“数字工厂”,申请体验华为云数字工厂