如何在知行之桥上通过业务单号查找原始报文?

2024-08-29 16:04

本文主要是介绍如何在知行之桥上通过业务单号查找原始报文?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在知行之桥中接收或发送的数据通常是EDI原始报文,知行之桥会对EDI原始报文进行格式转换,以方便用户后端系统的处理。因此,一般情况下,用户看到的都是转换后的数据结构,例如Json、XML或Excel等,无需直接查看原始EDI报文。但在以下特殊的业务场景下,用户需要查找到指定的原始报文:

1.对于接收方向的报文来说,例如订单,用户在查看转换后的数据结构后,对数据值存在疑问,需要向发送方求证,看是否存在数据值错误的情况,此时会需要提供EDI原始报文和订单编号,给发送方确认

2.对于发送方向的报文来说,例如发货通知,若是接收方验证报文失败,一般会通过EDI报文或以邮件等方式通知发送方,告知其发货通知单号和错误信息,此时发送方需内部排查,看是数据值错误还是EDI报文错误,若是EDI报文错误,为了确定具体错误信息,此时会提供原始的EDI报文,给接收方检查确认。

后端系统业务人员或交易伙伴提供的用于排查问题的信息,一般都是业务单号,如果传输的是订单,那提供的就是订单号;如果传输的是发货通知单,那就是发货通知单号;如果传输的是发票,那提供的就是发票号。那么,如何通过这些业务单据编号,在知行之桥EDI系统中准确查找到原始EDI报文呢?

在转换过程中对文件进行重命名

在收到交易伙伴或后端业务系统推送过来的数据时,文件名是多种多样的,此时需要对文件进行重命名处理,将业务单号放在文件名上,以便于后期运维查询。

在知行之桥中,文件重命名操作一般会在XML Map端口实现。

1.接收方向

以订单为例,在接收订单时,知行之桥中将会搭建如下工作流,我们在Markant_Map_ORDERS端口对文件名进行修改:

Find_original_message1.png

点击端口,在设置-目标文件中,新增代码脚本:

Find_original_message21.png

对代码脚本命名为Rename,并填入内容:

<arc:set attr="_message.header:filename" value="ORDERS_[xpath(BGM/C106/_1004) | def | trim]_[_ | snowflake].xml" />

其中,[xpath(BGM/C106/1004) | def | trim]是获取订单编号,[ | snowflake]则是生成随机数,以确保文件名不会重复。

Find_original_message3.png

保存后进行测试,在 输出 中即可看到,订单号已被添加到文件名中:

Find_original_message4.png

2.发送方向

以发货通知单为例,在发送发货通知单时,知行之桥上的工作流如下,我们在Markant_Map_DESADV端口对文件名进行修改:

Find_original_message5.png

在端口中新增代码脚本,并填入内容:

<arc:set attr="_message.header:filename" value="DESADV_[xpath(ASNNumber) | def | trim]_[_ | snowflake].xml" />

其中,[xpath(ASNNumber) | def | trim]是获取发货通知单号,[_ | snowflake]则是生成随机数,以确保文件名不会重复。

Find_original_message6.png

保存后测试,即可在输出中看到,发货通知单号已经被添加到文件名中:

Find_original_message7.png

根据文件名查找原始报文

在实施过程中完成第一步对文件进行重命名后,在后续文件传输的过程中,所有业务单号将被写入到文件名上。此时,我们就可以根据使用业务单号在知行之桥上查找文件,具体操作如下:

进入日志页面,在搜索框中输入要查询的业务单号,进行搜索,然后找到对应的那行消息,点击查看详情:

Find_original_message8.png

待跳转到详情页面,找到MFT端口,即EDI报文的传输端口,例如AS2/OFTP等,在MFT端口,即可看到对应的原始EDI报文:

Find_original_message9.png

点击文件名称,即可下载原始EDI报文:

Find_original_message10.png

如果您希望了解有关EDI对接的相关信息,欢迎交流。

阅读原文

这篇关于如何在知行之桥上通过业务单号查找原始报文?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1118313

相关文章

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

Verybot之OpenCV应用二:霍夫变换查找圆

其实我是想通过这个程序来测试一下,OpenCV在Verybot上跑得怎么样,霍夫变换的原理就不多说了,下面是程序: #include "cv.h"#include "highgui.h"#include "stdio.h"int main(int argc, char** argv){cvNamedWindow("vedio",0);CvCapture* capture;i

Win8下如何快速查找和删除电脑中的病毒

Win8系统如何查找和删除病毒?检查你的电脑是否存在病毒的一种快速方法是使用 Windows Defender. 此恶意软件防护随 Windows 提供,可帮助识别和删除病毒、间谍软件和其他恶意软件。   注意:如果你使用的是 Windows RT,则 Windows Defender 会始终启用,并且不能关闭。   如果你使用的是 Windows 8,则可以根据自己的喜好运行由其他

nyoj 685 查找字符串

当初一开始没做出来。 后来,学习过一段时间之后,在返回来做这道题,忽然发现,map类容器可以做。 PS:需要注意的是:此题如果用c++的输入输出的话,会超时。 O(time):gets()<  scanf() < cin。   附上代码: #include<stdio.h>#include<map>#include<string>#include<string.h>usin

【C++二分查找】2439. 最小化数组中的最大值

本文涉及的基础知识点 C++二分查找 LeetCode2439. 最小化数组中的最大值 给你一个下标从 0 开始的数组 nums ,它含有 n 个非负整数。 每一步操作中,你需要: 选择一个满足 1 <= i < n 的整数 i ,且 nums[i] > 0 。 将 nums[i] 减 1 。 将 nums[i - 1] 加 1 。 你可以对数组执行 任意 次上述操作,请你返回可以得到的 n

七、Maven继承和聚合关系、及Maven的仓库及查找顺序

1.继承   2.聚合   3.Maven的仓库及查找顺序

notepad++ 正则表达式多条件查找替换

基础语法参考: https://www.cnblogs.com/winstonet/p/10635043.html https://www.linuxidc.com/Linux/2019-05/158701.htm   通常情况下我们查找的内容和要被替换掉的内容是一样的,我们只需要使用正则表达式精确框定查找内容,替换直接输入要替换的内容即可。 但有时会比较复杂,查找的内容,只需要替换其中

【中等】保研/考研408机试-二分查找(模板题)

二分查找就是在一个有序数组中查找某个值,以首端尾端的中点mid查找对比,mid与要查找的数进行对比,看落在哪个区间,在那个区间重新得到首端和尾端,进而得到新的mid值。 一、模板题 二分查找-I_牛客题霸_牛客网 class Solution {public:int search(vector<int>& nums, int target) {int left=0,right=nums.s