Интеграция с системами управления производством независимых разработчиков

Некоторые производственные организации, использующие 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

Для интеграции можно включить любые из следующих процессов или из все.

Наименование процесса Описание
Запуск в производство производственных заказов и бизнес-события изменения статуса производственного заказа Этот процесс предоставляет бизнес-событие, которое может прослушивать система MES, для получения сведений о производственных заказах, которые должны быть произведены. Предполагается, что ссылочные данные, связанные с производственным заказом, предоставляются от Supply Chain Management системе MES через протокол OData (Open Data Protocol) или сущности данных.
Запустить производственный заказ Этот процесс обеспечивает Supply Chain Management сведениями о производственных заказах, которые запускаются с помощью системы MES. Это гарантирует, что обе системы имеют актуальное представление всех производственных действий.
Сообщение о произведенном или списанном количестве Этот процесс обеспечивает Supply Chain Management сведениями о количестве товара и количестве брака, сообщенных для производственного задания с помощью системы MES. Это гарантирует, что супервизоры цеха имеют актуальное представление хода выполнения плана производства.
Сообщение о потреблении сырья Этот процесс обеспечивает Supply Chain Management сведениями из системы MES о количестве потребленных материалов. Он делает актуальные записи запасов доступными для других важных процессов, таких как планирование и продажи.
Сообщение о времени, затраченном на операцию Этот процесс обеспечивает Supply Chain Management сведениями о времени, которое используется для определенной операции.
Завершить производственный заказ Этот процесс информирует Supply Chain Management, что система MES обновила производственный заказ до его последнего статуса Завершено. Этот статус указывает, что в производственном заказе больше не будет произведено никаких количеств.

Мониторинг входящих сообщений

Чтобы отслеживать входящие сообщения MES в системе, перейдите Управление производством > Настройка > Управление производством > Интеграция систем управления производством.

Все сообщения для конкретного производственного заказа обрабатываются в последовательности их получения. Однако сообщения для других производственных заказов не могут быть обработаны в полученной последовательности, поскольку пакетные задания обрабатываются параллельно. В случае сбоя пакетное задание будет пытаться обработать каждое сообщение три раза, прежде чем устанавливать статус Сбой.

Страница Интеграция систем управления производством функционирует так же, как страница Сообщения обработчика сообщений и представляет очень схожую функциональность. (Он даже показывает сообщения MES в дополнение к сообщениям других типов.) Сведения о том, как использовать любую страницу для просмотра сообщений, поиска и исправления сообщений с ошибкой и т. д., см страницу сообщений обработчика сообщений

Вызов API

Для вызова API-интерфейса интеграции системы MES отправьте запрос 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

В этом разделе описывается каждый тип сообщений, которыми можно обмениваться через API интеграции с системой MES.

Сообщение о запуске производственного заказа

Для сообщения о запуске производственного заказа значение параметра _messageType равно ProdProductionOrderStart. В следующей таблице показаны поля, которые поддерживает это сообщение.

Имя поля Статус Тип
ProductionOrderNumber Обязательная аналитика Строка
StartedQuantity Необязательный Действующий
StartedDate Необязательный Дата
AutomaticBOMConsumptionRule Необязательный Перечисление (FlushingPrincip | Always | Never)

Сообщение о приемке

Для сообщения о приемке значение _messageType равно ProdProductionOrderReportFinished. В следующей таблице показаны поля, которые поддерживает это сообщение.

Имя поля Статус Тип
ProductionOrderNumber Обязательная аналитика Строка
ReportFinishedLines Обязательная аналитика Список строк (по крайней мере одна), каждая из которых содержит полезные данные, которые описаны в следующей таблице

В следующей таблице показаны поля, поддерживаемые каждой строкой в разделе ReportFinishedLines сообщения ProdProductionOrderReportFinished.

Имя поля Статус Тип
LineNumber Необязательный Действующий
ItemNumber Необязательный Строка
ProductionType Необязательный Перечисление (MainItem | Formula | BOM | Co_Product | By_Product | None), расширяемое
ReportedErrorQuantity Необязательный Действующий
ReportedGoodQuantity Необязательный Действующий
ReportedErrorCatchWeightQuantity Необязательный Действующий
ReportedGoodCatchWeightQuantity Необязательный Действующий
AcceptError Необязательный Перечисление (Yes | No)
ErrorCause Необязательный Перечисление (None | Material | Machine | OperatingStaff), расширяемое
ExecutedDateTime Необязательный DateTime
ReportAsFinishedDate Необязательный Дата
AutomaticBOMConsumptionRule Необязательный Перечисление (FlushingPrincip | Always | Never)
AutomaticRouteConsumptionRule Необязательный Перечисление (RouteDependent | Always | Never)
RespectFlushingPrincipleDuringOverproduction Необязательный Перечисление (Yes | No)
JournalNameId Необязательный Строка
PickingListJournalNameId Необязательный Строка
RouteCardJournalNameId Необязательный Строка
FromOperationNumber Необязательный Целое число
ToOperationNumber Необязательно Целое число
InventoryLotId Необязательный Строка
BaseValue Необязательный Строка
EndJob Необязательный Перечисление (Yes | No)
EndPickingList Необязательный Перечисление (Yes | No)
EndRouteCard Необязательный Перечисление (Yes | No)
PostNow Необязательный Перечисление (Yes | No)
AutoUpdate Необязательный Перечисление (Yes | No)
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 Необязательный Перечисление (Yes | No)
ErrorCause Необязательный Перечисление (None | Material | Machine | OperatingStaff), расширяемое
InventoryLotId Необязательный Строка

Время, используемое для сообщения об операции (маршрутная карта)

Для сообщения о времени, используемом для операции (маршрутная карта) значение _messageType равно ProdProductionOrderRouteCard. В следующей таблице показаны поля, которые поддерживает это сообщение.

Имя поля Статус Тип
ProductionOrderNumber Обязательная аналитика Строка
JournalNameId Необязательно Строка
RouteCardLines Обязательная аналитика Список строк (по крайней мере одна), каждая из которых содержит полезные данные, которые описаны в следующей таблице

В следующей таблице показаны поля, поддерживаемые каждой строкой в разделе RouteCardLines сообщения ProdProductionOrderRouteCard.

Имя поля Статус Тип
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 Необязательный Перечисление (Yes | No)
BOMConsumption Необязательный Перечисление (Yes | No)
ReportAsFinished Необязательный Перечисление (Yes | No)

Сообщение о завершении производственного заказа

Для сообщения о завершении производственного заказа значение параметра _messageType равно ProdProductionOrderEnd. В следующей таблице показаны поля, которые поддерживает это сообщение.

Имя поля Статус Тип
ProductionOrderNumber Обязательная аналитика Строка
ExecutedDateTime Необязательный DateTime
EndedDate Необязательный Дата
UseTimeAndAttendanceCost Необязательный Перечисление (Yes | No)
AutoReportAsFinished Необязательный Перечисление (Yes | No)
AutoUpdate Необязательный Перечисление (Yes | No)

Другая производственная информация

Сообщения поддерживают действия или события, происходящие в цехе. Они обрабатываются с помощью платформы интеграции MES, которая описывается в этой статье. Дизайн подразумевает, что другие справочные сведения для совместного использования с MES (например, сведения о продукте или спецификация либо маршрут (с определенной настройкой и временем конфигурации), используемые в конкретном производственном заказе) извлекаются из системы с использованием информационных объектов с помощью переноса файлов или OData.

Получение обратной связи о состоянии сообщения

После того как система MES отправила сообщение в Supply Chain Management, для Supply Chain Management может быть уместным вернуть отзыв о состоянии сообщения. Ниже приведены несколько примеров случаев, в которых такое поведение может быть уместным:

  • Нет человека, ответственного за постоянный контроль интеграции с системой MES.
  • Лицо, ответственное за интеграцию с системой MES, хочет получать уведомления по электронной почте о сбое сообщения, чтобы он знал, что нужно предпринять действие.
  • Система MES должна отображать сообщение об ошибке, чтобы сообщить оператору цеха или какому-то сотруднику отдела ИТ о том, что они должны предпринять действие.
  • Система MES должна пересчитывать график заказа после того, как она получит сообщение о сбое (например, из-за того, что не удалось запустить производственный заказ).

В этих случаях можно воспользоваться преимуществом стандартной функции оповещения в модуле Supply Chain Management. Для получения сведений о том, как работают стандартные оповещения, см. в следующих ресурсах:

Например, можно настроить следующие оповещения, чтобы отправить отзыв о состоянии сообщения:

  • Создание бизнес-события ("Послать извне"), которое используется, если сообщение находится в состоянии Сбой.
  • Отправьте уведомление и сообщение электронной почты ИТ-администратору или руководителю производственного цеха.