與第三方製造執行系統整合
一些使用 Microsoft Dynamics 365 Supply Chain Management 的製造組織,會使用 Dynamics 365 中的原生功能來控制其機器、設備和人員的製造活動。 但其他製造組織,尤其是那些具有進階製造需求的製造組織,會使用第三方製造執行系統 (MES)。 組織可能會依據各種原因選擇第三方 MES 解決方案,例如解決方案是專為組織的垂直產業量身訂製的。
在整合式解決方案中,資料交換是完全自動化的,並且幾乎是即時發生的。 因此,兩個系統中的資料都保持最新,無需手動輸入資料。 例如,在 MES 中登記材料消耗時,整合可確保在 Dynamics 365 中也登記相同的消耗。 因此,最新的庫存記錄可用於其他重要流程,例如計劃和銷售。
該解決方案使 Supply Chain Management 使用者能夠更快、更輕鬆、更便宜地與第三方 MES 整合。 其中提供的功能如下:
- 支援 關鍵製造執行流程的業務事件和介面
- 中央儀表板,您可以在其中追蹤事件處理歷程記錄,並對失敗的流程進行疑難排解和修復
下圖顯示了在整合式解決方案中交換的一系列典型業務事件、流程和訊息。
開啟 MES 整合功能
在您可以使用此功能之前,管理員必須按照以下步驟在您的系統中開啟該功能。
- 前往系統管理 > 設定 > 授權設定。
- 確保 時間和出勤 許可證金鑰已啟用(顯示複選標記)。 此授權金鑰是必需的,因為它控制製造執行系統的功能和資料。 如果未啟用,請執行下列步驟:
- 前往 系統管理 > 工作區 > 功能管理。
- 使用 功能管理 工作區啟用 製造執行系統整合 功能。 (從 Supply Chain Management 版本 10.0.29 開始,此功能預設為開啟。從 Supply Chain Management 10.0.32 版開始,此功能為強制開啟,無法關閉。)
可用於 MES 整合的流程
您可以啟用以下任何或所有流程進行整合。
流程名稱 | 描述 |
---|---|
下達生產訂單和生產訂單狀態變更業務事件 | 此流程提供了一個 MES 可以監聽的業務事件,以獲取有關應該生產的生產訂單資訊。 與生產訂單相關的參考資料預計將透過開放式資料通訊協定 (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,請將 POST
請求傳送至下列端點 URL:
/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
。 下表顯示了此訊息支援的欄位。
欄位名稱 | 狀態 | 類型 |
---|---|---|
ProductionOrderNumber |
強制 | 字串 |
StartedQuantity |
可選項目 | 里耳 |
StartedDate |
可選項目 | 日期 |
AutomaticBOMConsumptionRule |
可選項目 | 列舉(FlushingPrincip | 永遠 | 從不) |
完工報告訊息
對於 報告已完成 訊息, _messageType
值為 ProdProductionOrderReportFinished
。 下表顯示了此訊息支援的欄位。
欄位名稱 | 狀態 | 類型 |
---|---|---|
ProductionOrderNumber |
強制 | 字串 |
ReportFinishedLines |
強制 | 行清單 (至少一個),每個清單包含下表說明的承載 |
下表顯示了 ReportFinishedLines
訊息的 ProdProductionOrderReportFinished
部分中的每一行支援的欄位。
欄位名稱 | 狀態 | 類型 |
---|---|---|
LineNumber |
可選項目 | 里耳 |
ItemNumber |
可選項目 | 字串 |
ProductionType |
可選項目 | 枚舉(MainItem | Formula | BOM | Co_Product | By_Product | None),可擴充 |
ReportedErrorQuantity |
可選項目 | 里耳 |
ReportedGoodQuantity |
可選項目 | 里耳 |
ReportedErrorCatchWeightQuantity |
可選項目 | 里耳 |
ReportedGoodCatchWeightQuantity |
可選項目 | 里耳 |
AcceptError |
可選項目 | 枚舉(是 | 否) |
ErrorCause |
可選項目 | 枚舉(無 | 材料 | 機器 | OperatingStaff),可擴展 |
ExecutedDateTime |
可選項目 | DateTime |
ReportAsFinishedDate |
可選項目 | 日期 |
AutomaticBOMConsumptionRule |
可選項目 | 列舉(FlushingPrincip | 永遠 | 從不) |
AutomaticRouteConsumptionRule |
可選項目 | 枚舉(RouteDependent | 始終 | 從不) |
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 |
選擇性 | 字串 |
InventoryDimension1 到 InventoryDimension12 |
選擇性 | 字串 |
12 個可擴展維度(InventoryDimension1
到 InventoryDimension12
)需要自訂,並且並非總是使用。 有關它們的詳細信息,請參閱 透過擴充功能新增新的廣告資源維度。
材料消耗 (揀料單) 訊息
對於 物料消耗(領料清單) 訊息, _messageType
值為 ProdProductionOrderPickingList
。 下表顯示了此訊息支援的欄位。
欄位名稱 | 狀態 | 類型 |
---|---|---|
ProductionOrderNumber |
強制 | 字串 |
JournalNameId |
選擇性 | 字串 |
PickingListLines |
強制 | 行清單 (至少一個),每個清單包含下表說明的承載 |
下表顯示了 PickingListLines
訊息的 ProdProductionOrderPickingList
部分中的每一行支援的欄位。
欄位名稱 | 狀態 | 類型 |
---|---|---|
ItemNumber |
強制 | 字串 |
ConsumptionBOMQuantity |
選擇性 | 真實 |
ProposalBOMQuantity |
選擇性 | 真實 |
ScrapBOMQuantity |
選擇性 | 真實 |
BOMUnitSymbol |
選擇性 | 字串 |
ConsumptionInventoryQuantity |
選擇性 | 真實 |
ProposalInventoryQuantity |
選擇性 | 真實 |
ConsumptionCatchWeightQuantity |
選擇性 | 真實 |
ProposalCatchWeightQuantity |
選擇性 | 真實 |
ConsumptionDate |
選擇性 | 日期 |
OperationNumber |
可選項目 | 整數 |
LineNumber |
可選項目 | 里耳 |
PositionNumber |
可選項目 | 字串 |
IsConsumptionEnded |
可選項目 | 枚舉(是 | 否) |
ErrorCause |
可選項目 | 枚舉(無 | 材料 | 機器 | OperatingStaff),可擴展 |
InventoryLotId |
可選項目 | 字串 |
作業時間 (途程卡) 訊息
對於 操作(路由卡) 訊息所用的時間, _messageType
值為 ProdProductionOrderRouteCard
。 下表顯示了此訊息支援的欄位。
欄位名稱 | 狀態 | 類型 |
---|---|---|
ProductionOrderNumber |
強制 | 字串 |
JournalNameId |
選擇性 | 字串 |
RouteCardLines |
強制 | 行清單 (至少一個),每個清單包含下表說明的承載 |
下表顯示了 RouteCardLines
訊息的 ProdProductionOrderRouteCard
部分中的每一行支援的欄位。
欄位名稱 | 狀態 | 類型 |
---|---|---|
OperationNumber |
強制性 | 整數 |
OperationPriority |
可選項目 | 枚舉(主 | 次要 1 | 次要 2 | ... | 次要 20) |
OperationId |
可選項目 | 字串 |
OperationsResourceId |
可選項目 | 字串 |
Worker |
可選項目 | 字串 |
HoursRouteCostCategoryId |
選擇性 | 字串 |
QuantityRouteCostCategoryId |
選擇性 | 字串 |
HourlyRate |
選擇性 | 真實 |
Hours |
選擇性 | 真實 |
GoodQuantity |
選擇性 | 真實 |
ErrorQuantity |
選擇性 | 真實 |
CatchWeightGoodQuantity |
選擇性 | 真實 |
CatchWeightErrorQuantity |
選擇性 | 真實 |
QuantityPrice |
選擇性 | 里耳 |
ProcessingPercentage |
可選項目 | 里耳 |
ConsumptionDate |
可選項目 | 日期 |
TaskType |
可選項目 | 枚舉(QueueBefore | 設定 | 進程 | 重疊 | 傳輸 | QueueAfter | 負擔) |
ErrorCause |
可選項目 | 枚舉(無 | 材料 | 機器 | OperatingStaff),可擴展 |
OperationCompleted |
可選項目 | 枚舉(是 | 否) |
BOMConsumption |
可選項目 | 枚舉(是 | 否) |
ReportAsFinished |
可選項目 | 枚舉(是 | 否) |
結束生產訂單訊息
對於 最終生產訂單 訊息, _messageType
值為 ProdProductionOrderEnd
。 下表顯示了此訊息支援的欄位。
欄位名稱 | 狀態 | 類型 |
---|---|---|
ProductionOrderNumber |
強制性 | 字串 |
ExecutedDateTime |
可選項目 | DateTime |
EndedDate |
可選項目 | 日期 |
UseTimeAndAttendanceCost |
可選項目 | 枚舉(是 | 否) |
AutoReportAsFinished |
可選項目 | 枚舉(是 | 否) |
AutoUpdate |
可選項目 | 枚舉(是 | 否) |
其他生產資訊
這些訊息支援車間發生的操作或事件。 它們是使用本文中描述的 MES 整合框架進行處理的。 此設計假設將從系統中檢索與 MES 共享的其他參考資訊(例如產品相關信息,或特定生產訂單中使用的物料清單或路線(及其特定設定和配置時間))透過文件傳輸或 OData 使用 資料實體 。
接收有關訊息狀態的意見反應
在 MES 向 Supply Chain Management 發送訊息後,Supply Chain Management 可能會傳回有關訊息狀態的意見反應。 這種行為也許能在以下情況範例中派上用場:
- 沒有人負責不斷監督 MES 整合。
- 負責監督 MES 整合的人希望在訊息失敗時收到電子郵件通知,以便讓他們知道必須採取行動。
- MES 必須顯示錯誤訊息,以通知車間操作員或 IT 部門人員必須採取行動。
- MES 必須在收到失敗訊息 (例如,因為生產訂單啟動失敗) 後重新計算訂單排程。
在這些情況下,您可以利用 Supply Chain Management 中的標準警示功能。 有關標準警示如何運作的資訊,請參閱以下資源:
- 幫助文章: 警報概述
- 影片: 財務和營運中的警報規則選項
例如,您可以設定以下警示以提供有關訊息狀態的意見反應:
- 建立一個在訊息 失敗時使用的業務事件(「外部發送」)。
- 向 IT 管理員或生產車間經理發送通知和電子郵件。