如何在JAMS工作流中通过变量判断SSIS是否生成输出文件
仅通过变量判断SSIS输出文件生成状态的实现方案
步骤1:SSIS包内新增状态变量与校验逻辑
- 在SSIS包的包级别作用域创建两个变量:布尔类型
User::FileGenerateSuccess,默认值为False;字符串类型User::OutputFilePath,存储目标输出文件的完整路径。 - 在生成输出文件的任务(如数据流任务、文件系统任务)的成功后置约束后,新增一个脚本任务,将上述两个变量添加到脚本任务的读写变量列表中,写入校验逻辑:
using System.IO; public void Main() { string targetPath = Dts.Variables["User::OutputFilePath"].Value.ToString(); Dts.Variables["User::FileGenerateSuccess"].Value = File.Exists(targetPath); Dts.TaskResult = (int)ScriptResults.Success; }
- 将
User::FileGenerateSuccess设置为SSIS包的公开输出参数。
步骤2:JAMS侧绑定SSIS输出参数到工作流变量
- 在JAMS中预先创建一个布尔类型的自定义变量,例如
SSIS_File_Generated。 - 打开JAMS中调用SSIS包的作业配置,找到「SSIS输出参数映射」模块,将SSIS包输出的
FileGenerateSuccess参数绑定到SSIS_File_Generated变量,SSIS包执行完成后会自动将状态值同步到该JAMS变量。
步骤3:工作流直接使用变量做分支判断
后续JAMS工作流任务可以直接读取SSIS_File_Generated的值做分支逻辑:值为True时走文件后续处理流程,值为False时走告警、重试等异常流程,全程不需要搭建FTP会话做文件校验。
无需修改SSIS包的备选方案
如果SSIS包输出文件的存储路径是JAMS服务器可直接访问的本地路径/域内共享路径,可直接在JAMS工作流中插入一个PowerShell脚本任务实现变量校验:
- JAMS中预先创建
Target_File_Path(字符串类型)、File_Generated(布尔类型)两个自定义变量,前者存储目标文件路径。 - 脚本任务中执行命令:
$Variable:File_Generated = Test-Path -Path $Variable:Target_File_Path
执行完成后File_Generated变量就会直接存储文件是否存在的状态。
内容的提问来源于stack exchange,提问作者Khongor Bayarsaikhan
相关产品推荐
相关产品推荐

