此前的文章介绍了SNIP验证EDI文件,本文主要介绍如何在知行EDI系统中实施SNIP验证。知行EDI系统的EDI处理功能包括对较低SNIP验证级别的内置支持。更高的SNIP验证级别可能需要配置验证端口作为数据处理的附加步骤,而最高级别的SNIP验证可能需要编写脚本来实现验证逻辑。

在文章SNIP验证EDI文件中介绍了SNIP的7种类型,本节将描述如何在知行EDI系统中实现每个级别的SNIP验证。但是,在描述所有这些级别之前,对于知行EDI系统的新手来说,描述应用程序如何处理EDI处理可能会有很大帮助。

知行EDI系统的EDI端口

知行EDI系统包含许多EDI端口,这些端口可将各种EDI格式转换为XML或从XML生成EDI文档。将EDI数据转换为XML的过程,遵循知行EDI系统在集成流程中使用XML作为中间数据格式的一般方法。使用XML作为通用数据格式,不仅可以简化通过XML Map Connector进行的数据转换,还可以确保知行EDI系统可以集成来自不同数据源和格式的数据。因此,数据通常在流程的早期转换为XML,在流程的中间传输,然后在流程结束时从XML转换为某种目标格式。

当EDI端口将EDI数据转换为XML时,知行EDI系统还将根据适当的EDI文档架构对EDI结构进行验证。默认情况下,此验证仅包括确保EDI可以正确转换为XML所必需的内容:段顺序,段的打开和关闭等。EDI端口还在“高级设置”选项卡中有一个名为SNIP Validation的设置,启用后会加强对EDI数据的验证要求。知行EDI系统中,启用SNIP Validation的页面如下图所示:

在知行EDI系统中的FLOWS页面下,任选一个EDI端口。以EDIFACT端口为例,点击名为EDIFACT1的端口,在Advanced页面下勾选Enable SNIP validation即可。

如以下小节所述,要确保SNIP验证的前三个级别,只需在EDI端口中启用SNIP Validation设置即可。

要实现更高级别的SNIP验证,可能需要额外的验证端口或自定义Script。这些端口将在EDI端口之后添加到Flow中,因此要验证的数据将是XML(EDI端口已经将EDI转换为XML)。下面提供了此附加验证的详细信息。

实施SNIP类型1

知行EDI系统通过其内置的EDI处理自动实现SNIP类型1。无需启用任何设置,也无需采取任何其他步骤。

实施SNIP类型2和3

为了确保SNIP类型2或3验证,应在负责将EDI转换为XML的EDI端口的“高级”选项卡中启用SNIP验证设置。无需其他步骤。

实施SNIP类型4

SNIP类型4验证要求将“验证端口”添加到处理输入EDI数据的流中。为实现类型4逻辑,可以验证端口配置:元素A 包含值“X”,然后,元素B必须是一组值之一,例如“Y”或“Z”。请注意,验证端口需要XML输入,因此应将输入EDI文件转换为XML的EDI端口之后添加。

在验证端口中正确实现此逻辑需要对所涉及的EDI数据有一定的了解。用户必须熟悉具有这种“if A,then B”关系的特定EDI元素,并能够在转换的XML中追踪到这些元素的xpath。

一旦知道了EDI元素之间的xpath和关系,就可以使用在知行EDI系统工作流中实现这些要求的规则来配置验证端口。这些规则检查两个xpath的值是否都在期望的集合内,并使用运算符“不等于”,“正则表达式匹配”和布尔值“OR”来完成“if-then”逻辑。下面提供了实现此逻辑的示例。
以一个简单的Type 4要求为例:如果elementA的值为“IL”,则elementB必须为“40”,“41”或“42”。

在验证端口中实现此步骤时,需要考虑两个步骤:

  • 找到保留相关值的xpath
  • 使用“等于”,“正则表达式匹配”和“或”实现if-then关系

为了这个示例,想象一个简单的xpath到我们的两个相关元素:

  • /Items/path/elementA
  • /Items/path/elementB

这些将在“验证端口”规则的“xpath”字段中使用。

接下来,考虑这些元素之间的逻辑关系:如果elementA具有特定值(“IL”),则elementB必须具有特定值(范围为40-42的数字)。表达这种关系的另一种方法是下面的:要么elementA是不特定的值(“IL”),或elementB 必须具有特定值(40-42)。关系的这种表述可以在验证端口中通过“OR”连接的两个规则来表示:

elementA notequals 'IL'
OR
elementB regex matches (40|41|42)

可以为需要具有“类型4”验证关系的每对元素实施这种验证规则方法。

实施SNIP类型5-7

更高级别的SNIP验证要求编写自定义Script来实现要求。本节将概述开始为每个验证级别编写脚本所必需的概念。

与验证相关的通用脚本概念

将EDI文件转换为XML后,最好应用Script。它包括xmlDOMSearch之类的操作,用于在指定的xpath上循环XML数据。因此,建议的工作流设计是将脚本端口直接放置在EDI端口之后,以负责将EDI文档转换为XML,并使用适当的验证脚本配置该脚本端口。

在xmlDOMSearch中,xpath格式化程序可以检索指定xpath处的值(相对于xmlDOMSearch调用中提供的xpath )。本小节的底部提供了使用此格式化程序的示例。

arc:set关键字用于在一个属性(即变量)中存储一个值。arc:if关键字可以用来实现条件逻辑。arc:select关键字可以用来检查一个值是否在指定的情况集内。

当验证脚本遇到验证失败的EDI数据时,它需要引发错误。Script中的错误使用arc:throw关键字引发。

以下是示例Script的摘要,表示脚本验证规则所需的逻辑种类:

<!-- set input parameters of xmlDOMSearch -->
<arc:set attr="input.uri" value="[FilePath]" />
<arc:set attr="input.xpath" value="/Interchange/FunctionalGroup/TransactionSet/TX-00501-837"><!-- loop over the input file at the given xpath -->
<arc:call op="xmlDOMSearch" in="input">
<!-- retrieve specific values from the XML; elementA and elementB -->
<arc:set attr="elementA" value="[xpath('HLLoop1/NM1Loop2/NM1/NM101')]" />
<arc:set attr="elementB" value="[xpath('HLLoop1/NM1Loop2/NM1/NM103')]" /><!-- check elementA against a list of possible values with a 'select' statement -->
<arc:select value="[elementA]"><!-- for each possible elementA value, see if elementB has a valid value -->
<arc:case value="IL">
<arc:if exp="[elementB | notequals(40)] && [elementB | notequals(41)] && [elementB | notequals(42)]">
<!-- invalid value detected, throw an error -->
<arc:throw code=1 desc="ElementB had an invalid value of [elementB]." />
</arc:if>
</arc:case>
<arc:case value="PR">
<arc:if exp="[elementB | notequals(43)] && [elementB | notequals(44)]">
<!-- invalid value detected, throw an error -->
<arc:throw code=1 desc="ElementB had an invalid value of [elementB]." />
</arc:if>
</arc:case>
</arc:select>
</arc:call>

SNIP类型5

SNIP类型5需要读取外部资源以检查可能的值范围。用户负责获取这些外部资源的过程。

一旦获得,就可以使用一系列Script功能从这些资源中读取值,具体取决于资源的特定类型:

  • 可以使用dbQuery操作查询数据库
  • 文本文件可以通过fileRead操作读取
  • 可以使用csvListRecords操作读取CSV文件

读取到来自外部授权的值后,实现这些限制的过程将遵循与上一小节中提供的代码段相似的语法。

SNIP类型6

SNIP类型6需要根据EDI文件中列出的服务来验证特定的值关系。用于此验证的脚本方法遵循与其他数据验证脚本相同的原则,另外还有一个步骤,即首先在验证每个单独的数据元素时检索要使用的医疗服务价值。

这些脚本应遵循上述相同的“arc:select”和“arc:if”方法,尽管实际的逻辑中可能包含更多级别和元素。

SNIP类型7

SNIP类型7需要来自外部EDI交易伙伴的直接输入。因此,实施这些规则的细节取决于合作伙伴,但是应使用相同的条件逻辑工具(“arc:select”,“arc:if”)来实施这些检查。

知行EDI系统包括对SNIP验证的基线级别的简单一键式支持,并提供了端口和Script验证以实施更具体的验证规则。

更多EDI技术交流,欢迎私信或评论!

注:文案部分图片及内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。

在知行EDI系统中实施SNIP验证相关推荐

  1. 知行EDI系统如何通过中间数据库表方式集成金蝶ERP

    金蝶ERP作为目前使用最广泛的业务系统之一,面向不同的服务群体有不同类别的软件,主要有企业管理软件.协同管理软件.政府非盈利组织管理软件.夯实的数据整合管理能力和应对不同业务的实施灵活性,让金蝶ERP ...

  2. 如何在知行之桥EDI系统中配置更新证书

    在EDI系统中与交易伙伴实现数据传输时为保证数据的安全性,需要使用一对数字证书对数据进行签名和加密,但是在申请或购买证书时会给证书一个有限期,证书到期时,您需要重新申请或购买新的证书进行更新,那么在知 ...

  3. 如何在知行之桥EDI系统中定时自动更换交易伙伴AS2证书?

    为了保证客户与交易伙伴之间数据传输的安全性,AS2传输协议中,通常会通过一对数字证书对传输数据进行签名和加密.但是证书是有有效期的,在证书到期之前,需要贸易双方及时更换新的证书. 在更新证书时,由于客 ...

  4. 如何监控文件已成功通过EDI系统发给客户(一)-邮件通知

    在EDI项目实际运行中,对于实际使用EDI系统的用户常常期待:当业务数据文件通过EDI系统成功发送给客户后,能够得到通知表示文件已经成功发送,这样用户不用登陆到EDI系统即可得知数据已成功发出,已达到 ...

  5. 知行 EDI 无缝替换 Sterling B2B Integrator

    自2003年以来,Tangentia 作为向各种规模的公司提供数字转换解决方案的领先提供商,实施了大规模的自动化,B2B 和数字集成解决方案. 在他们的解决方案中,Tangentia 提供端到端 ED ...

  6. [案例] 知行 EDI 无缝替换 Sterling B2B Integrator

    自2003年以来,Tangentia 作为向各种规模的公司提供数字转换解决方案的领先提供商,实施了大规模的自动化,B2B 和数字集成解决方案. 在他们的解决方案中,Tangentia 提供端到端 ED ...

  7. AppScan api登录接口 postman_如何通过Postman调用EDI系统的API?

    知行EDI系统主要是用来实现贸易双方的数据交换的过程,这个过程中,贸易双方往往需要根据国际通用的消息格式收发信息,我们称符合国际规范的消息文件为EDI报文,然而不同的公司会结合ERP的接口情况选择不同 ...

  8. sftp java测试连通性_如何使用知行EDI系统模拟连通性测试?

    如何使用知行EDI系统模拟连通性测试? EDI(电子数据交换, Electronic Data Interchange 的缩写)传输协议中,都有一个发送方和接收方,双方需交换配置信息和证书,且均完成配 ...

  9. 如何保证EDI系统长期稳定运行

    作为一个EDI运维工程师,深知系统故障对于我们来说永远都是心中的痛,但避免故障的原因却总是相同的,总结起来就是这几个字:防患于未然. 随着EDI领域的飞速发展,我们已经拥有了较为庞大的客户群,随之带来 ...

  10. 如何修改EDI系统schema版本

    预计阅读时长:3分钟 本文以汽车行业EDI项目为例,介绍如何处理特殊版本的报文.(注:知行EDI系统默认可处理00401.00403和00501三种版本的报文.) 本次EDI项目采用Excel方案,使 ...

最新文章

  1. 计算机的几种类型单词、快捷键
  2. [原] Android持续优化 - 提高流畅度
  3. 6kyu Steps in k-prime
  4. JDBC的批处理操作
  5. 安装Lync 2013过程中遇到的第一个报错
  6. angularjs ui-router 路由简介
  7. 计算机电源高频干扰,在高频开关电源设计中怎样抑制电磁干扰?
  8. 【线性代数01】矩阵的转置和逆
  9. 46个不得不知的生活小常识
  10. 出现数据库不给访问的情况
  11. [ML](HMM、MRF、CRF)
  12. Python获取前一天的日期,前一个月的第一天,前一个月的最后一天
  13. 作为一个测试,必须了解业务
  14. [Java反序列化]CommonsCollections3利用链学习
  15. 80个python项目下载_80个Python经典资料(教程+源码+工具)汇总——下载目录
  16. 如何快速实现文章AI伪原创?
  17. 在线计算机推理,UCAT考试——定量推理部分指南
  18. java计算机毕业设计基于web的民宿预定系统源程序+mysql+系统+lw文档+远程调试
  19. 我的又一个iPhone程序正式上线了
  20. word文档密码保护,无法编辑怎么办?

热门文章

  1. LabVIEW学习笔记1
  2. linux中grep命令 菜鸟教程,Linux 常用命令学习 | 菜鸟教程
  3. 简单.bat 代码蓝屏
  4. 使用step7 v5.6创建工程、仿真操作
  5. 资源下载南方cass视频教程,包括文档,数据,很全的
  6. 2019年注册测绘师备考历程
  7. 02java特性,编译与运行
  8. Pandas数据类型-DataFrame之创建和访问
  9. 2021工程伦理慕课答案
  10. js生成二维码 中间有logo