EDIFACT UNB Ingerchange 控件引用应该是唯一的——在什么 space 中?

EDIFACT UNB Ingerchange control reference should be unique -- in what space?

UNB 段包含 交换控制引用 作为最后一个元素。文档说它必须是唯一的(参见 UN/EDIFACT Syntax Rules,例如):

 ___________________________________________________________________

 0020   an..14  M  INTERCHANGE CONTROL        Unique reference
                   REFERENCE                  assigned by sender
 ___________________________________________________________________

UNB 还包含发件人 ID、收件人 ID、日期和时间。

现在...在什么情况下交换控制引用必须是唯一的?它由发件人分配。那么,它对于相同的发件人 ID 还是对于发件人和收件人 ID 的组合是唯一的?

比如说,如果发件人使用更多系统来发送消息,那是否应该反映在发件人 ID 中?比如说,如果发生了一些严重的硬件故障,新硬件是否应该使用不同的发送者 ID 来确保交换控制参考的唯一性?

参考编号、发件人 ID 和收件人 ID 的组合必须是唯一的。通常为发件人 id\receiver id 对按顺序生成参考号。

许多应用程序在内部使用一个简单的 table,以发件人 id\receiver id 作为主键,以及一个递增或设置为 0 的参考编号列。

通常的重置时间是 30 天,之后您可以开始重新使用相同的参考编号,但这因应用程序和贸易伙伴而异。

目标系统有时被配置为通过这三个值检测重复项,这样如果您多次发送相同的交换,所有后续交换都将被拒绝。

特定发送方/接收方对之间的交换控制号必须是唯一的。

通常这是作为一个计数器处理的,每次交换都会递增。有时,发件人维护一个用于所有发件人 ID 和所有收件人的单个计数器,有时则为每个发件人 ID/收件人 ID 对维护一个单独的计数器。有时他们可能会为每对相隔 500000 左右的人保留两个计数器(例如,当多个系统生成不同的交换时 - 例如外包仓库,或者在升级到新系统后如果保留每个收件人的计数器不可行)。

当发件人确信在一秒内编码的每个收件人(或任何收件人在毫秒)。

在实践中,如果控制编号相隔 3 个月或更长时间,重复控制编号会导致问题,这是非常罕见的,而且我见过的大多数方案都会在计数器滚动之前使用一年以上超过。例如。取 POSIX 时间戳的最后 9 位数字(到百分之一秒)将保证大约 4 个月内不会重复(只要在第一个 100一秒钟)并且可能会在很多年内使重复的机会变得微乎其微。如果您将其执行到十分之一秒,则可以保证 3 年以上不会重复。

您是否正在解决顽固的客户拒绝您发送的交换,或者他们发送您标记为重复的控制编号的情况?我处理这些情况的方式完全不同(并且还取决于您的组织的严格程度)。

我曾经(幸运地)看到一位客户坚持要求特定 sender/receiver 对之间的所有交换控制编号不仅是唯一的,而且是连续的 该消息这些交换中的控制编号也必须是连续的,并且格式为带前导零的四位数字,并且在每个交换中始终从 0001 开始。 None 这些额外要求得到 EDIFACT 标准的支持,但在该客户的消息实施指南中,他们足够大,坚持要求他们的供应商遵守。