跳到主要内容
版本:Next

FileDownloaderActivity - 文件同步

概述

FileDownloaderActivity 是一个文件同步节点,用于从 SMB 共享文件夹同步文件到本地目录。该节点支持远程共享文件夹的身份验证、文件匹配过滤、同步模式选择以及源文件删除等功能。

基本信息

属性
显示名称文件同步
类名FileDownloaderActivity
命名空间CMS.Plugin.FlowManagement.Domain.FlowBusiness.Activitys
基类ActionActivity
分类文件操作
可见性可见(Visible = true)
排序20

配置说明

SMB 配置

属性名显示名称类型默认值说明
SoruceDirectoryPath源目录stringnull远程共享文件夹路径,待同步的目录
UserName用户名stringnullSMB 共享访问的用户名
Password密码stringnullSMB 共享访问的密码
SearchPattern匹配规则string"*.csv"文件匹配模式,支持通配符
SearchOption搜索模式SearchOptionTopDirectoryOnly搜索范围:仅顶层目录或包含子目录
TargetDirectoryPath目标目录string"FileDownloaderTempFiles"本地目标目录,支持绝对路径或相对路径
DeleteSourceFile删除源文件booltrue同步完成后是否删除源文件
SynchronousMode文件同步模式FileSynchronousModeSkip目标文件已存在时的处理方式
SavePathsContext流程上下文stringnull存储已同步文件路径集合的上下文变量名

搜索模式(SearchOption)

枚举值说明
TopDirectoryOnly仅搜索顶层目录
AllDirectories搜索所有子目录

文件同步模式(FileSynchronousMode)

枚举值说明
Skip跳过已存在的文件
Rename重命名新文件(添加序号后缀)

流程上下文

输出变量

变量名类型说明
{SavePathsContext}List<string>已同步的目标文件路径集合(变量名由配置指定)

业务逻辑

执行流程

┌─────────────────────────────────────────────────────────────┐
│ FileDownloaderActivity │
├─────────────────────────────────────────────────────────────┤
│ 1. 判断源目录类型 │
│ ├─ 本地路径(如 C:\...)→ 直接访问 │
│ └─ 网络路径(如 \\server\...)→ 建立 SMB 连接 │
├─────────────────────────────────────────────────────────────┤
│ 2. 建立 SMB 连接(如需要) │
│ └─ 使用 net use 命令连接共享 │
├─────────────────────────────────────────────────────────────┤
│ 3. 扫描源目录 │
│ └─ 根据 SearchPattern 和 SearchOption 查找文件 │
├─────────────────────────────────────────────────────────────┤
│ 4. 同步文件 │
│ ├─ 检查目标文件是否存在 │
│ ├─ 根据 SynchronousMode 处理冲突 │
│ ├─ 复制文件到目标目录 │
│ └─ 删除源文件(如果配置) │
├─────────────────────────────────────────────────────────────┤
│ 5. 输出结果 │
│ └─ 将同步的文件路径存储到流程上下文 │
└─────────────────────────────────────────────────────────────┘

路径处理

  • 本地路径判断:检查路径第二个字符是否为 :(如 C:\
  • 相对路径转换:非绝对路径会自动转换为相对于应用程序目录的绝对路径
  • 目录自动创建:目标目录不存在时自动创建

文件冲突处理

模式处理方式
Skip跳过同步,保留原有文件
Rename在文件名后添加序号,如 file-1.csvfile-2.csv

使用示例

基本配置

{
"Name": "同步CSV文件",
"Type": "FileDownloaderActivity",
"SoruceDirectoryPath": "\\\\192.168.1.100\\share\\data",
"UserName": "admin",
"Password": "password123",
"SearchPattern": "*.csv",
"TargetDirectoryPath": "SyncFiles",
"DeleteSourceFile": true,
"SynchronousMode": "Skip",
"SavePathsContext": "SyncedFiles"
}

同步所有子目录

{
"Name": "同步所有文件",
"Type": "FileDownloaderActivity",
"SoruceDirectoryPath": "\\\\fileserver\\backup",
"UserName": "backup_user",
"Password": "backup_pwd",
"SearchPattern": "*.*",
"SearchOption": "AllDirectories",
"TargetDirectoryPath": "D:\\LocalBackup",
"DeleteSourceFile": false,
"SynchronousMode": "Rename"
}

本地目录同步

{
"Name": "本地文件同步",
"Type": "FileDownloaderActivity",
"SoruceDirectoryPath": "D:\\SourceData",
"SearchPattern": "*.xml",
"TargetDirectoryPath": "ProcessedData",
"DeleteSourceFile": true,
"SavePathsContext": "ProcessedFiles"
}

配合后续处理

┌──────────────────┐     ┌──────────────────┐     ┌──────────────────┐
│FileDownloaderActivity│──▶│ CsvReadActivity │──▶│ DataFilterActivity│
│ 同步CSV文件 │ │ 读取同步的文件 │ │ 处理数据 │
│ SavePathsContext: │ │ │ │ │
│ "SyncedFiles" │ │ │ │ │
└──────────────────┘ └──────────────────┘ └──────────────────┘

注意事项

  1. 网络访问权限:确保运行账户有权限访问 SMB 共享
  2. 防火墙设置:确保 SMB 端口(445)未被防火墙阻止
  3. 凭据安全
    • 避免在配置中明文存储密码
    • 建议使用配置加密或凭据管理
  4. 磁盘空间:确保目标目录有足够的磁盘空间
  5. 文件锁定
    • 源文件被占用时可能复制失败
    • 删除源文件时如果被占用会记录异常但不中断流程
  6. 路径格式
    • 网络路径使用 UNC 格式:\\server\share\folder
    • 本地路径使用标准格式:C:\folder 或相对路径
  7. 性能考虑
    • 大量文件同步时注意网络带宽
    • 建议在非高峰期执行大批量同步

错误处理

错误场景处理方式
SMB 连接失败抛出异常,记录错误信息
文件复制失败记录异常,继续处理下一个文件
源文件删除失败记录异常,不影响同步结果
目标目录创建失败抛出异常

相关节点


最后更新时间: 2025-11-28