与第三方制造执行系统集成

一些使用 Microsoft Dynamics 365 Supply Chain Management 的制造组织使用 Dynamics 365 中的本地功能来控制机器、设备和人员的制造活动。 但是,其他制造组织,尤其是那些具有先进制造要求的制造组织,则改用第三方制造执行系统 (MES)。 组织可能会选择第三方 MES 解决方案,比如如果它是专门为其垂直行业量身定制的。

在集成解决方案中,数据交换是完全自动化的,几乎是实时发生。 因此,两个系统中的数据都会保持最新,不需要手动输入数据。 例如,当材料消耗在 MES 中登记时,集成将确保在 Dynamics 365 中也登记相同的消耗。 因此,最新的库存记录可用于其他重要流程,如计划和销售。

此解决方案使 Supply Chain Management 用户可以更快、更轻松、更便宜地与第三方 MES 集成。 它提供以下功能:

  • 支持关键制造执行流程的业务事件和接口
  • 一个集中式仪表板,您可以在其中跟踪事件处理历史记录,并对失败的流程进行故障排除和修复

下图显示了在集成解决方案中交换的业务事件、流程和消息的典型集合。

典型集成场景。

开启 MES 集成功能

管理员必须按照以下过程在您的系统中打开此功能,您才能够使用。

  1. 转到系统管理 > 设置 > 许可证配置
  2. 确保考勤管理许可证密钥已启用(显示复选标记)。 此许可证密钥是必需的,因为它控制制造执行系统的功能和数据。 如果未启用,请执行以下步骤:
    1. 将您的系统置于维护模式下,如维护模式中所述。
    2. 许可证配置页面上,选择考勤管理复选框。
    3. 按照维护模式中所述关闭维护模式
  3. 转到系统管理 > 工作区 > 功能管理
  4. 使用功能管理工作区打开制造执行系统集成功能。 (从 Supply Chain Management 版本 10.0.29 开始,此功能默认开启。从 Supply Chain Management 版本 10.0.32 开始,此功能是强制性的,无法关闭。)

可用于 MES 集成的流程

您可以为集成启用以下任何或所有流程。

流程名称 Description
发布生产订单和生产订单状态更改业务事件 此流程提供了一个业务事件,MES 可以侦听该事件,以获取有关应生产的生产订单的信息。 与生产订单相关的参考数据会通过 Open Data Protocol (OData) 或数据实体从 Supply Chain Management 共享到 MES。
开始生产订单 此流程为 Supply Chain Management 提供有关使用 MES 启动的生产订单的信息。 它确保两个系统都有所有制造活动的最新视图。
报告产生或废品数量 此流程为 Supply Chain Management 提供有关使用 MES 报告的生产作业的良好和残次数量的信息。 它可确保车间主管对生产计划进度有最新的了解。
报告材料消耗量 此流程 Supply Chain Management 提供来自 MES 的有关消耗材料数量的信息。 它让最新的库存记录可用于其他重要流程,如计划和销售。
报告操作消耗的时间 此流程为 Supply Chain Management 提供有关用于特定操作的时间的信息。
结束生产订单 此流程通知 Supply Chain Management MES 已将生产订单更新为最终状态结束。 此状态表示生产订单将不再生产更多数量。

监视传入消息

要监视传入系统的 MES 消息,转到生产控制 > 设置 > 制造执行 > 制造执行系统集成

特定生产订单的所有消息都按照接收顺序进行处理。 但是,不同生产订单的消息可能不按接收顺序处理,因为批处理作业是并行处理的。 如果失败,批处理作业将尝试处理每条消息 3 次,然后将其设置为失败状态。

制造执行系统集成页面的工作方式与消息处理器消息页面相同,代表了非常相似的功能。 (除了显示其他类型的消息外,它甚至还显示 MES 消息。)有关如何使用任一页面查看消息、查找和修复失败消息等的信息,请参阅消息处理器消息页面

调用 API

要调用 MES 集成 API,向以下终结点 URL 发送 POST 请求:

/api/services/SysMessageServices/SysMessageService/SendMessage

您发送的请求正文应类似于以下示例。 根据需要替换 _companyId_messageType_messageContent 值。 有关 API 支持的各种消息类型以及如何设计其内容的信息,请参阅下一节。

{
    "_companyId": "USMF",
    "_messageQueue": "JmgMES3P",
    "_messageType": "ProdProductionOrderReportFinished",
    "_messageContent":
    "{\"ProductionOrderNumber\": \"P000123\", \"ReportFinishedLines\": [{\"ItemNumber\": \"A0001\", \"ReportedGoodQuantity\": 10, \"ReportAsFinishedDate\": \"2021-01-01\"}]}"
}

API 消息类型和内容

本节介绍了可以通过 MES 集成 API 交换的每种类型的消息。

开始生产订单消息

对于开始生产订单消息,_messageType 值是 ProdProductionOrderStart。 下表显示了此消息支持的字段。

字段名称 Status 类型
ProductionOrderNumber 强制 字符串
StartedQuantity 可选 实数
StartedDate 可选 日期
AutomaticBOMConsumptionRule 可选 枚举 (FlushingPrincip | Always | Never)

完工入库消息

对于完工入库消息,_messageType 值是 ProdProductionOrderReportFinished。 下表显示了此消息支持的字段。

字段名称 Status 类型
ProductionOrderNumber 强制 字符串
ReportFinishedLines 强制 行列表(至少一个),每个列表都包含下表中描述的有效负载

下表显示了 ProdProductionOrderReportFinished 消息的 ReportFinishedLines 部分中的每一行所支持的字段。

字段名称 Status 类型
LineNumber 可选 实数
ItemNumber 可选 字符串
ProductionType 可选 枚举 (MainItem | Formula | BOM | Co_Product | By_Product | None),可扩展
ReportedErrorQuantity 可选 实数
ReportedGoodQuantity 可选 实数
ReportedErrorCatchWeightQuantity 可选 实数
ReportedGoodCatchWeightQuantity 可选 实数
AcceptError 可选 枚举(是 | 否)
ErrorCause 可选 枚举 (None | Material | Machine | OperatingStaff),可扩展
ExecutedDateTime 可选 日期时间
ReportAsFinishedDate 可选 日期
AutomaticBOMConsumptionRule 可选 枚举 (FlushingPrincip | Always | Never)
AutomaticRouteConsumptionRule 可选 枚举 (RouteDependent | Always | Never)
RespectFlushingPrincipleDuringOverproduction 可选 枚举(是 | 否)
JournalNameId 可选 字符串
PickingListJournalNameId 可选 字符串
RouteCardJournalNameId 可选 字符串
FromOperationNumber 可选 整数
ToOperationNumber 可选 整数
InventoryLotId 可选 字符串
BaseValue 可选 字符串
EndJob 可选 枚举(是 | 否)
EndPickingList 可选 枚举(是 | 否)
EndRouteCard 可选 枚举(是 | 否)
PostNow 可选 枚举(是 | 否)
AutoUpdate 可选 枚举(是 | 否)
ProductColorId 可选 字符串
ProductConfigurationId 可选 字符串
ProductSizeId 可选 字符串
ProductStyleId 可选 字符串
ProductVersionId 可选 字符串
ItemBatchNumber 可选 字符串
ProductSerialNumber 可选 字符串
LicensePlateNumber 可选 字符串
InventoryStatusId 可选 字符串
ProductionWarehouseId 可选 字符串
ProductionSiteId 可选 字符串
ProductionWarehouseLocationId 可选 字符串
InventoryDimension1InventoryDimension12 可选 字符串

12 个可扩展维度(InventoryDimension1InventoryDimension12)需要自定义,不总是使用。 有关详细信息,请参阅通过扩展添加新库存维度

材料消耗(领料单)消息

对于材料消耗(领料单)消息,_messageType 值是 ProdProductionOrderPickingList。 下表显示了此消息支持的字段。

字段名称 Status 类型
ProductionOrderNumber 强制 字符串
JournalNameId 可选 字符串
PickingListLines 强制 行列表(至少一个),每个列表都包含下表中描述的有效负载

下表显示了 ProdProductionOrderPickingList 消息的 PickingListLines 部分中的每一行所支持的字段。

字段名称 Status 类型
ItemNumber 强制 字符串
ConsumptionBOMQuantity 可选 实数
ProposalBOMQuantity 可选 实数
ScrapBOMQuantity 可选 实数
BOMUnitSymbol 可选 字符串
ConsumptionInventoryQuantity 可选 实数
ProposalInventoryQuantity 可选 实数
ConsumptionCatchWeightQuantity 可选 实数
ProposalCatchWeightQuantity 可选 实数
ConsumptionDate 可选 日期
OperationNumber 可选 整数
LineNumber 可选 实数
PositionNumber 可选 字符串
IsConsumptionEnded 可选 枚举(是 | 否)
ErrorCause 可选 枚举 (None | Material | Machine | OperatingStaff),可扩展
InventoryLotId 可选 字符串

用于操作的时间(工艺卡)消息

对于用于操作的时间(工艺卡)消息,_messageType 值是 ProdProductionOrderRouteCard。 下表显示了此消息支持的字段。

字段名称 Status 类型
ProductionOrderNumber 强制 字符串
JournalNameId 可选 字符串
RouteCardLines 强制 行列表(至少一个),每个列表都包含下表中描述的有效负载

下表显示了 ProdProductionOrderRouteCard 消息的 RouteCardLines 部分中的每一行所支持的字段。

字段名称 Status 类型
OperationNumber 强制 整数
OperationPriority 可选 枚举 (Primary | Secondary1 | Secondary2 | ... | Secondary20)
OperationId 可选 字符串
OperationsResourceId 可选 字符串
Worker 可选 字符串
HoursRouteCostCategoryId 可选 字符串
QuantityRouteCostCategoryId 可选 字符串
HourlyRate 可选 实数
Hours 可选 实数
GoodQuantity 可选 实数
ErrorQuantity 可选 实数
CatchWeightGoodQuantity 可选 实数
CatchWeightErrorQuantity 可选 实数
QuantityPrice 可选 实数
ProcessingPercentage 可选 实数
ConsumptionDate 可选 日期
TaskType 可选 枚举 (QueueBefore | Setup | Process | Overlap | Transport | QueueAfter | Burden)
ErrorCause 可选 枚举 (None | Material | Machine | OperatingStaff),可扩展
OperationCompleted 可选 枚举(是 | 否)
BOMConsumption 可选 枚举(是 | 否)
ReportAsFinished 可选 枚举(是 | 否)

结束生产订单消息

对于结束生产订单消息,_messageType 值是 ProdProductionOrderEnd。 下表显示了此消息支持的字段。

字段名称 Status 类型
ProductionOrderNumber 强制 字符串
ExecutedDateTime 可选 日期时间
EndedDate 可选 日期
UseTimeAndAttendanceCost 可选 枚举(是 | 否)
AutoReportAsFinished 可选 枚举(是 | 否)
AutoUpdate 可选 枚举(是 | 否)

其他生产信息

这些消息支持在车间发生的操作或事件。 它们使用本文中描述的 MES 集成框架进行处理。 此设计假设将从系统中检索要与 MES 共享的其他参考信息(如产品相关信息,或特定生产订单中使用的物料清单或工艺路线(及其特定设置和配置时间))将通过文件传输或 OData 使用数据实体从系统中检索。

接收有关消息状态的反馈

在 MES 向 Supply Chain Management 发送消息后,Supply Chain Management 可能需要返回有关消息状态的反馈。 以下是此行为可能相关的一些案例示例:

  • 没有人负责持续监管 MES 集成。
  • 负责监管 MES 集成的人员希望在消息失败时通过电子邮件收到通知,以便他们知道必须采取行动。
  • MES 必须显示错误消息以通知车间操作员或 IT 部门的人员他们必须采取行动。
  • MES 在收到失败消息后必须重新计算订单计划(例如,因为生产订单未能启动)。

在这些情况下,您可以利用 Supply Chain Management 中的标准预警功能。 有关标准预警如何工作的信息,请参阅以下资源:

例如,您可以设置以下预警来提供有关消息状态的反馈:

  • 创建在消息失败时使用的业务事件(“外部发送”)。
  • 向 IT 管理员或生产车间经理发送通知和电子邮件。