使用 C# 实现 EDI X12

Posted

技术标签:

【中文标题】使用 C# 实现 EDI X12【英文标题】:EDI X12 Implementation with C# 【发布时间】:2013-05-19 09:47:18 【问题描述】:

我们公司正在销售医疗用品,我们有一个网站可以在线销售我们的产品。我们正在与供应商合作,当我们收到新订单时,他们会将产品发送给我们的客户。目前我们是手动处理的。我们在我们的网站上收到订单,并通过电话/传真/电子邮件向产品供应商订购,他们将产品发送给客户,并通知我们运输信息,我们通知客户。

这个过程最近越来越难处理。到目前为止,我们还没有使用任何 B2B 解决方案,但我们现在需要实施 EDI 解决方案。我们最大的供应商正在使用 EDI 标准。

据我了解,流程如下;

    当我们收到订单时,我们会创建 X12 文档,并通过 FTP、SFTP 或 VAN 发送此文档。 我们的供应商收到 X12 文件并进行处理。并发送格式为 X12 的发票。 我们收到发票并将其解析到我们的系统。 我们的供应商在向客户发货时会发送格式为 X12 的发货信息。 我们收到运输信息文件并对其进行解析。

我对这个过程有一些疑问。

    第一个也是最重要的问题:我理解对了吗? :) 作为开发人员,我需要哪些程序/工具? 我知道编写我们自己的 X12 解析器是不明智的。我们需要一个外部应用程序。但是我们需要什么样的应用程序?我们是否需要像 BizTalk 这样的大型应用程序?或一些帮助库,如 http://x12parser.codeplex.com/ http://www.edidev.com/ 足以做我们想做的事。 我们的供应商支持FTP、SFTP和VAN进行数据通信,我们应该选择哪种通信方式?哪一种更简单、更容易理解?

对不起,我知道,我有很多问题 :) 任何帮助将不胜感激。

【问题讨论】:

我不建议自己做。如果他们支持 cXML 或类似的东西(如 Richard 提到的),也许 - 但只要您支持一个 EDI 文档,他们就会要求另一个。还有一个。然后你会得到一些人要求 UN/EDIFACT(另一个标准),然后是 cXML,然后是不同的连接协议/网络......我会购买商业软件或与 VAN 签订合同。 我认为威尔在这里提出了一个很好的观点。 谢谢威尔,你是对的。如果我自己做,以后可能会很痛苦。我是 .net 开发人员,如果我会选择 Microsoft BizTalk 进行 EDI 流程,这是一个不错的选择吗? @arunes - 我不推荐 BizTalk 用于您的场景。它相当昂贵,恕我直言,UX/UI 很糟糕。如果您正在寻找基于 Microsoft 的翻译产品,请查看 Liaison 的 Delta (liaison.com/products/transform/delta)。将其与他们的 ECS 产品相结合,您将拥有一个可靠的应用程序集成框架,可以轻松地与 BizTalk 竞争,而成本/学习曲线只是其中的一小部分。 为了完整起见,有一个名为 Edi.Net 的开源库可以执行此操作,它的构建支持 .Net 完整框架以及 netstandard 1.0 及更高版本。 免责声明我是该库的作者 【参考方案1】:

    您的流程描述看起来不错。 1/ 根据客户的订单,您创建 X12 850(采购订单)并将其发送给您的供应商。 2/ 您的供应商可能会向您发送 X12 855(采购订单确认)以确认您的订单,这是一个有趣的(业务)信息,您可能会“转发”给您的客户。 3/ 最后,连同货物的实际运输给您的客户,您的供应商将向您发送 X12 856(装运通知/舱单)以及 X12 810(发票)。这是一个相当简单/经典的 EDI 流程。

    BizTalk 将是 Microsoft 世界的推荐,但对于这样的流程来说,它可能非常昂贵/过大。如果您是 .NET 开发人员并且喜欢自己做事,生成 850 并读取 855、856 和 810 并不像看起来那么复杂;-) 我个人开发了一种将 X12 解析/序列化为/从 XML 使用 XSLT 脚本(可以从几乎任何编程语言轻松运行,包括 .NET 脚本),我希望它揭开 X12 语法的神秘面纱 ;-) 如果您可以从供应商那里分享 MIG(消息实施指南),我可以看看我的技术是否能满足你的需要。 XML 表示应该是您的,遵循应用程序的数据模型,然后应该允许您像往常一样围绕 EDI 文档开发功能!

    见上文 ;-)

    你很幸运!!!您的供应商支持 FTP,它是最简单的,实施起来更容易/更便宜!想想你今天的做法 - 即电子邮件 - 你不需要高安全性......你需要的是自动化,请保持专注,不要被高安全性需求分心!我的建议 ;-)

【讨论】:

您好 Babelabout,我们公司坚持使用 BizTalk 服务器。我安装 BizTalk 服务器,并按照一些教程中的描述设置各方。我的下一个目标是创建和解析 x12 文档。我可以使用 BizTalk 创建 X12 文档吗?还是我应该为此编写自己的代码? BizTalk 可以创建 X12 消息。您无需编写自己的代码。 BizTalk 如何创建 X12 消息?我们有一个 C# 网站,当用户创建订单时,我们拥有创建 X12 消息的所有信息。是否有用于在 BizTalk 程序集中创建 X12 消息的任何帮助程序类?或者我可以使用任何其他方法? 您的 C# 应用程序应该创建一个 XML 文件(发明您自己的简单语法)并将其发送到 BizTalk。然后,您创建 XML 到 X12 的映射,BizTalk 将传递 X12 消息。 另一种商业选择:orionhealth.com/symphonia-messaging-and-mapping-tools【参考方案2】:

    EDI 是一种非常古老的数据格式化标准。我强烈建议确保您的供应商不支持除 EDI 之外的新标准,例如 SOAP Web 服务。

    任何编程语言都可以。坚持你所熟悉的。在 .net 中,FileSystemWatcher 类会非常有帮助。

    BizTalk 是一个综合性工具且价格昂贵,因此我很想先查看您发现的帮助程序库。 EDI 本身非常简单 - 通常有许多用于交换不同类型数据的综合规范,但它们都分解为相同的 ASCII 文本一般结构。

    FTP 是最简单但不安全的。 SFTP 几乎同样简单和安全。我对 VAN 不熟悉。

【讨论】:

VAN 是增值网络。它基本上是一家第三方公司,将为您处理翻译和沟通(通常与多个供应商/供应商/合作伙伴)。 感谢您的回答@RichardTeviotdale,遗憾的是我们的合作伙伴没有使用 SOAP 或类似的东西进行集成。现在我正在考虑使用 BizTalk。我认为 BizTalk 正在处理所有流程,但我不确定这是否是正确的选择。【参考方案3】:

你看看 bots 开源 edi 翻译器 (http://bots.sourceforge.net)。处理 x12、xml、edifact 等,以及您想要的通信。

【讨论】:

感谢回答,但我对python不熟悉,所以我先寻找.net解决方案。

以上是关于使用 C# 实现 EDI X12的主要内容,如果未能解决你的问题,请参考以下文章

PHP EDI X12 解析

EDI X12 855 采购订单确认

EDI X12 版本 4010 消息 - 非复合元素可以包含子元素分隔符吗?

EDI X12 856 是不是有官方的 XML 模式 (xsd)?

EDI 格式

关于标准EDI/B2B标准的X12标准