Validate端口使用手册

知行之桥EDI系统从2020版本开始引入了Validate端口,用来实现对XML数据文件进行一些规则的验证,保证XML数据文件的有效性。本文将介绍如何使用Validate端口。

端口创建

同其他功能性端口一样,只需要将Validata端口从左侧的端口清单拖拽到右侧的工作空间就可以创建一个Validate端口进行使用,如下图创建一个端口名称为Validate_Test的Validate端口:

edi

端口功能

Validate端口通过设置一些校验规则,对输入的XML数据文件进行有效性校验,比如数据转换过程中常见的数据库XML、EDI标准XML、自定义XML,所以使用该端口需要保证数据源文件为XML文件。

Validate端口支持对输入的XML文件进行xpath验证和Header验证:
xpath验证:对输入的XML文件结构,比如节点路径、节点值进行校验。
Header验证:对输入文件消息头部信息进行校验,比如文件名称(filename)

本文将用以下示例XML进行演示:

校验规则

Validate端口主要支持以下规则的设置:

1.等于与不等于规则

等于:指定条件等于一个固定值
不等于:指定条件不等于一个固定值
示例:Items/Header/BY_name 等于TESTA

edi

当输入的BY_name字段值为TESTA时,输入的XML文件成功处理,并进行后续端口的处理。

edi

当输入的BY_name字段值不为TESTA时,抛出异常:The value at xpath “/Items/Header/BY_name/” does not satisfy a validation rule. Expected: == TESTA Actual: TESTC,并停止处理该XML文件。

edi

2.包含规则

包含规则:指定条件包含指定的字符串

示例1:Items/Header/BY_name 包含TEST

edi

当输入的BY_name字段值 包含TEST字符串时,输入的XML文件成功处理,并进行后续端口的处理。
当输入的BY_name字段值不包含TEST字符串时,抛出异常:The value at xpath “/Items/Header/BY_name/” does not satisfy a validation rule. Expected: =~ TEST Actual: C,并停止处理该XML文件。

edi

示例2:判断文件名是否包含test

edi

当输入的文件名 包含test字符串时,输入的XML文件成功处理,并进行后续端口的处理。
当输入的文件名不包含test字符串时,抛出异常:The value at header “filename” does not satisfy a validation rule. Expected: =~ test Actual: TEST-20221220-2.txt,并停止处理该XML文件。

edi

3.前缀和后缀规则:

前缀为:指定条件是否以指定字符串开头
后缀为:指定条件是否以指定字符串结尾
示例:Items/Header/BY_name 前缀为TEST

edi

当输入的BY_name字段值以TEST开头时,输入的XML文件成功处理,并进行后续端口的处理。
当输入的BY_name字段值不是以TEST开头时,抛出异常:The value at xpath “/Items/Header/BY_name/” does not satisfy a validation rule. Expected: =~ TEST* Actual: C,并停止处理该XML文件。

edi

4.小于大于等于规则:

小于:指定条件小于固定值
小于或等于:指定条件小于或等于固定值
大于:指定条件大于固定值
大于或等于:指定条件大于或等于固定值
示例:Items/Header/PO_QTY 与100进行比较

edi

当输入的PO_QTY字段值小于100时,输入的XML文件成功处理,并进行后续端口的处理。
当输入的PO_QTY字段值不小于100时,抛出异常:The value at xpath “/Items/Header/PO_QTY/” does not satisfy a validation rule. Expected: < 100 Actual: 100,并停止处理该XML文件。

edi

5.指定条件是否为空规则(该指定条件存在,对指定条件的值进行校验):

为空:指定条件存在,并且指定条件的值为空
不为空:指定条件存在,并指定条件的值不为空
示例:/Items/Header/PO_unit 为空

edi

当输入的PO_unit字段存在,但是值为空时,输入的XML文件成功处理,并进行后续端口的处理。
当输入的PO_unit字段存在,但是值不为空时,抛出异常:The value at xpath “/Items/Header/PO_unit/” does not satisfy a validation rule. Expected: == Actual: EA,并停止处理该XML文件。
edi

6.指定条件是否存在规则:
为Null:指定条件存在,对指定条件的值是否存在没有限制
不为Null:指定条件不存在
示例:/Items/Header/PO_unit 为Null
edi
当输入的PO_unit字段不存在时,输入的XML文件成功处理,并进行后续端口的处理。
当输入的PO_unit字段存在时,抛出异常:The value at xpath “/Items/Header/PO_unit/” does not satisfy a validation rule. Expected: IS NULL Actual:,并停止处理该XML文件。
edi

需要注意与上一个规则组“指定条件是否为空”的区别。

7.属于:指定条件是否属于指定数组中的值(区分大小写)
属于:指定条件属于指定数组中的值
不属于:指定条件不属于指定数组中的值
示例:/Items/Header/BY_name 属于 (TESTA,TESTB,TESTC)中的一个
edi
当输入的BY_name字段值属于数组(TESTA,TESTB,TESTC)中的一个值时,输入的XML文件成功处理,并进行后续端口的处理。
当输入的BY_name字段值不属于数组(TESTA,TESTB,TESTC)中的一个值时,抛出异常:The value at xpath “/Items/Header/BY_name/” does not satisfy a validation rule. Expected: IS IN [TESTA,TESTB,TESTC] Actual: TESTD,并停止处理该XML文件。
edi

8.正则匹配:设置一些正则匹配规则
示例:/Items/Header/BY_name 节点值为TESTA,忽略大小写,可以设置(?i)TESTA来实现
edi
当输入的BY_name字段值为TESTA,不对大小写进行校验,输入的XML文件成功处理,并进行后续端口的处理。
当输入的BY_name字段值不为TESTA(大小写都支持)时,抛出异常:The value at xpath “/Items/Header/BY_name/” does not satisfy a validation rule. Expected: =# (?i)TESTA Actual: testB,并停止处理该XML文件。

edi

9.Glob匹配:设置一些简单的正则规则
示例:/Items/Header/BY_name 为A开头的字符串,可以设置A来实现
edi
当输入的BY_name字段值为A开头的字符串时,输入的XML文件成功处理,并进行后续端口的处理。
当输入的BY_name字段值不为A开头的字符串时,抛出异常:The value at xpath “/Items/Header/BY_name/” does not satisfy a validation rule. Expected: < A
Actual: BA123,并停止处理该XML文件。

edi

配置多条规则

以上示例都是设置的一条校验规则,针对同一个XML文件可以同时设置多个规则,通过and或者or进行组合来实现,所以对于同一种格式的XML文件的校验,可以使用一个Validate端口实现需要设置的所有校验规则,如下图:
edi

以上便是本次项目案例的全部内容了,了解更多 EDI 信息,请参阅: EDI 是什么?

了解更多EDI信息,请您通过邮件 sales@kasoftware.cn 联系我们。点击下方蓝色按钮,即可免费试用EDI软件。

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

标签: ,
文章分类 产品介绍, 帮助文档, 常见问题和回答, 操作指南, 知识库, 脚本和自动化, 解决方案