SPDM系统与其他系统数据集成技术选型

2021-04-16 01:39琦,肖
船舶标准化工程师 2021年5期

陆 琦,肖 峰

(沪东中华造船(集团)有限公司,上海 200136)

0 引言

SPDM集成的数据主要分为2部分:1)从上游船舶设计软件集成设计数据;2)向下游企业资源计划系统(Enterprise Resource Planning,ERP),计划管理系统,制造执行系统(Manufacturing Execution System,MES)下达各种设计和制造的相关数据。从上游船舶设计系统集成的数据主要包括产品的各个专业的零部件结构和零部件信息、焊缝信息、套料余料信息、物量信息、图纸信息以及材料信息等;向下游系统下发的信息主要有图纸目录信息、各个专业的按托盘划分的零部件及材料信息、采购需求信息、物料定额信息以及图纸计划信息等。

1 集成方式选择

数据的集成通常有通过接口访问对方数据、直接访问对方数据表和将对方数据获取后在自身系统中构建数据等几种模式[1]。由于SPDM系统集成的系统较多,对数据的需求也有差异,存放数据的方式也不同。因此,采取将对方数据获取后在自身系统构建数据的模式,即SPD数据发送给SPDM后,SPDM 按自身需要在 SPDM 系统中构建数据。SPDM将数据发送给其他系统,其他系统也按他们的要求在各自系统中构建数据。

系统间的数据交换,通常可以通过事件驱动或人工驱动[1]。考虑到数据的及时性和完整性,以及SPDM系统的特点,SPDM数据交换的方式主要采用了手动驱动和流程驱动 2种方式。上游系统向SPDM系统发送数据和SPDM框架性的数据下发采用了手动驱动的方式,如:SPD系统向SPDM发送数据,采用了手动点击数据提交的方式。图纸目录、托盘目录、设备目录等框架性的数据也采用手动发送的方式。SPDM系统向下游系统发送数据,多采用流程驱动方式下发,如文档审签和发布情况、清单数据的下发以及物量数据的下发等。

由于上游系统的数据集成开始时间无法通过事件确定,图纸目录、托盘目录、设备目录等框架性的数据通常管理人员比较固定,且不需要审批,因此,采用手动发送的方式有利于设计人员和设计管理人员控制发送时机,也符合各自的管理要求。在使用过程中,这种模式得到了用户的认可。而SPDM系统数据的状态变化,都是通过流程驱动的。因此,采用流程驱动的方式触发数据集成,杜绝了人工干预过程,大大减少了用户的工作量,同时提高了数据流转的及时性和有效性,使得设计人员的工作更为专注,得到了用户的好评。

2 集成技术选型

本文采用系统间数据分离的集成方式,这主要涉及数据交换技术的选型和大数据传递的处理技术。数据交换技术选型主要涉及交换数据格式的选型和接口技术选型。大数据传递的处理技术主要通过队列技术完成。

2.1 交换数据格式

交换数据格式目前主要采用XML和JSON 2种格式。

XML可扩展标记语言(标准通用标记语言的子集)是一种简单的数据存储语言。使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立。虽然相较二进制数据要占用更多的空间,但可扩展标记语言极其简单、易于掌握和使用。虽然设计软件集成的数据需要比较强的可读性,设计软件种类繁多(比如 SPD,TRIBON,CATIA等),且其使用的开发语言也各有不同,但是操作 XML的功能都是比较完善的。因此,SPDM 系统采用XML格式作为数据集成的格式。

JS对象简谱(JavaScript Object Notation,JSON)是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的JS规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言,易于阅读和编写,同时也易于机器解析和生成,并可有效地提升网络传输效率[2]。SPDM系统采用JSON格式作为与下游的管理软件进行数据集成的格式,因为近几年JSON格式在软件配置,数据交换等方面被广泛使用,JSON第 3方库还提供对数据交换对象方便地进行序列化和反序列化的API,可大幅提高开发效率。此外,JSON格式的读取速度要比XML更快。

我国有一个名为中国医学知识仓库(CHKD)的数据库,医院可以借此搭建一个网络平台,建立电子阅读室。一方面实现了医院的信息化建设,另一方面也能极大的满足医院医务人员的阅读需求[5]。而且电子书籍与纸质书籍相比有一个明显的优势就是能够快速找到需要的关键知识点。这是纸质书籍的弱项,传统查阅资料方式需要对大量的相关文献进行查找,费时费力[6]。而电子书籍可以借助网络检索功能对知识点进行关键字搜索,查询起来方便快捷,这也是现代年轻人青睐于网络书籍的原因[7]。

根据上述 2种格式的特点,本文主要采用了JSON这种数据容量大,开发方便的数据格式。同时考虑到历史原因和数据交换习惯原因,保留了部分XML交换格式。

2.2 接口技术

接口技术目前主要有Web Service和RPC 2种方式。

Web Service是一个平台独立的、低耦合的、自包含的、基于可编程的web应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作应用程序[3]。Web Service技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第3方软件或硬件,就可相互交换数据或集成。依据Web Service规范实施的应用之间,无论它们所使用的语言、平台或内部协议是什么,都可以相互交换数据。Web Service是自描述、自包含的可用网络模块,可以执行具体的业务功能。

SPDM 采用 WebService与企业内提供WebService接口的信息系统进行数据交互,比如与人力资源系统交互用户信息,向档案管理系统发送电子图纸,归档完工图纸等。

RPC是远程过程调用(Remote Procedure Call)的缩写形式。简单的理解是一个节点请求另一个节点提供的服务。RPC在设计复杂业务操作时的API非常简单,其通信机制高效紧凑,在交换大量消息时效率高,在远程调用和传递消息时可以采用双向流式消息方式。此外,RPC客户端和服务端支持多种语言编写,互操作性强。

由于船舶的零件数量级为百万级,在设计完成后,设计软件需要向SPDM发送大量的设计数据和生产制造数据。由于数据量非常庞大,所以在设计软件与SPDM数据集成时接口主要采用RPC技术。

2.3 消息队列技术

SPDM系统在解耦和求解耗时较长的等待问题时采用了消息队列技术。消息队列中间件是分布式系统中重要的组件,主要解决耦合应用、消息异步、流量削锋等问题,构建高性能、高可用、可伸缩的架构。

目前,在生产环境中使用较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ和RocketMQ等。由于消息队列的处理方式和性能相差不大,SPDM系统选用开源的RabbitMQ[4-5]作为消息队列中间件。

3 集成难点和解决方式

在数据集成接口中,最难处理的主要有大数据量处理、数据完整性保证、多系统间重复数据处理以及重发控制4个方面。为此,SPDM开发了一个处理框架来解决以上问题。框架开发了一个基础的消息类,用以描述消息的关键信息,比如全局唯一的消息ID、消息的发送者、发送时间、发送到的队列、处理命令,处理的结果和处理完成的时间等,并可在一个消息类中采用键/值的方式承载多个JSON和文件数据。客户端采用RPC的方式提交消息,在服务端在接收到消息后,按消息所要发送到的消息队列,转发到相应的RabbitMQ消息队列,并在数据库中记录消息的状态。在服务端还有另一个消息处理服务负责监视各个RabbitMQ消息队列,一旦消息队列接收到消息,就按消息的队列名称和处理命令,调用处理服务配置中对应的消息处理者对消息进行处理,并更新数据库中消息的处理结果。系统可以通过专门的监控程序,查看系统中各个处理队列的运行情况和消息的处理情况。

对于大数据量处理,由于采用该框架后所要处理的消息都按顺序排队进入队列,减少了对服务器的瞬时大并发连接和处理请求。框架支持分布式部署多个数据处理服务同时处理一个消息队列中的数据,如果遇到消息队列中数据猛增,可以快速地部署多个数据处理服务加快消息的处理。如果消息间没有先后的逻辑关系,比如对文件进行电子签名,那么框架还支持对同一条处理命令启动多个数据处理者,从而加快数据处理速度。

对于数据完整性保障,由于数据在网络和多个系统间传输,数据的完整性和防篡改是十分重要的。框架在消息第一次产生和发送时都对消息生成一个MD5码,消息进入框架后每次对消息进行接收、转发和处理时都会验证该MD5码,通过此措施来保证该消息没有被人为篡改或由于误操作导致消息内容与发送时的消息内容不符。

在日常业务中,存在相同的数据需要发送到不同系统,不同的系统对相同的数据有不同的处理要求的情况。数据的发送端不需要考虑接受的系统是什么,只需发送到该消息的处理队列即可。处理端可以针对不同系统的处理要求,对要处理的消息部署对应的消息处理者。这样,架构就非常清晰明了,避免发送者对于相同的消息需要硬编码调用不同系统的不同接口进行处理。做到接口与系统之间的解耦。

由于目前系统间的集成需求越来越多,集成的复杂度越来越高,难免会出现数据发送给A系统处理成功,而发送给B系统处理失败的情况。数据重发时一般都是直接全部重发,而采用该框架由于在数据库中记录了数据的处理状态,可以做到只发送处理失败的数据,成功的数据不重发,或者不管处理失败还是成功都重发。

框架对处理的消息都会留有备份,万一出现消息处理错误,框架可以把处理失败的消息以文件的形式提供给开发者,开发者可以迅速地读取该消息,对处理程序进行调试,成功后更新到服务端,框架可以对原来处理失败的消息重新进行处理,避免用户再次发送数据进行处理。

4 结论

SPDM系统与设计软件、ERP系统、生产管理系统以及集配系统等多个系统间共28个接口,且接口的内容和数据仍有增加。接口数据发送可靠、处理迅速,目前已实现了多型船数十万数据的集成。接口处理数据时发生问题能快速发现、复现问题,开发人员可方便地调试程序和解决问题。业务人员能根据数据的处理情况及时处理数据,保证了数据的完整性、及时性和有效性。根据系统的运行情况,可证明本文集成技术的选型和集成方案是成功的。