Flat File端口更新:如何实现嵌套结构

Published On: 2024年9月20日Categories: EDI, EDI视频教程, 产品介绍, 帮助文档, 操作指南, 知识库, 脚本和自动化, 解决方案Views: 1

© All rights reserved. • 西安知行软件有限公司 • 陕ICP备09022277号

Flat File端口可以实现平面文件和XML文件的互相转换,本文主要介绍在知行之桥EDI系统8971及更高版本中,Flat File端口如何支持类似EDI嵌套结构的转换。

下载示例工作流以及示例文件

打开知行之桥EDI系统,创建一个命名为Flatfile的工作区,将FlatFile.arcflow拖拽至空白区域即可实现导入。可以看到这个工作流中有两个Flat File测试端口,分明被命名为:Position_S_O_P以及Character_S_O_P。

Flat-File1.png

扩展阅读:知行之桥EDI系统功能介绍——FlatFile 端口介绍

Character_S_O_P 这个端口将为大家演示平文件按照分隔符切分字段的情况
Position_S_O_P 将为大家演示平文件按照长度切分字段的情况

此外在示例文件中,有两个文件:Character_S_O_P.txt是Character_S_O_P 端口的测试文件;Position_S_O_P.txt是 Position_S_O_P 端口的测试文件。

首先以按照分隔符切分字段的情况为例,在Character_S_O_P端口的输入选项卡下上传文件:Character_S_O_P.txt,由于勾选了自动发送,因此可以直接在输出选项卡下查看FlatFile端口的转换效果。点击文件名即可预览。

Flat-File2.png

源文件:

S,0,0
O,1,0
P,2,1
P,3,1
O,4,0
O,5,0

经过 FlatFile端口转换后的文件:


    
        
            0
            0
        
        
            
                1
                0
            
            
                

2 1

3 1

4 0 5 0

这里可以和我们上传的源文件做一个对比,可以看到按照字符切分字段,实现的嵌套效果。

接下来以平文件按照长度切分字段的情况为例,在Position_S_O_P端口上传测试文件:Position_S_O_P.txt,在输出选项卡下查看端口的转换效果,点击文件名进行预览,对比上传的源文件,可以看到同样实现了嵌套效果。

Flat-File3.png

源文件:

S0 0
O1  0 
P2   1  
P3   1  
O4  0 
O5  0 

经过 FlatFile端口转换后的文件:


    
        
            0
            0
        
        
            
                1
                0
            
            
                

2 1

3 1

4 0 5 0

那么我们如何自定义结构呢?需要注意的是,由于现在Flatfile端口的UI还不支持EDI嵌套结构的操作。所以,需要手动编辑软件安装目录下的 端口文件夹\Resources\schema.json 文件。

Flat-File4.png

按分隔符切分字段的schema.json如下:

{
    "DelimitationType": {
        "Segment": {
            "Type": "Character",
            "Delimiter": "\n",
            "EscapeType": "Escaping",
            "EscapeChar": "\\"
        },
        "Element": {
            "Type": "Character",
            "Delimiter": ",",
            "EscapeType": "Escaping",
            "EscapeChar": "\\"
        }
    },
    "Parts": [
        {
            "Id": "LoopS",
            "Max": -1,
            "Loop": [
            {
                "Id": "S",
            },
            {
                "Id": "LoopO",
                "Max": -1,
                "Loop": [
                {
                    "Id": "O",
                },
                {
                    "Id": "LoopP",
                    "Max": -1,
                    "Loop": [
                    {
                        "Id": "P",
                    }]
                }]
            }]
        }
    ],
    "Segments": {
        "S": {
            "Elements": [
                {
                    "Name": "Type"
                },
                {
                    "Name": "Id"
                },
                {
                    "Name": "Pid"
                }
            ]
        },
        "O": {
            "Elements": [
                {
                    "Name": "Type"
                },
                {
                    "Name": "Id"
                },
                {
                    "Name": "Pid"
                }
            ]
        },
        "P": {
            "Elements": [
                {
                    "Name": "Type"
                },
                {
                    "Name": "Id"
                },
                {
                    "Name": "Pid"
                }
            ]
        }
    }
}

按照长度切分字段的schema.json如下:

{
    "DelimitationType": {
        "Segment": {
            "Type": "Position"
        },
        "Element": {
            "Type": "Position"
        }
    },
    "Parts": [
        {
            "Id": "LoopS",
            "Max": -1,
            "Loop": [
            {
                "Id": "S",
            },
            {
                "Id": "LoopO",
                "Max": -1,
                "Loop": [
                {
                    "Id": "O",
                },
                {
                    "Id": "LoopP",
                    "Max": -1,
                    "Loop": [
                    {
                        "Id": "P",
                    }]
                }]
            }]
        }
    ],
    "Segments": {
        "S": {
            "Elements": [
                {
                    "Name": "Type",
                    "PositionLength": 1
                },
                {
                    "Name": "Id",
                    "PositionLength": 2
                },
                {
                    "Name": "Pid",
                    "PositionLength": 1
                }
            ]
        },
        "O": {
            "Elements": [
                {
                    "Name": "Type",
                    "PositionLength": 1
                },
                {
                    "Name": "Id",
                    "PositionLength": 3
                },
                {
                    "Name": "Pid",
                    "PositionLength": 2
                }
            ]
        },
        "P": {
            "Elements": [
                {
                    "Name": "Type",
                    "PositionLength": 1
                },
                {
                    "Name": "Id",
                    "PositionLength": 4
                },
                {
                    "Name": "Pid",
                    "PositionLength": 3
                }
            ]
        }
    }
}

以上便是按照分隔符切分字段以及按照长度切分字段两种不同情况下,schema.json的不同写法了。大家可以以这两个端口下的Schema为例,根据实际需求,自定义结构。

如果新创建了一个Flat File端口,则需要在软件安装目录下找到这个端口,在这个端口下添加一个命名为Resources的文件夹,并创建一个schema.json的文件,在这里编写脚本实现自定义结构。

如果您希望了解有关EDI对接的相关信息,欢迎联系我们。

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

为什么选择

知行之桥®?​

根据企业规模与集成需求,提供从本地部署到云端托管的灵活选择

可视化 EDI 工作流

基于拖拽式图形化设计器,零代码构建完整 EDI 业务流程,满足复杂供应链自动化场景。

Odette & Drummond 认证

通过 Odette(OFTP) 与 Drummond(AS2) 权威认证,确保与主机厂安全合规、高可靠的数据交换。

多系统集成能力

提供数据库、REST/SOAP、FTP/SFTP 等标准化接口,实现 ERP、WMS、MES 等系统的双向数据自动同步。

数据映射格式转换

内置可视化 Mapping 编辑器,零代码实现 EDI 报文与企业内部数据格式(XML/JSON…)的映射转换及复杂规则处理。

实时监控预警机制

全流程可视化监控报文状态,支持邮件、钉钉、企业微信自动预警,保障 JIT 交付的稳定性与及时性。

多工厂支持

支持集团级多组织、多工厂架构,实现数据隔离与权限管控,统一平台集中运维,满足大型制造企业多地点协同需求。