You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

IBM Integration Bus Toolkit新手求助:输出文件名添加当前日期

在IBM Integration Bus Toolkit中给输出文件名追加当前日期的实现方法

嘿,刚接触IIB和Toolkit的话,这个需求其实挺容易实现的,我给你两种常用的方法,你可以根据自己的场景选:

方法一:直接在FileOutput节点配置动态文件名(最简单)

这是最直接的方式,不用额外加节点,直接在FileOutput节点里配置就行:

  • 打开你的消息流,找到负责输出的FileOutput节点,双击打开配置界面。
  • File name输入框里,不要写固定的output.txt,而是用IIB内置的日期函数来拼接文件名,比如你要的output-20180225.txt格式,直接写:
    output-${DATE:DATE('yyyyMMdd')}.txt
    
    这里的${DATE:DATE('yyyyMMdd')}会自动替换成当前系统的年月日(四位年+两位月+两位日),完全符合你的需求。
  • 如果你的基础文件名不是固定的,比如需要从输入消息或者环境变量里获取,那可以把基础名和日期拼接,比如基础名存在LocalEnvironment里的话:
    ${LocalEnvironment.Destination.File.Name}-${DATE:DATE('yyyyMMdd')}.txt
    
  • 配置完保存消息流,部署后测试就可以看到带日期的输出文件了。

方法二:用Compute节点生成文件名(更灵活)

如果需要更复杂的逻辑(比如根据文件内容调整日期格式、用文件的修改日期而非当前日期),可以用Compute节点来生成完整文件名:

  • 在FileInput节点之后,添加一个Compute节点
  • 双击打开Compute节点的ESQL编辑器,在Compute代码块里添加以下逻辑:
    -- 获取当前日期并格式化为YYYYMMDD
    DECLARE currentDate CHAR DATE('yyyyMMdd');
    -- 拼接成目标文件名
    SET LocalEnvironment.Destination.File.Name = 'output' || '-' || currentDate || '.txt';
    
  • 回到FileOutput节点的配置界面,在File name选项里选择Use value from LocalEnvironment,这样就会自动使用Compute节点生成的文件名。
  • 保存部署后测试即可。

一些注意事项

  • 日期格式的参数是大小写敏感的,yyyy代表四位年,MM是两位月(注意大写,小写mm是分钟),dd是两位日,别写错哦。
  • 如果想用文件的修改日期而非当前系统日期,可以从FileInput节点的LocalEnvironment里获取:LocalEnvironment.Source.File.LastModified,然后用DATEFORMAT函数转换成你需要的格式。
  • 测试的时候可以用Toolkit自带的Message Flow Test Client,模拟一个文件输入,快速验证文件名是否正确生成。

内容的提问来源于stack exchange,提问作者Hervinho

火山引擎 最新活动