• 易排通用规划平台,以Excel作为数据源的调用方法与数据文件说明


            感谢各位对我们规划平台的支持,对于小伙伴们提出的宝贵建议我们会收集起来,整理成改进清单。基于这个清单实现并发布对应的功能。这新发布的具有通用性的功能都会纳入我们的通用版本中。选择了购买通用永久授权版本+订阅服务的小伙伴,新加入的功能都会及时推送给各位,并提供相关的资料辅助使用,也可联系本人提供在线支持。购买了一次性永久使用授权的小伙伴,则可享受永久的缺陷修复服务,若在我们自己的开发、优化过程中发现新的系统缺陷,也会收到我们的推送,并提供免费修复服务。

            今天我们发布了首个比较大的功能更新,Excel文件作为数据源的输入待排数据,并以Excel文件作为规划结果输出的功能。以方便我们的小伙伴中一些不参与技术研发的同事们,也能很好地体验我们的规划平台。只要根据我们定义好的格式,把自己企业场景中的规划数据填写进Excel文件,即可使用平台的规划运算服务。

            以下是该功能的操作简单,大家可以先行观看了解其效果,本文后面的内容则是对于Excel文件具体介绍,及本平台的一些特有概念释义.

    Excel作为数据源进行规划

    Excel文件的规划操作

            可以按下面的步骤来尝试一下我们这个Excel格式的规划功能。

    1.    使用浏览器打开页面 http://apsengine.cn:8084/mo/upload,点击【选择文件】。如下图:

    2.    选择装有待排数据的Excel文件, 并点击【启动规划】按钮。

    该文件可以从以下路径获取,打开链接里面的MOInput.xlsx即为示例文件:

    https://pan.baidu.com/s/1OhwkOzNTYezWVenCiDHR_g?pwd=espl

    选择文件如下图

    3.    点击【启动规划】按钮后,文件将会上传到平台服务器,规划服务程序会读取该文件中的数据,进行数据展开操作,构建规划空间,并启动引擎进行规划运算。在此过程中,会将运算过程中的评分与中间结果返回到页面中。如下图:

    4.  引擎运算完毕(目前设置的是1分钟运行时间)后,会将规划结果生成为Excel文件并自动下载。若你的浏览器下载不成功,可以点击评分信息与甘特图之间的【下载规划结果】链接下载,

            以上就是进行Excel格式数据的规划操作过程。下面我们来讲解一下,导入的Excel数据文件中的内容及其意义。大家可以基于我们提供的示例数据文件基础上,将自己企业的规划场景的数据填进去测试。

    数据文件介绍

            通过Excel方式作为数据源时,需要按指定格式将待排数据填入Excel文件中,程序才能正确识别各种数据。引擎接收到该Excel文件后,文件所提供的数据会被展开,生成一个规划请求对象。同理,对于规划的结果,也会以指定格式的Excel文件输出。本节我们对这两份Excel文件的内容进详细介绍。

    输入数据(待排数据)

            输入数据的文件示例文件可以从以下路径下载,所下载的文件可直接用于调用规划接口进行测试,如上一章节的操作。该文件的内容包括以下8个表。

    8个表分别包含了以下数据:

    • 规划信息: 【0.规划请求信息】表包含了规划过程中的整体参数,包括规划周期、时间粒度等。

    • 工单: 【1.工单】包含本次需要规划的工单列表,一个工单来自一个订单的需求信息(例如需求数量、交货期),和这个订单需要交付产品的工艺信息(例如工艺路线)。

    • 工艺路线: 【2.工艺路线包含了各个产品对应的工艺路线,一个工序与其后续工单的关系构成工序路线信息。在该表中,还包含了各个工序的任务基本时长和静置时间,详情见该表详细说明章节。

    • 工序与资源关系:【3.工序与资源关系】表包含了各个工序与其可用资源的映射关系。提供了每个工序可用的资源列表。在规划运算过程中,对各个任务进行资源分配时,会通过该表中的数据来限制各个任务的可用资源范围。该表中还包含了加工任务时间长等信息,加工任务时间长与【2.工艺路线】表中对应关系,见工序与资源关系中的具体描述。

    • 资源需求组合:【4.资源需求组合】表中“资源需求组合”是本系统特有名词,为了解决一个任务需要多个或多种资源同时配合完成的情况,因此,将加工一个任务所需的资源需求列表,组合成一个“资源需求组合”。【4.资源需求组合】表中包含了当前定义好的各种资源需求组合。

    • 资源池:【5.资源池】表包含了当前可使用的资源列表,【4.资源需求组合】表中的“资源编号“列对应的即为【5.资源池】表中的”ID“列。

    • 资源可用列表:【6.1.资源可用列表】表中的数据,表示了每个资源的可用信息,即表示一个资源在哪个时间段有多少资源量可用。

    • 资源日历:【6.2.资源日历】表展示的是另外一种表示资源可用性的方式,当大多数资源的工作时间都一致时,使用【6.1.资源可用列表来表示资源的可用性时,会出现大量的冗余数据。通过【6.2.资源日历】的数据,令多个具有相同工作时间的资源使用相同的日历信息,从而实现信息精简。

    如何规划、规划什么? -【0.规划请求信息】

            该表中的数据包含了本次规划的一些总体、概览性的信息,该表中的信息会作为规划对象的参数,用于构建规划空间。在该表中,信息以键值对的方式提供,其中A列为键,B为值,每一行的AB两列构成一个信息,其中C列仅起到说明作用,并非必要,供用户理解或填写一些说明性的内容,引擎并不会读取该列的数据。

    规划信息表示例数据如下

    表中各行的意义与作用:

    • 规划编号:本次计划的编号,仅用于人工识别。

    • 开始时间:本次规划周期的开始时间,所有的资源均按以该时间作为起始可用时间。例如若该时间填写 2022-03-01 00:00:00, 则所有可用资源均在此时间后才可用,任务只能排在该时间点后面。

    • 结束时间:同上,表示本次规划周期的结束时间,所有资源仅在该时间前可用。

    • 规划时间单位:时间粒度,即规划过程中最细的时间粒度。例如设置该字段为HOUR,则任务的长度、资源的使用时间最小可以表达到小时。因为我们面临的规划场景千差万别,因此,提供了较多选择,可见文后的时间单位(粒度)表-表1

    • 结果接收方式: 表示规划运算后,结果的保存方式,共有3种,分别是(WEB_API – 调用侦听接口,以JSON格式反馈结果;EXCEL-以规划结果保存到Excel文件中,通用指定接口下载Excel文件; DATABASE – 将结果保存到指定的数据库。

    • 结果接收WebAPI:若【结果接收方式】填写了WEB_API, 则需要在此填写接收API的URL

    • 结果接收数据库:若【结果接收方式】填写了DATABASE,则在此填写数据连接串,目前仅支持MySQL数据库

    • 数据库帐号:同上,保存结果的数据库登录帐号

    • 数据库密码:同上,保存结果的数据库登录密码

    • 规划策略:选择优化目标,暂时不用。

    • 均衡字段:暂时不用

    • 日期格式:规划的时间格式,可以是yyyy/MM/dd HH:mm:ss等

    • 实时规划:暂时不用。

    排什么?– 【1.工单

            【1.工单】表中包含了待排的生产工单信息。一个工单通常是由销售订单的需求(包含数量、交付期等)和工艺信息(包括产品的结构、工序制约与资源需求等)。本表的工单信息主要包括了工单生产过程中的主体需求,例如数量、日期等,而不包括资源需求等信息。资源需求信息会在其它表中提供。

    工单示例数据如下图。

    表中各列意义如下:

    • ID: 工单ID,一个工单的唯一识别ID;不可重复,不可为空。

    • 工单编号: 工单编号,仅起人工识别作用

    • 产品ID: 当前工单对应的产品ID,一个工单与一个产品对应。

    • 产品编号:产品编号,仅起人工识别作用。

    • 产品名称: 产品名称,仅起人工识别作用。

    • 数量: 当前工单需要生产的产品数量,通过产品数量与资源需求组合的车速可计算出一个任务的加工时长。

    • 优先级:表示当前工单的优先级。在同一资源下,优先级越高的工单,其产生的任务越优先加工。优先级列的值由数字表示,数值越小优先级越高。

    • 排程方向:分别有正排(该列的值为FORWARD),与倒排(该列的值为BACKWARD)。当该列为空时,默认为FORWARD.

           正排 - 是指以工单的就绪时间(即最早可开始时间)为起点往后推导工序路线中各个任务的开始、结束时间。

          倒排 – 是批以工单的交付时间为(即最晚完成时间)为终点往前推导工序路线中各个任务的开始、结束时间。

    • 任务开始控制:若一个产品的工序路线存在多个加工路径,除关键路线外,其它路径理论上必然存在至少一个开始、结束时间可移动的任务,当该列为:

          ASAP  - (As Soon As Possible的简写)时,表示这类可移动的任务会尽可能靠前加工,即尽早处理。

          ALSP - (As Late As Possible),与ASAP相反,若输入此值时,上述可移动的任务会尽可能靠后加工。

    • 就绪时间:一个工单的最早可开始时间,通常是一个产品完成工艺设计、资源准备就绪后的最早可开始时间,即第一道工序的最早可开始时间。

    • 交付时间:一个工单根据订单的交付时间,推导出来加工生产的最晚完成时间,即最后一道序的最晚完成时间。

    工序间有哪些制约关系? - 【2.工艺路线

            在生产制造过程中,我们获得一个工单生产需求并没办法立刻对其进行生产,因为现代工业的加工体系所,一个产品各个加工步骤或组成部件,被分拆成多个工序或半成品,由不同的生产单位(例如产线、工位)专门负责,才能达到最高效率。但这些构成同一产品的加工步骤或部件必须存在前后依赖关系。多个步骤根据工艺设计形成的加工序列,即称为工艺路线。本表中每一行表示一个产品中的一个工序(或部件、或半成品),它们之间存在前后依赖关系,即通常情况下,需要先完成前工序才能开始下一工序。

    工序路线表中的示例数据如下图?

    该表每行表示一个工序,及它其中一个(或唯一一个)后续工序,及工序的基本时长等信息。

    表中各列意义如下:

    • ID:一行(即一个工序)的唯一识别ID;不可重复,不可为空。

    • 产品ID:当前工序所属的产品ID,产品ID列相同的数行表示同一产品下的多个工单,例如上图中,同一种颜色,其产品ID一样,表示该产品下对应的工序。

    • 产品编号:仅起人工识别作用。

    • 产品名称:仅起人工识别作用。

    • 工序ID:表示一个工序在一个产品中的识别ID,在同一个产品中工序ID具有唯一性,即同一产品中,不能出现重复的工序ID

    • 工序编号:仅起到人工识别作用.

    • 工序名称:仅起到人工识别作用.

    • 后置工序ID:表示当前工序的后置工序ID,工序路线构成的核心 结构,需要注意如下:

                1.    在生成数据时,一个工序的后置ID,必须存在于当前产品下。例如上图中产品-01的“工序-04“,其后置ID是6,则”产品-01“中必然存在一个ID为6的工序,否则数据不合法。

                2.    一个工序可以有一个或多个后置工序, 即工序分支的情况。

                3.    多个工序可以指向同一个后置工序,即工序合并情况。

    • 任务基本长:表示加工当时任务的基本用时。关于任务的加工时长,平台支持两种计算方法,一种是直接给任务加上时间,适用于任务时长可以直接从ERP、MES中读取的情况。若属于该种情况,可以使用该字段将任务的基本加工时间长提供给平台。另一种是通过工单的生产数量(即【1.工单】表中的”数量”列)除以资源需求组合的车速来得到加工时间长。

    • 静置时间:表示一个工序加工完成后,需要待多长时间才能流入下一工序。体验版中未开放该功能。

    使用哪些设备、人工进行生产? - 【3.工序与资源关系】

                    对于各个设计好的生产任务,必然有相应的机台、设备、物料及人员进行加工,但因为不同的工序所需的加工操作与参数并不相同,因此,每个工序必然有自己的可选机台、设备等。这些机、设备、物料和人力等用于生产加工的因素,在平台上统称资源。在【3.工序与资源关系】表中,列出具体每个加工任务可使用哪些资源。

    而在我们不同场景的任务与资源匹配中,有些任务有可能只需一个,或者一种资源进行加工,而有些场景下则有可能需要使用多种资源同时配合才能完成加工。为了兼容各种场景,我们定义了“资源需求组合“的概念,在英语上称为Resource Requirement Group, 因此,我们在平台上将该名称的首字母RRG作为资源需求组合,后续讲到资源需求组合,我们都使用RRG简化。

            例如,有一个任务加工只需要一台A型机台,那么我们就定义一个RRG - A,这个RRG - A包含了这个A型机台,即使用RRG对资源进行包装。

            又如:有一个加工任务需要两人员+一个A型机台+一个B型模具进行加工,那么我们可以定义一个RRG-B,它包括了:人员2个 + A型机台1台 + B型模型1台,共4个资源。

    【3.工序与资源关系】表,表达了每个【任务-RRG】的映射关系。

    该表的示例数据如下:

    该表每行表示一个工序可使用的一个RRG(即表达了一个工序与一个RRG的对应关系)。及使用该RRG的加工效率等信息。

    该表中各列意义如下:

    • ID:一个工序与RRG的关系记录ID;不可重复,不可为空。

    • 产品ID:表示工序所属的产品的ID

    • 工序ID:表示当前【工序-RRG关系】中的工序ID

    • 产品-工序编号:表示当前关系的编号,仅起到人工识别作用。

    • 资源需求组合ID: 当前【工序-RRG】关系中的RRG ID,即【4.资源需求组合表中的【资源需求组合ID】列关联。

    • 效率(车速): 当前工序使用该RRG ID进行加工时的加工效率,即车速,表示在单位时间内加工的任务数量。

    • 任务加工时长: 当前任务使用当前RRG时,加工一个任务所需的时长,该字段与【效率(车速):】二选一。

    • 优先级:资源优先级,同一工序引用不同RRG时,表示优先使用哪一个。该列是数值类型,值越小,优先级越高。

    各种资源如何配合 – 【4.资源需求组合

    如上述关于资源的描述,要表达一个加工与资源之间的匹配,在某些复杂场景下,不可能仅使用 “任务-资源“的简单对应关系来实现。因此本平台定义了一个”资源需求组合“的概念,取其英文(Resource Requirement Group)首字母RRG作为简单称,以下对资源需求组合对象,均称为RRG。

    在【4.资源需求组合】表中,【资源需求组合ID(B列)相同的记录构成一个RRG.

    【4.资源需求组合】表中的示例数据如下:

    表中各列意义详情如下:

    • ID: RRG记录的唯一ID ;不可重复,不可为空。

    • 资源需求组合ID:RRG对象的ID,与【3.工序与资源关系中的【资源需求组合ID(E列)关联,该列相同的的一行或多行代表一个RRG对象,例如上表中,单元格B2,B3的值同为1,因此,第2,3两行表示同一个ID为1的RRG,它包含了两个资源,分别是RES01、RES02.

    • 资源需求组合编号:仅起到人工识别作用

    • 资源ID:组成当前RRG的其中一个(也可能是唯一个)资源的ID

    • 资源编号:仅起人工识别作用

    • 资源需求量:当前RRG对当前资源的数量需求

    有哪些资源可用? – 【5.资源池】

            【5.资源池】表是资源的主档资料,表示了当前规划中,有哪些资源可以使用,这些资源在哪些时间段,有多少资源量可用。

    【5.资源池】表的示例数据如下:

    表中各列意义如下:

    • ID:资源的唯一ID;不可重复,不可为空。

    • 资源编号:仅起人工识别作用。

    • 所属项目ID:该字段暂不使用,可以留空。未来用作局部资源标识。

    • 资源可用性类型:资源可用性是表现了一个资源在不同的时间段可提供的资源量。本平台提供两种资源可用性表示方式,分别为:

    • CALENDAR– 使用资源日历方式,需要结果【6.2.资源日历表来表达一个资源的可用性。若使用日历方式,【日历ID(E列)不能为空。

    • AVAILABLE_LIST – 使用【6.1.资源可用列表中的数据来表达一个资源的可用性

    • 日历ID:若【资源可用性类型(D列),的值为CALENDAR时,本列有用,与【6.2.资源日历表中的【日历ID(B列)关联。

    资源什么时候、有多少量可用? – 【6.1.资源可用列表

            资源可用量,是用于表达一个资源在时间(什么时候能用)和空间(有多少可用)两个维度的可用性。本平台的资源可用性有两种表达方式,分别是CALENDARAVAILABLE_LIST,在资源列表【5.资源池】的【资源可用性类型】(D列)中可填上述两种之一,若填写的是AVAILABLE_LIST,则表示通过资源可用性列表(6.1.资源可用列表)来表达资源的时间与空间上的可用情况。

    【6.1.资源可用列表】的示例数据如下:

    表中各列意义如下:

    • ID:当前资源可用性记录的唯一ID;不可重复,不可为空。

    • 资源ID:当前可用性对应的资源ID,与【5.资源池表中的【ID(A列)关联

    • 资源可用性编号:仅起人工识别作用。

    • 开始时间:当前资源可用性的开始时间,即当前时间以后,该资源才可用。

    • 结束时间:当前资源可用性的结束时间,即当前时间之前,该资源才可用。

    • 可用量:一个资源在该时间段内的可用数量。

        关于资源可用量,需要按以下逻辑理解;本文最后有更详细讲解。

            当我们定义的资源对应于实物中的具体对象时,例如一个资源对应于我们具体哪个车间,哪个产线上的哪台设备,那么,这台设备是具有唯一性的,此时,我们的计划中的资源是排到资源对象的,例如我们的计划是排到具体机台的。此时,【可用量】的值必须为1(因为这个世界上只有这一台这样的设备)。

            当我们排计划时,资源是排到一个类型,或一个组的,而不是排到具体的一台设备的。例如,我们有3台型号为 Machine-A的机台,而我们的计划只需要以Machine-A作为资源使用,而不需要到Machine-A中的具体哪一些。那么,此时对于Machine-A这资源,我们的可用量是3台,那么【可用量】这列的值应该设置为3.

    资源什么时候、有多少量可用?– 【6.2.资源日历

            表达一个资源的可用性另一种方法是通过资源日历方式。多个资源的工作日历相同时,使用上一步的【6.1.资源可用列表中表达资源的可用情况时,会出现大量冗余数据。此时,可以使用【6.2.资源日历来简化资源的可用信息。

    该列的示例数据如下:

    表中各列意义如下:

    • ID:当前资源可用性记录的唯一ID;不可重复,不可为空。

    • 日历ID:当前资源的日历ID,同一个日历ID的多条记录,表示同一个资源的不同时间段的可用性。与【5.资源池表中的【日历ID(E列)关联。

    • 编号:仅起人工识别作用。

    • 开始时间:当前资源可用性的开始时间,即当前时间以后,该资源才可用。

    • 结束时间:当前资源可用性的结束时间,即当前时间之前,该资源才可用。

    • 可用量:资源在指定时间段内的可用量,与【6.1.资源可用列表表中的同名列相同意义。

    排程结果(结果文件)

            规划结果会在规划运算完成后,以Excel文件的格式自动下载到本地。其中只有一个表,该表只表达出一个任务的时空分配即可;即一个任务使用哪些资源,从什么时候开始执行,到什么时候完成。通过列表可以推导出更多的信息。如资源需求计划、人员排班计划等。

    该表各列的意义如下:

    • 工单ID:表示当前任务的来源工单,来自【1.工单】表的【ID】(A列)。

    • 工单编号:当前任务来源工单的编号,来自【1.工单】表的【工单编号(B列)。

    • 产品ID:当前任务所属的产品ID,来自【1.工单】表的【产品ID】(C列) 。

    • 产品编号:当前任务所属的产品编号,来自【1.工单】表的【产品编号】(D列) 。

    • 工序ID:派生出当前任务的工序ID,来自【2.工艺路线】表的【工序ID】(E列)。

    • 工序编号:派生出当前任务的工序编号,来自【2.工艺路线】表的【工序编号】(F列)。

    • 资源需求组合ID:分配到当前任务的RRG对象的ID,来自【3.工序与资源关系】表的【资源需求组合ID】,所有资源组合均来自【4.资源需求组合】表。

    • 资源需求组合编号:分配到当前任务的RRG对象的编号,来自【4.资源需求组合】表的【资源需求组合编号】(C列)

    • 资源ID:分配到当前任务的RRG所包含的资源ID列表(一个RRG可以由多个资源构成),当一个RRG只包含一个资源时,该列表只有一个资源ID。

    • 资源编号:分配到当前任务的RRG所包含的资源名称列表

    • 开始时间:当前任务的计划开始时间。

    • 完成时间:当前任务的计划结束时间。

    对于数据文件的进一步解读

    资源的定义

            在本平台中,并没有提及机台、产线、物料等排产的必须概念。事实上为了实现对大多数场景的兼容,在设计时,会将上述影响任务执行的所有必要条件,抽象成“资源”。即不管是机台、产线还是任务所需物料,只要作为任务执行输入的要素,均可被定义为资源。

            目前我们的资源还只限于设备、人员等量化逻辑和可见范围比较简单的类型。未来的资源概念将会扩展到更丰富的范围,例如:生产产品所需的原料有可能是通用的,也有可能是某个工单专用的,那么就得引入全局资源与局部资源的概念。一些资源每天都可重复产生,我们会将它定义为可再生资源;而有些资源在整个生产周期中具有固定的供给量,随着生产活动的进行,对该类资源的消耗,会使资源总量逐步减少,我们会定义为不可再生资源。

            此外,关于资源可用量,即 【6.1.资源可用列表】中的【可用量】(F列),与【6.2.资源日历】中的【可用量】(F)列。从示例数据中可以看到,所有数据都是1,那是因为这个示例数据表达的资源是具体一个资源对象(相对于资源类型,实施过APS的小伙伴应该有体会)。即在这份示例数据中的【5.资源池】中,一行记录代表的是一个具体的资源,例如,具体到哪个车间的某一部切割机,这个资源具有唯一性的,那么如果具有3台这样的机台需要表示出来,则需要使用3个资源来表示。另外一种情况,就是我们排产时对资源而言,是排到某一类机台的,或某一组机台的。即一个资源代表的加工设备、人工并不是单一实体,而是代表某一类或某一组设备、人工等。例如:在某车间具有3台A型印刷机,而我们在某些场景的排产中,只需要把任务分配到A型印刷机即可,那么我们就可以定义一个资源,它代表的是A型印刷机,可用量为3。又如,如果我们排产时,任务分配到班组,这个班组编制为5位工作人员,那么我们可以把某个班组定义为一个资源,它的可用量为5.

            而目前我们的平台上的资源概念已可覆盖绝大部分APS场景。上述的资源扩展会视具体的需求而制定开发计划。

    资源需求组合 – RRG

            为何需要定义一个资源需求组合呢?如上文中首次出现RRG时已提到过,在大多数场景下,执行一个任务需要一个或多个资源即可,例如一个工单的某个工序的生产加工任务需要一条产线、或两台部台机、或三个工位、或四位工作人员来完成一个任务。那么我们只需要设置好一个任务,需要使用哪个(或哪种)资源,需要多少量即可。但事实上在很多场景下,问题并非如此简单。某些场景下,执行一个任务需要多个资源对象或种类进行组合才能实现。

            例如:某个任务需要2位工人1部A型机台,而每个资源代表的是一个资源实体(而不是资源类型)。这种情况下,我们需要定义好3个资源,如:高级技工-张三 + 普通操作工– 李四 + 1与车间中编号为MC-01的A型机台。这三个资源每个资源需求量都是1(因为是具体的资源实体,容量必然是1),组合成一个资源需求组合(即Resource Requirement Group – 简称RRG).在规划运算时,这类任务的分配对象是各个RRG,而不是一个个资源了。

            当我们遇到最简单的情况,就是一个任务需要一个机台、或一位工作人员来加工时,我们只需要把RRG定义为只包含一个资源即可。这种情况可视作资源需求的特殊情况。

    任务与工序

            在上文中提到一些排程对象是任务,有时又会提到工序。在我们订单与工艺的认知中。工序属于工艺概念,即在工艺设计时,加工每个产品所需的步骤。而任务则是加工生产领域的概念,即对一个工单进行加时,对这个工单的产品的某个工序进行加工的活动,我们把它称为任务。综上,我们可以定义为,一个产品在工艺设计阶段,每个生产加工步骤定义为工序。而使用这套工艺设计来排定并执行一个产品的生产活动时,每个工序就派生出一个任务。

            即一个产品的工序在信息系统中属于基本数据,它是由产品设计时已经定义好的概念。而一个工单需要生产一个产品时,使用这个产品的工艺路线,派生出来、对应于路线上各个工序的生活动,我们就把它称为任务。而在我们的日常工作中,通常也把任务称为工序,因为我们有约定成俗的上下文,因此不会造成混乱。而在系统设计时,这些概念必须区分,否则会影响各系统概念与实体之间的逻辑。

            在平台中与上述问题相关的数据中,很明显,【2.工艺路线】属于基本数据,即表示一个工艺主档,而【1.工单】属于交易数据(即每次有新的订单需求时,产生出来对应的工单,我们把这种根据业务产生的活动称为交易)。通过【1.工单】与【2.工艺路线】的匹配产生了【3.工序与资源关系】表中的数据。大家可能看到【3.工序与资源关系】表中的数据不仅仅是工序与资源关系,它还表达了工单与工艺的结合,即由哪个工单,对应哪个产品,产生了什么生产任务,这些生产任务各自需要使用哪些资源。

    【完】

  • 相关阅读:
    静态常量如何使用?
    什么是IP防护等级,又该如何区分
    SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.23 SpringBoot 整合 RabbitMQ(direct 模式)
    web网页设计期末课程大作业:家乡旅游主题网站设计——河北8页HTML+CSS+JavaScript
    springmvc请求转发和重定向的四种跳转方式
    【赠书活动】无测试组织:测试团队的敏捷转型
    docker容器部署jenkins
    前端常见的设计模式
    Socks5代理技术:驱动数字化时代跨界发展的利器
    CSDN 界面布局优化
  • 原文地址:https://blog.csdn.net/kentis/article/details/126699815