组件类别
在畅链数据集成平台 (CLIP) 系统中,编辑接收/发送报文流程涉及六大组件类型,每个类型都有特定的用途。
触发器组件
多用于接收合作伙伴发送过来的报文信息,其中包括 AS2 接收、OFTP 接收、HTTP 接收等操作。

发送组件
多用于向合作伙伴发送转换好的报文消息或向国内客户的系统对接发送 HTTP 请求,其中包括 AS2 发送、OFTP2 发送、SAP 发送和 HTTP 请求等操作。

通用组件
通用组件包括 各种文件转换、Excel 写入、发送邮件和 PDF 写入等通用功能。通过这些组件,用户能够轻松配置标准通信协议和格式转换,实现灵活的报文交换。

文件组件
包含文件的拷贝、写入、转换,以及 XML 和 JSON 的解析等功能。这些组件使用户能够处理文件级别的操作,实现数据格式的转换和文件的管理。

数据库组件
数据库组件允许用户执行数据库相关的操作,如执行语句、查询语句、关闭连接等。这些组件为用户提供了直接与数据集相关的功能,实现对数据库的灵活操作。

逻辑组件
主要用于错误检查和分支操作。通过逻辑组件,用户可以定义流程中的条件和规则,以确保报文的正确处理并根据需要执行不同的分支逻辑。

通过这些组件,用户可以构建复杂的报文处理流程,满足不同场景下的需求。这种模块化的设计使得编辑流程变得直观且易于定制,同时确保了系统在处理不同类型的报文时的灵活性和可扩展性。
工作流的使用
创建、删除&连接组件
在工作流界面,创建组件可通过左侧功能区将目标组件拖拽至中间工作区。对组件进行删除或连接操作,仅需点击目标组件,在其右侧操作栏找到相应的连接至和删除选项,提供了高效的组件编辑和操作体验。

组件详细配置
通过点击所需组件,您可以在右侧属性区域查看详细配置,如下图所示。以“发送邮件”组件为例,您可在该组件的属性设置的名称处进行重命名、配置 SMTP 服务器、端口、邮箱、SSL 使用情况、收件人、标题模板、内容模板以及携带附件等,以实现高度可定制的邮件发送功能。此外,通过脚本编辑,您还可以编写自定义脚本,以实现特定的自定义功能。

其他辅助功能
在畅链数据集成平台 (CLIP) 系统中,为优化流程搭建体验,工作区右上角提供了六个辅助功能按钮,顺序为设置(设置触发器)、放大、缩小、刷新、上一步、下一步以及保存(切换界面时如果没有保存会有提示)。这一设计旨在使用户能够高效地配置和浏览流程,提高整体工作效率。
业务流程状态
RECV_PO -- 接收订单
显示:“新订单”
操作:1、接受(->ACCEPTED)2、拒绝(->REJECTED)
RECV_PO_ACK -- 接收订单
显示:“新订单”
操作:1、接受(->ACCEPTED)2、拒绝(->REJECTED)
RECV_CHG -- 变更订单
显示:“已变更”
操作:1、接受(->ACCEPTED)2、取消(->CANCELED)
RECV_CHG_ACK -- 变更订单
显示:“已变更”
操作:1、接受(->ACCEPTED)2、取消(->CANCELED)
ACCEPTED -- 接受订单
显示:“待出货”
操作:1、编辑订单(->ACCEPTED)2、编辑物流(->ACCEPTED)3、打印标签(->ACCEPTED)4、出货(->SHIPPED)5、取消(->CANCELED)
SHIPPED -- 已出货
显示:“待通知”
操作:1、通知(->SENDING_ASN)2、取消(->CANCELED)
SENDING_ASN -- 出货通知中
显示:“通知中”
后台:1、出货通知成功(->SENT_ASN)
SENT_ASN -- 已出货通知
显示:“待开票”
操作:1、开票(->SENDING_ASN)2、取消(->CANCELED)
SENDING_INV -- 发送账单中
显示:“开票中”
后台:1、开票成功(->SENT_INV)
SENT_INV -- 已开票
显示:“已开票”
操作:1、取消(->CANCELED)
RECV_ERA -- 已收款
显示:“已收款”
操作:1、关闭(->CLOSED)
RECV_ERA_ACK -- 已收款
显示:“已收款”
操作:1、关闭(->CLOSED)
REJECTED -- 拒绝订单
显示:“已拒绝”
CANCELED -- 取消订单
显示:“已取消”
CLOSED -- 已关闭
显示:“已关闭”
与状态无关的操作:导出订单(新订单 或者 待出货)
工作流的设计
以 X12 接收采购订单 850、发送出货通知 856 和发送发票 810 等报文为例,分析工作流的设计理念。

接收 850
- 解析 850.edi 为 850.xml
- 解析 850.xml 为“订单”(purchase_order.xml)
- 检测订单冲突情况
- 存储“订单”到数据库
- 存储 850.edi 到数据库
- 订单状态更新为 RECEIVED
- 根据订单需求发送 997 回执
- 通过“订单”生成 997.xml
- 通过 997.xml 生成 997.edi
- 发送 997.edi
- 订单状态更新为 RECEIVED_ACK
接收 860
- 解析 860.edi 为 860.xml
- 解析 860.xml 为“订单变更”(purchase_order_change_request.xml)
- 检测订单状态为 RECV_PO 或者 RECV_PO_ACK
- 存储“订单变更”到数据库
- 存储 860.edi 到数据库
- 订单状态更新为 RECV_CHG
- 根据订单需求发送 997 回执
- 通过“订单”生成 997.xml
- 通过 997.xml 生成 997.edi
- 发送 997.edi
- 订单状态更新为 RECV_CHG_ACK
接收 820
- 解析 820.edi 为 820.xml
- 解析 820.xml 为“汇款通知”(remittance_advice.xml)
- 检测订单状态为 SENT_INV
- 存储“汇款通知”到数据库
- 存储 820.edi 到数据库
- 订单状态更新为 RECV_ERA
- 根据订单需求发送 997 回执
- 通过“订单”生成 997.xml
- 通过 997.xml 生成 997.edi
- 发送 997.edi
- 订单状态更新为 RECV_ERA_ACK
接收 824
- 解析 824.edi 为 824.xml
- 解析 824.xml 为“应用建议”(application_advice.xml)
- 存储“应用建议”到数据库
- 存储 824.edi 到数据库
接收 864
- 解析 864.edi 为 864.xml
- 解析 864.xml 为文本消息(text_message.xml)
- 存储文本消息到数据库
- 存储 864.edi 到数据库
确认订单操作流程
- 解析 cmd.xml 为“接受订单”对象(confirm_purchase_order.xml)
- 检测订单状态为 RECV_PO,RECV_PO_ACK,RECV_CHG 或者 RECV_CHG_ACK
- 根据选项选择是否发送 855 响应报文
- 根据“接受订单”对象的内容构建 855.xml
- 通过 850.xm 生成 855.edi
- 发送 855.edi
- 订单状态更新为 ACCEPTED 或者 REJECTED
取消订单操作流程
- 解析 cmd.xml 为“取消订单”对象(cancel_purchase_order.xml)
- 检测订单状态不为 REJECTED,CANCELED,CLOSED
- 订单状态更新为 CANCELED
关闭订单操作流程
- 解析 cmd.xml 为“关闭订单”对象(cancel_purchase_order.xml)
- 检测订单状态不为 CLOSED
- 订单状态更新为 CLOSED
编辑订单(编辑物流)操作流程
- 解析 cmd.xml 为“编辑订单”对象(edit_purchase_order.xml)
- 检测订单状态为 ACCEPTED
- 更新“订单”对象
- 从数据库检索“订单”对象
- 根据“编辑订单”的内容更新“订单”对象
- 储存“订单”对象回数据库
打印标签操作流程
- 解析 cmd.xml 为“打印标签”对象(print_lables.xml)
- 检测订单状态为 ACCEPTED
- 打印标签
- 从数据库检索“订单”对象
- 根据“订单”的内容打印 package_list 标签
- 根据“订单”的内容打印 bill_of_lading 标签
- 根据“订单”的内容打印 shipping 标签
- 输出标签文件到目标位置
出货操作流程
- 解析 cmd.xml 为“出货”对象(delivery.xml)
- 检测订单状态为 ACCEPTED
- 消耗库存数量
- 从数据库检索“订单”对象
- 根据“订单”的内容消耗库存
- 订单状态更新为 SHIPPED
发货通知操作流程
- 解析 cmd.xml 为“发货通知”对象(send_asn.xml)
- 检测订单状态为 SHIPPED
- 发送 ASN 报文
- 从数据库检索“订单”对象
- 根据“订单”对象生成 856.xml 报文
- 根据 856.xml 生成 856.edi 报文
- 发送 856.edi 报文
- 订单状态更新为 SENT_ASN
开发票操作流程
- 解析 cmd.xml 为“开发票”对象(send_inv.xml)
- 检测订单状态为 SENT_ASN
- 发送 INV 报文
- 从数据库检索“订单”和“条款”对象
- 根据“订单”和“条款”对象生成 810.xml 报文
- 根据 810.xml 生成 810.edi 报文
- 发送 810.edi 报文
- 订单状态更新为 SENT_INV
定时上报库存流程
- 发送 846 报文
- 从数据库检索产品信息
- 根据产品信息生成 846.xml
- 根据 846.xml 生成 846.edi
- 发送 846.edi 报文
最佳实践
接收合作伙伴发送的报文
下面是一个接收合作伙伴的 850/820/997 报文的处理流程,如果还需要处理其他类型报文可以再多加几条流程进去即可。
首先,系统接收合作伙伴发送的 EDI 报文,将其转换为 XML 格式,随后进行 XML 解析。解析完成后,生成响应消息 XML,并将其转换为响应消息 997EDI 文件,发送给合作伙伴以告知对方自己接收到了报文(如果对方回复的是一个 997EDI 文件,我们会直接 case_false → case_997 最后走到发送997通知)。
其次,系统进入订单消息循环处理阶段。在分支处,根据解析的 XML 信息判断消息类型,如果是正常的 850 订单消息,执行 Excel 转换、数据库写入、更新订单状态等操作,并发送邮件通知;对于 820 付款通知报文,我们会处理付款通知并且更新数据库的订单状态,最后发送邮件告诉用户付款通知已处理。

发送 856 报文的工作流
以下是向合作伙伴发送 856 报文的处理流程:
- 拿到合作伙伴发过来的文件,文件解析 856XML:系统首先对拿到的 856XML 进行解析,生成 997 报文回复合作伙伴。
- 订单状态检查:解析完成后,系统检查订单状态。若不是我们期待的状态,则系统发送警告至指定邮箱。
- 出货消息生成:如果订单状态符合预期,则收集订单和发货信息,生成出货消息 XML。
- 出货消息 EDI 转换与发送:基于出货消息 XML,系统进行转换,生成出货消息 EDI 文件,并将其发送给合作伙伴。
- 数据库更新与订单状态同步:系统在数据库中更新相关信息,确保订单状态得到同步。
- 出货通知:最后,系统向指定邮箱发送出货通知,完成整个处理流程。

