一种PLM系统与ERP系统对接方法
技术领域
本发明涉及一种计算机应用技术,特别是涉及一种PLM系统与ERP系统对接方法。
背景技术
目前,PLM与ERP集成实现方法主要有以下方法:
(1)系统封装集成
系统封装模式系统封装集成把对象的属性和操作方法同时封装在所定义的对象中。封装使数据和操作有了统一的模型界面,提供了逻辑独立性,并可以满足以文件形式生成的所有数据的应用系统的集成需求。但封装集成往往需要专门的开发工具,增加了集成的难度和成本。
(2)统一数据模型集成
统一数据模型集成统一数据模式需要建立统一数据模型的数据库,PLM与ERP系统都直接对数据库中的数据进行操作并交换数据。这种模式比较理想,但要求PLM和ERP建立统一的数据库表,对于不同厂商的PLM和ERP,这种模式实现的难度非常大。
(3)基于中间文件的交换集成
基于中间文件或中间临时表的集成基于中间文件的集成把PLM和ERP需要交换的数据信息通过中间文件进行有效的双向传输,并且这种集成方法支持通用的数据交换标准(如STEP和XML技术),提供一种不依赖具体应用系统的中性机制,用来描述产品整个生命周期中的数据。这种实现方式虽然和数据库层解耦,但又必须依赖于消息中间件,数据发送方和数据接收方都需要对数据进行加工处理才能完成数据的交换,并且这种实现方式通常不支持事务控制,数据一致性无法保证。
为避免以上问题,中国专利申请公布号CN 102750610A涉及企业信息系统之间的集成方法,提供了一种PLM-ERP集成过程中的交易控制方法,包含:创建数据集成接口,所述数据集成接口将从PLM导出ECN数据、物料数据和OM数据相互关联整合为一个完整的数据集成接口;该数据集成接口将PLM全部创建和变更ECN数据模块、物料数据模块、BOM数据模块所需要的数据同步到SAP系统中。该发明方法主要用于实现高端ERP系统与PLM系统的数据集成,以满足企业业务中研发物料清单的变更准确、安全、高效的同步到ERP软件中并指导生产。该实现方式不依赖应用程序,实现过程简单,但所有的功能都需要通过SQL或者存储过程实现,数据库中的SQL或都存储过程调试困难,不适用于复杂的业务逻辑处理,此外,需要将数据库暴漏出来,安全性会受到影响。
中国专利申请公布号CN102708213A公开了一种在PDM系统与ERP系统之间实现BOM信息传输的方法,其首先在PDM系统与ERP系统之间设置一个BOM传输接口,且该BOM传输接口设置有BOM自定义属性管理模块、BOM数据整合模块、模式设置模块和BOM信息输入模块;然后BOM数据整合模块将BOM自定义属性管理模块中的BOM信息与PDM系统中的BOM信息进行整合;最后BOM信息输入模块解析模式设置模块设置的命令名称对应的鼠标及键盘的操作命令,并调用操作系统中的API函数智能的模拟人工录入方式向ERP系统中输入生产的BOM信息,该发明方法利用BOM传输接口实现向ERP系统自动录入BOM信息,可操作性好、通过用性好,且安全性能高。该方法需要借助附加的或是专门的第三方软件或硬件实现不同机器上的不同应用之间的数据交互。
发明内容
针对上述现有技术,本发明要解决的问题是提供一种PLM系统与ERP系统对接方法,通过PLM系统与ERP系统的集成,(1)实现数据通过PLM系统及时传递到ERP系统中,(2)实现PLM系统数据变更时自动更新ERP中的数据,(3)实现在PLM系统中对ERP系统中的物料库存信息的有效访问。
为达解决上述技术问题,本发明提供了一种PLM系统与ERP系统之间对接方法,包括以下步骤:
S1:建立PLM系统与ERP系统的API接口服务,数据提供方为PLM系统,所述API接口服务包括公共API接口、物料同步接口、BOM同步接口、异步查询接口、供应商查询接口、物料分类查询接口;
S2:通过ERP系统在公共API接口中定义基础配置,所述基础配置中的数据构成方式中包括PLM系统代码、PLM系统接口代码、业务处理类代码、参数解析类代码;
S3:通过ERP系统定义物料同步接口、BOM同步接口、异步查询接口、供应商查询接口、物料分类查询接口的数据构成方式以及数据传输参数,所述数据传输参数包括请求参数、返回参数及响应结果;
S4:PLM系统调用公共API接口,查询出业务处理类或参数解析类的代码后,执行相对应接口的数据交换。
进一步的,所述ERP系统与PLM系统数据交换方式是以面向接口编程的方式调用数据交换程序,所述EPR系统以接口方式定义交换数据的构成方式、参数接收方法以及数据交换的执行方法;所述PLM系统通过调用交换数据的构成方法来判定需要交换的数据,然后调用需要交换的数据以数据传输参数格式完成数据PLM系统与ERP系统的数据交换。
进一步的,所述BOM同步接口设置为异步处理方式,并向调用BOM接口发起方系统提供异步查询接口;所述物料同步接口设置为可选的同步处理方式或异步处理方式,所述供应商查询接口、物料分类查询接口设置为异步处理方式。
进一步的,所述物料同步接口的数据构成方式包括用户编码、数据源、方法名、系统编码、时间戳、编辑类型及物料版本,所述编辑类型包括新增与修改,PLM系统定时调用该接口需要交换的数据与ERP进行数据交换,同时辅以必要时手工操作驱动实时同步。
进一步的,所述BOM同步接口数据构成方式包括用户口编码、数据源、方法名、系统编码、时间戳、BOM父项编码、BOM父项名称、BOM父项版本、BOM版本、BOM类型、BOM子项编码、BOM子版本及供应商编码。
进一步的,所述异步查询接口的数据构成方式包括用户口编码、数据源、方法名、系统编码、时间戳、BOM父项编码及BOM版本。
进一步的,所述供应商查询接口的数据构成方式包括用户编码、数据源、系统编码、时间戳、供应商编码、供应商名称,所述供应商编码与供应商名称的代码分别与两组不同的代码替代,一组代码用作供应商查询接口的请求参数使用,一组代码用作供应商查询接口返回参数使用。
进一步的,所述物料分类查询接口的数据构成方式包括物料分类编码与物料分类名称,所述物料分类编码与物料分类名称使用两组不同的代码,一组代码用作物料分类查询接口的请求参数使用,一组代码用作物料分类查询接口的返回参数使用。
进一步的,所述API接口方式采用webservice形式,数据传输参数格式为json格式。
进一步的,所述PLM系统采用定时调用异步查询接口、供应商查询接口、物料分类查询接口同步需要交换的数据,并通过所述异步查询接口、供应商查询接口、物料分类查询接口的查询日志系统来查询同一批次的BOM是否更新成功。
本发明的有效益果是:
1、通过以上步骤,实现PLM系统与ERP系统的集成,同时(1)实现数据通过PLM系统及时传递到ERP系统中,(2)实现PLM系统数据变更时自动更新ERP中的数据,(3)实现在PLM系统中对ERP系统中的物料库存信息的有效访问。
2、此种方式提高了接口程序的复用性,PLM系统只需要通过接口就能完成所要完成实现的功能。
3、异步处理方式可以降低接口性能压力,并提高PLM系统与EPR系统独立运行可靠性,因此变动频率不高的基础数据采用异步处理方式,变动频率较高的数据辅以同步处理方式完成数据实时同步。
4、通过数据构成方式来定义BOM、物料、供应商、物料分类信息等所需要数据的必要信息。
5、Webservice可以实现异构平台的无缝衔接,并具有更广泛的软件复用,方便企业将业务软件核心模块以Web Service的形式向其它客户端发布。
综上所述,本发明提供一种PLM系统与ERP系统的对接方法,实现了PLM系统与ERP系统的集成,让原来分割的业务处理流程能够贯穿在一起,保证了PLM系统与EPR系统中物料信息及BOM信息数据的完整性与一致性,PLM系统端工艺数据、BOM数据的新增、变更可以及时发布到ERP中,ERP系统可将此数据用在销售、采购、生产等环节,提高工作效率。
附图说明
图1为PLM系统与ERP系统对接方法工作流程图。
图2为PLM系统与ERP系统对接方法简图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例
ERP系统采用用友NC系统,PLM采用 Windchill PLM系统,以两者系统对接方法为例:
如图1所示PLM系统与ERP系统对接方法工作流程图,一种PLM系统与ERP系统之间对接方法,包括以下步骤:
S1:建立PLM系统与ERP系统的API接口服务,数据提供方为PLM系统,所述API接口服务包括公共API接口、物料同步接口、BOM同步接口、异步查询接口、供应商查询接口、物料分类查询接口;
S2:通过ERP系统内置接口定义模块在公共API接口中定义基础配置,所述基础配置中的数据构成方式中包括PLM系统代码、PLM系统接口代码、业务处理类代码、参数解析类代码;
S3:通过ERP系统定义物料同步接口ERP系统的定义方式、BOM同步接口、异步查询接口、供应商查询接口、物料分类查询接口的数据构成方式以及数据传输参数,所述数据传输参数包括请求参数、返回参数及响应结果;
S4:PLM系统通过内置程序调用公共API接口,查询出业务处理类或参数解析类的代码后,依据程序执行相对应接口的数据交换。
如图2所示的PLM系统与ERP系统对接方法结构简图,数据集成接口采用webservice形式,数据传输为json格式,公共API接口格式为:http://ip:端口/uapws/service/pubapi/wsdl。
如表1 公共API接口数据构成方式,ERP系统在公共API接口中定义基础配置,基础配置中的数据构成方式中包括PLM系统代码、PLM系统接口代码、业务处理类代码、参数解析类代码,业务处理类包括物料同步、BOM同步、异步查询、供应商查询、物料分类查询;PLM系统调用公共API接口,查询出业务处理类或参数解析类的代码后,执行相对应接口的数据交换。
表1公共API接口数据构成方式
字段名称 | 字段描述 | 数据类型 | 是否可空 | 备注 |
pk_group | 集团 | 业务组织集团 | N | |
syscode | 外系统编码 | String | N | 默认001 |
sysname | 外系统名称 | String | Y | |
methodcode | 接口编码 | String | N | 同一个外系统具有唯一性 |
methodname | 接口描述 | String | Y | |
cbusiclass | 业务处理类 | String | N | |
canalyzeclass | 参数解析类 | String | Y | |
enablestate | 是否启用 | UFBoolean | Y | |
bisencrypt | 是否加密 | UFBoolean | Y | |
bisdslog | 是否数据库存储日志 | UFBoolean | Y | |
def1 | 自定义项1 | 自定义项 | Y | |
def… | …… | 自定义项 | | |
def20 | 自定义项20 | 自定义项 | Y | |
如表2物料同步接口的数据构成方式,物料同步接口的数据构成方式包括用户编码、数据源、方法名、系统编码、时间戳、编辑类型及物料版本,所述编辑类型包括新增与修改,PLM系统定时调用该接口需要交换的数据与ERP进行数据交换,同时辅以必要时手工操作驱动实时同步。此接口通过PLM系统更新和修改物料档案,直接修改时不产生新版本,PLM系统定期或同步将基础信息同步至ERP系统保存,方便从ERP系统查询物料信息。
表2 物料同步接口数据构成方式
字段名称 | 字段描述 | 数据类型 | 是否可空 | 备注 |
groupcode | 集团编码 | String | N | |
usercode | 用户编码 | String | N | |
datasource | 数据源 | String | N | |
methodname | 方法名 | String | N | |
syscode | 系统编码 | String | N | |
ts | 时间戳 | String | N | yyyy-MM-dd HH:mm:ss |
async | 是否异步 | Boolean | N | true为异步,false为同步 |
batchnumber | 批次号 | String | N | |
type | 编辑类型 | int | N | 1:新增,2修改 |
code | 物料编码 | String | N | |
name | 物料名称 | String | N | |
version | 物料版本 | String | N | |
materialspec | 规格 | String | Y | |
materialtype | 型号 | String | Y | |
marbasclass | 物料分类编码 | String | N | |
measdoc | 单位 | String | N | |
graphid | 图号 | String | Y | |
unitweight | 质量 | String | Y | |
def2 | 材料名称 | String | Y | |
cumandoc | 供应商编码 | String | Y | |
如表3所示BOM同步接口数据构成方式,包括用户口编码、数据源、方法名、系统编码、时间戳、BOM父项编码、BOM父项名称、BOM父项版本、BOM版本、BOM类型、BOM子项编码、BOM子版本及供应商编码。此接口新增BOM信息,变更BOM时需要新增BOM版本。BOM同步采用异步处理方式,此接口返回结果必须为成功。并提供异步查询接口供接口发起方调用。
表3 BOM同步接口数据构成方式
字段名称 | 字段描述 | 数据类型 | 是否可空 | 备注 |
groupcode | 集团编码 | String | N | |
usercode | 用户编码 | String | N | |
datasource | 数据源 | String | N | |
methodname | 方法名 | String | N | |
syscode | 系统编码 | String | N | |
ts | 时间戳 | String | N | yyyy-MM-dd HH:mm:ss |
async | 是否异步 | Boolean | N | true为异步,false为同步 |
batchnumber | 批次号 | String | Y | |
orgcode | 计划组织编码 | String | N | |
materialcode | Bom父项编码 | String | N | |
materialname | Bom父项名称 | String | N | |
materialversion | Bom父项版本 | int | N | |
hversion | Bom版本 | int | N | |
fbomtype | Bom类型 | int | Y | 1=生产BOM,2=包装BOM,3=配置BOM, |
cmaterialid | Bom子项编码 | String | Y | |
cmaterialversion | Bom子项版本 | int | Y | |
nassitemnum | 子项数量 | decimal | Y | |
ibasenum | 底数 | decimal | N | |
cvendorid | 供应商编码 | String | N | |
如表4所示异步查询接口的数据构成方式包括用户口编码、数据源、方法名、系统编码、时间戳、BOM父项编码及BOM版本。Plm系统定时调用此接口,用来查询同一批次bom是否更新成功。此接口通过查询日志系统来实现。
表4异步查询接口的数据构成方式
字段名称 | 字段描述 | 数据类型 | 是否可空 | 备注 |
groupcode | 集团编码 | String | N | |
usercode | 用户编码 | String | N | |
datasource | 数据源 | String | N | |
methodname | 方法名 | String | N | |
syscode | 系统编码 | String | N | |
ts | 时间戳 | String | N | yyyy-MM-dd HH:mm:ss |
batchnumber | 批次号 | String | Y | |
boms | Boms集合 | | Y | 此集合下数据可为空 |
materialcode | Bom父项编码 | String | N | |
hversion | Bom版本 | int | N | |
如表5、表6所示供应商查询接口的数据构成方式包括用户编码、数据源、系统编码、时间戳、供应商编码、供应商名称,所述供应商编码与供应商名称的代码分别与两组不同的代码替代,一组代码用作供应商查询接口的请求参数使用,一组代码用作供应商查询接口返回参数使用。PLM系统定时调用此接口,用来查询同一批次bom是否更新成功。此接口可选用同步处理方式或异步处理方式。
表5 供应商查询接口的数据构成方式–请求参数
字段名称 | 字段描述 | 数据类型 | 是否可空 | 备注 |
groupcode | 集团编码 | String | N | |
usercode | 用户编码 | String | N | |
datasource | 数据源 | String | N | |
methodname | 方法名 | String | N | |
syscode | 系统编码 | String | N | |
ts | 时间戳 | String | N | yyyy-MM-dd HH:mm:ss |
batchnumber | 批次号 | String | Y | |
data | | | Y | 此集合下数据可为空,默认查询所有供应商 |
suppliercode | 供应商编码 | String | Y | |
suppliername | 供应商名称 | String | Y | |
表6供应商查询接口的数据构成方式–返回参数
字段名称 | 字段描述 | 数据类型 | | 备注 |
pk_supplier | 供应商主键 | String | | |
code | 供应商编码 | String | | |
name | 供应商名称 | String | | |
如表7、表8所示,物料分类查询接口的数据构成方式包括物料分类编码与物料分类名称,所述物料分类编码与物料分类名称使用两组不同的代码,一组代码用作物料分类查询接口的请求参数使用,一组代码用作物料分类查询接口的返回参数使用。plm系统定时调用此接口,用来查询同一批次bom是否更新成功。
表7 物料分类查询接口的数据构成方式–请求参数
字段名称 | 字段描述 | 数据类型 | 是否可空 | 备注 |
groupcode | 集团编码 | String | N | |
usercode | 用户编码 | String | N | |
datasource | 数据源 | String | N | |
methodname | 方法名 | String | N | |
syscode | 系统编码 | String | N | |
ts | 时间戳 | String | N | yyyy-MM-dd HH:mm:ss |
data | | | Y | 此集合下数据可为空,默认查询所有物料分类 |
materialcode | 物料分类编码 | String | Y | |
materialclsname | 物料分类名称 | String | Y | |
表8物料分类查询接口的数据构成方式–返回参数
字段名称 | 字段描述 | 数据类型 | | 备注 |
pk_marbasclass | 物料分类主键 | String | | |
code | 物料分类编码 | String | | |
name | 物料分类名称 | String | | |
pk_parent | 物料上级分类 | String | | |
innercode | 内编码 | String | | NC中用来区分级别,4位为1级 |
下面以物料接口参数方法为例,数据传输参数格式如下:
请求参数:
{
"groupcode": "01",
"usercode": "01",
"datasource": "design",
"methodname": "materialEdit",
"syscode": "001",
"ts": "2018-01-20 11:11:11",
"async": "true",
"data": {
"batchnumber": "100023",
"type": "1",
"materials": [
{
"groupcode": "01",
"code": "21010010001",
"name": "农用尿素",
"version": "1",
"materialspec": "50kg",
"materialtype": "中颗粒",
"marbasclass": "2101001",
"measdoc": "吨",
"graphid": "图号",
"unitweight": "1002.00",
"def2": "材料名称",
"cumandoc": "供应商编码"
},
返回参数:{
"groupcode": "01",
"code": "21010010002",
"name": "农用尿素",
"version": "1",
"materialspec": "50kg",
"materialtype": "中颗粒",
"marbasclass": "2101001",
"measdoc": "吨",
"graphid": "图号",
"unitweight": "1002.00",
"def2": "材料名称",
"cumandoc": "供应商编码"
}
]
}
}
响应结果:
{
"respcode": "000",
"respmsg": "",
"respdate": "2017-01-19 11:11:11",
"batchnumber": "100023"
}
000表示成功,其他表示失败
以上请求参数从上到下依次为集团编码、用户编码、数据源、方法名、系统编码、时间戳、异步、批次号、编缉类型、物料编码、物料名称、物料版本、规格、型号、物料分类编码、单位、图号、质量、材料名称、供应商编码;
以上返回参数从上到下依次为集团编码、用户编码、物料名称、物料版本、规格、型号、物料分类编码、单位、图号、质量、材料名称、供应商编码;
当请求参数与返回参数一致时,则响应结果为000,表示PLM系统与ERP系统结果一致,表示同步成功。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,本领域普通技术人员对本发明的技术方案所做的其他修改或者等同替换,只要不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。