现在很清楚,转换的所有步骤都是并行执行的,在 Pentaho 中无法改变这种行为。
鉴于此,我们有一个带有切换任务的场景,该任务检查特定字段(从文件名读取)并决定哪个任务(映射 - 子转换)将处理该文件。这是通用逻辑的一部分,在每个映射任务之前和之后,都会执行一些样板任务,例如更新数据库记录、发送电子邮件等。
问题是:如果我们没有“ACCC014”文件,则无法执行此转换。我知道这是不可能的,因为所有任务都是并行执行的,所以出现了第二个问题:在一些映射中,创建了 XML 文件。即使 Pentaho 使用空数据执行此任务,我们也无法找到避免创建 XML 输出文件的方法。
我们考虑将这个开关逻辑移到作业中,因为理论上它是串行的,但没有发现可以进行这种区分的条件步骤。
我们还研究了元数据注入任务,但我们不相信这是要走的路。每个子转换都做了不同的工作。其中一些更新一些表,另一些写入文件,另一些在不同数据库之间移动数据。它们都接收一些文件作为输入并返回一个 send_email 标志和一个消息字符串。没有其他的。
有没有办法做我们愿意做的事?或者没有办法重用基于默认输入/输出的部分逻辑?
编辑:添加 ACCC014 转换。是的,“不要在开始时创建文件”选项被选中。