Exact Online 集成指南:使用 SkyPlanner APS 进行生产排程
本 Exact Online 集成指南向 Exact 合作伙伴和 IT 团队介绍如何将 Exact Online Manufacturing 接入 SkyPlanner APS。SkyPlanner 与 Exact Online 之间支持双向集成:
- 通过 Exact Online REST API 导入生产订单、工艺步骤、物料计划、工作中心、工序和物料清单。
- 导入物料、库存状况、采购订单和销售订单,并通过 Exact Online Webhook 接收变更通知。
- 将计划开始和结束日期回写到各工艺步骤及生产订单。
- 将操作员的工时记录作为工时事务提交,将完工数量作为生产订单收货记录提交。
SkyPlanner 团队会在实施阶段根据您的 Exact Online 配置设置集成,并在上线后提供支持。本指南面向希望参与集成,或自行依据 SkyPlanner 的 REST API 文档(API 参考文档)进行开发的合作伙伴和开发人员。文末还简要介绍了 Exact Globe+。
Exact Online 面向制造业务的 REST API
Exact Online 通过统一的 REST API 提供数据访问,资源按服务分组。基础路径为 /api/v1/{division}/<service>/<resource>,其中 division 表示 Exact Online 中的公司。REST API 参考文档列出了 manufacturing 服务中以下可用于排程的资源:
| 资源 | 数据内容 | 方法 |
|---|---|---|
manufacturing/ShopOrders | 生产订单编号、物料、PlannedQuantity、PlannedStartDate、PlannedDate、状态、下达标志 | GET, POST, PUT, DELETE |
manufacturing/ShopOrderRoutingStepPlans | 各生产订单的工艺步骤:工序、Workcenter、LineNumber、PlannedStartDate、PlannedEndDate、PlannedSetupHours、PlannedRunHours | GET, POST, PUT, DELETE |
manufacturing/ShopOrderMaterialPlans | 各生产订单的物料明细 | GET, POST, PUT, DELETE |
manufacturing/Workcenters | 编码、类型、生产区域、产能值、费率 | GET, POST, PUT, DELETE |
manufacturing/Operations, OperationResources | 工序及其对应的工作中心、准备时间和运行时间 | GET, POST, PUT, DELETE |
manufacturing/BillOfMaterialVersions, BillOfMaterialMaterials, BillOfMaterialRoutings | BOM 版本、组件和工艺路线 | GET, POST, PUT, DELETE |
manufacturing/TimeTransactions | 按生产订单和工艺步骤登记的工时 | GET, POST, PUT, DELETE |
manufacturing/ShopOrderReceipts | 生产订单的完工入库数量 | GET, POST |
manufacturing/MaterialIssues | 向生产订单发放的物料 | GET, POST |
manufacturing/ShopOrderPriorities | 各生产订单的优先级模式 | GET, PUT |
其他服务提供的资源:
| 资源 | 数据内容 |
|---|---|
logistics/Items | 物料主数据 |
inventory/ItemWarehouses | 各物料在各仓库的库存 |
purchaseorder/PurchaseOrders, PurchaseOrderLines | 未结采购订单及收货日期 |
salesorder/SalesOrders, SalesOrderLines | 客户需求及交货日期 |
身份验证与访问
Exact Online 使用 OAuth 2.0,采用授权码流程和刷新令牌。Exact 文档指出:”Before you can start integration with Exact Online, you must first register your app in the App Store.”(开始与 Exact Online 集成之前,必须先在 App Store 中注册应用。)参见Exact Online 帮助文档。注册应用需要订阅 Exact Online Developer(Exact App Store)。
- 将集成注册为应用,并设置重定向 URI。
- 由具有制造、库存和采购访问权限的 Exact Online 用户进行一次授权。
- 每个请求都发送
Authorization: Bearer <access_token>,并在路径中指定 division。 - 使用刷新令牌更新访问令牌。Exact 限制了申请新令牌的频率,因此应缓存令牌并使用至过期。
Exact 还对每个应用和公司的每分钟及每日调用次数设有限制,并要求按顺序调用,而非并行调用。当前限制见 Exact 的API 限制说明。集成设计遵循这些限制:使用 $filter 和 $select 筛选读取数据,并通过 Sync API 处理批量变更。
在 SkyPlanner 端,REST API 通过 Authorization-Token 请求头中的 API 令牌进行身份验证(SkyPlanner 设置 > API),相关文档采用 Swagger/OpenAPI 格式。集成教程逐步介绍了如何进行初次调用。
Webhook 与轮询
当订阅的主题发生变化时,Exact Online Webhook 会向您的回调 URL 发送 POST 请求,并使用 HMAC SHA256 哈希签名(Webhook 说明)。可订阅的主题包括 Items、StockPosition、PurchaseOrders、PurchaseOrderLines、SalesOrders 和 SalesOrderLines。这些通知会在库存、采购和需求发生变化时,将变更实时推送到 SkyPlanner。
生产订单和工艺步骤按设定周期读取。按 Modified 筛选 ShopOrders 和 ShopOrderRoutingStepPlans,批量读取则使用 Sync API(API 使用限制)。
排程发生变化时,SkyPlanner 会发送自身的 Webhook 通知,因此向 Exact Online 回写数据的过程由事件驱动。
数据映射
| Exact Online 资源 | SkyPlanner 对象 | 方向 | 频率 |
|---|---|---|---|
Items | 产品和物料 | Exact Online → SkyPlanner | 先导入,后续通过 Webhook 更新 |
BillOfMaterialVersions, BillOfMaterialMaterials | 产品结构、子产品及各产品所需物料 | Exact Online → SkyPlanner | 发生变更时 |
Workcenters, OperationResources | 工作中心、工作中心组 | Exact Online → SkyPlanner | 首次导入 |
Operations, BillOfMaterialRoutings | 工艺步骤及准备时间、运行时间 | Exact Online → SkyPlanner | 发生变更时 |
ShopOrders | 订单及数量、交期 | Exact Online → SkyPlanner | 每隔几分钟 |
ShopOrderRoutingStepPlans | 生产任务及顺序、工作中心、准备工时和运行工时 | Exact Online → SkyPlanner | 每隔几分钟 |
ShopOrderMaterialPlans | 各生产任务所需物料 | Exact Online → SkyPlanner | 每隔几分钟 |
ItemWarehouses, StockPosition | 库存余额 | Exact Online → SkyPlanner | Webhook 通知 |
PurchaseOrderLines | 含预计交货日期的采购订单 | Exact Online → SkyPlanner | Webhook |
SalesOrderLines | 客户交期和优先级 | Exact Online → SkyPlanner | Webhook |
ShopOrderRoutingStepPlans:PlannedStartDate、PlannedEndDate、Workcenter(PUT) | 各工序的计划开始时间、结束时间及工作中心 | SkyPlanner → Exact Online | 变更时通过 webhook 同步 |
ShopOrders:PlannedStartDate、PlannedDate(PUT) | 订单开始和完成时间 | SkyPlanner → Exact Online | 变更时通过 webhook 同步 |
TimeTransactions(POST) | 工时记录和操作员报工 | SkyPlanner → Exact Online | 每次报工或每个班次同步 |
ShopOrderReceipts(POST) | 末道工序的完工数量 | SkyPlanner → Exact Online | 每次报工时同步 |
| 不在 Exact Online 中存储 | 准备时间矩阵、作为有限资源的工具、各生产任务的操作员、备选工作中心、班次 | 在 SkyPlanner 中维护 | 启用配置阶段 |
集成方式
1. 首次加载主数据。先读取 Workcenters、Operations 和 OperationResources,再读取物料、BOM 版本及其工艺路线。包含三台机器的工作中心可映射为三个工作中心或一个工作中心组。班次、缺勤和加班在 SkyPlanner 中设置,因为 Exact 的每个工作中心只有一个产能值。
2. 订单同步。读取未结的 ShopOrders 及其 ShopOrderRoutingStepPlans 和 ShopOrderMaterialPlans,同时读取库存和采购订单行。排程时会同时检查现有库存和待到货的采购物料。MRP 继续在 Exact Online 中提供订单建议,SkyPlanner 则为您创建的生产订单排程。
3. 排程结果回写。对于引擎安排或移动的每道工序,SkyPlanner 都会向 ShopOrderRoutingStepPlans 发送 PUT 请求,写入 PlannedStartDate、PlannedEndDate 和 Workcenter。生产订单的 PlannedStartDate 和 PlannedDate 分别根据首道工序的开始日期和末道工序的结束日期确定。数量、物料计划和成本核算仍由 Exact Online 管理。
4. 车间报工。操作员通过 SkyPlanner Mobile Confirmations 或 Production Timer 记录作业,工时记录会让排程保持最新。已记录的工时以 TimeTransactions 形式提交,关联到对应的生产订单和工序,并区分准备工时与加工工时。最后一次报工会提交一条 ShopOrderReceipts 记录,登记完工数量。如果工厂已在 Shop Floor Control 中记录工时,请只选用一个记录渠道。
5. 数据归属与冲突处理规则。上线前应以书面形式明确以下规则:
| 数据 | 负责系统 |
|---|---|
| 物料、BOM、生产订单数量、物料计划、成本 | Exact Online |
| 工序顺序、开始和结束时间、工作中心分配 | SkyPlanner |
| 准备时间矩阵、工具、各生产任务的操作员、备选资源、班次 | SkyPlanner |
| 工时记录和完工入库记录 | Exact Online,由 SkyPlanner 提供数据 |
冲突主要来自手动修改日期。如果计划员继续在 Exact Online 中修改生产订单日期,就会出现两个系统同时管理日期的情况。请让 SkyPlanner 统一管理工序日期。启用 Autopilot 后,生产发生变化时,SkyPlanner 会自动重新排程。
典型项目步骤
客户导入工作开始后,实施通常可在数周内完成。在此之前,可将未结生产订单及其工序导出为 CSV 或 Excel 文件,在 30 天免费试用期间验证排程结果。随后按以下步骤推进项目:
- 范围评估。确认版本、公司账套、同步频率、工时记录渠道及完工入库的过账方式。
- 应用注册与授权。注册应用,然后由 Exact Online 用户为每个公司账套授予 OAuth 授权。
- 首次加载。加载工作中心、工序、物料、BOM 版本和工艺路线。
- 订单同步。定时同步生产订单、工序计划和物料计划,通过 webhook 同步库存和采购数据。
- 在 SkyPlanner 中设置约束。设置班次、准备时间矩阵、工具、各生产任务所需的操作员人数,以及备选机器或人员。
- 排程结果回写。先将工序的计划日期回写到 Exact Online,再提交工时记录和完工入库记录。
- 并行测试与上线。将日期与当前计划对比,修正主数据,然后启用回写。
Exact Online 集成需要提前规划的事项
- 工序工时。
PlannedSetupHours和PlannedRunHours来自 BOM 工艺路线。请先对照实际作业时间进行核查。 - 工作中心分组。Exact 为每个工作中心保存一个产能值。请逐一确定各工作中心应映射为一个工作中心、多个工作中心,还是一个工作中心组。
- 日历。班次、节假日和缺勤在 SkyPlanner 中维护。首次排程前请完成设置。
- 调用额度。Exact 按应用和公司限制调用次数,并要求按顺序调用。有对应主题时使用 webhook,通过
$filter按Modified筛选,批量读取则使用 Sync API。 - 多个公司账套。Exact Online 中的每个公司账套都代表一家公司,具有独立的路径和授权。请将各工厂映射到对应的公司账套。
- 已下达的生产订单。约定 SkyPlanner 可以修改哪些状态的订单日期:未结和已下达的订单,还是仅限未结订单。
- 日期由一个系统统一管理。工序日期交由 SkyPlanner 管理后,就不要再在 Exact Online 中手动修改日期。
Exact Globe+
Exact Globe+ 是 Exact 旗下的 ERP,通过 Exact Globe+ 合作伙伴销售和实施。Exact 表示,该产品“koppelt eenvoudig en snel met andere systemen”(可轻松、快速地与其他系统连接,见 Exact Globe+)。SkyPlanner 以同样的方式为 Exact Globe+ 生产订单排程:导入生产订单、工艺路线、资源和库存,再回写计划日期及已记录的工时。您的 Exact Globe+ 合作伙伴与 SkyPlanner 团队会在范围评估阶段商定接口和回写对象。
Exact Online 集成由谁配置和支持
- SkyPlanner 团队在客户导入阶段配置集成,并在上线后提供支持。
- 您的 Exact 合作伙伴可以参与。合作伙伴了解您使用的版本、公司账套和制造配置。
- 您自己的开发人员也可以在此基础上扩展开发,依据 SkyPlanner 的 REST API 文档进行对接。只需一个 API 令牌即可开始,SkyPlanner 团队会在需要时提供协助。
连接完成后,Arcturus 引擎会根据 Exact Online 中的实时生产订单排程,并将计划日期写入每道工序。SkyPlanner 每月 199 € 起,包含 5 个工作中心,按月计费。集成费用会根据您的流程和需求,与所选套餐一并提前报价,让您在开始前了解全部费用。您可以查看价格和功能,也可以阅读 Exact Online 生产排程,了解它与 Exact Online 自带计划功能的对比。集成概览见 Exact Online 页面,其他 ERP 的对接信息见 ERP 集成中心。
制造企业对 SkyPlanner 的评价
减少缺料停工
“SkyPlanner 为我们带来的价值在于,它是一款在日常工作中真正实用的工具,尤其是在确定交货日期方面。”
Tommi Männistö,生产计划经理
Eskomatic · 机加工承包
自动负荷排程让交货日期更准确,因缺料导致的生产停工也大幅减少。
数以 1,000 计的工单自动完成排程
“我们对生产的掌控今非昔比,对产能的了解也达到了全新的水平。”
Hannu Ryynänen,首席执行官
Mamec · 工业搅拌机、泵及高科技合同制造
数千张工单自动完成排程,全公司都能实时掌握生产情况。
常见问题
Exact Online API 是否包含生产订单和工序?
是的。制造服务提供 ShopOrders、ShopOrderRoutingStepPlans、ShopOrderMaterialPlans、Workcenters、Operations 及 BOM 资源,均支持读取和写入。工时通过 TimeTransactions 提交,完工数量通过 ShopOrderReceipts 提交。
计划日期如何回写到 Exact Online?
SkyPlanner 每安排或移动一道工序,都会向 ShopOrderRoutingStepPlans 发送 PUT 请求,包含该工序的 PlannedStartDate、PlannedEndDate 和 Workcenter。生产订单的 PlannedStartDate 和 PlannedDate 也会相应更新。
由谁负责开发 Exact Online 集成?
SkyPlanner 团队会在实施阶段根据您的 Exact Online 配置完成双向集成,并在上线后提供支持。您的 Exact 合作伙伴也可以参与。您自己的开发人员也可以根据 SkyPlanner 的 REST API 文档进行开发,只需一个 API 令牌即可开始。
Exact Online 能否实时推送变更?
Exact Online 通过 webhook 推送物料、库存状况、采购订单和销售订单的变更。生产订单和工艺路线中的工序则通过带筛选条件的请求,以较短间隔定期读取。反向传输时,SkyPlanner 通过 webhook 实时推送排程变更。