我有一个包含10个会话的WF。但是,10次会议中只有6次获得成功, 当我跑WF时。当我再次运行WF时,我只需要运行失败的4个会话,我不应该重新运行成功的会话。请告诉我如何实现这一目标。
注意:我使用SQLSERVER作为源和ORACLE作为目标。
相同的帖子/问题已经出现,其中一些细节不能正确理解
我尝试了以下
a)定义一个参数Restart_indicator(它可以在Restart Situation中有2个值'Y',否则'N'。
Que:如何为参数赋予2个值(MAPPING工具栏中的参数和变量)
b)定义一个运行表,其中工作流程名称+会话名称将成为关键。 c)在工作流程开始时,当Restart_indicator ='N'时,初始化与该工作流程相关的所有条目 d)每次会话成功执行时,更新该工作流会话组合的Run表条目。 e)对于每个会话都有一个条件执行条件 i)Restart_indicator ='N' 要么 Restart_indicator ='Y'和工作流会话的Run_table条目表示会话未成功完成。
QUE:如何定义条件执行以开始失败的会话重新启动?请详细说明一下。
谢谢
答案 0 :(得分:1)
这个post on YouTube很好地解释了如何有条件地开始会话。
在您的情况下,您需要
为10个会话中的每个会话创建一个工作流变量,使这些会话持久化并初始化为0
在每个会话之后创建一个任务,更新它的相应工作流变量并将其值设置为1,此任务应该仅在会话成功完成且没有错误的情况下运行。
在会话开始之前,您需要添加一个条件,检查它的工作流变量是否为0,然后才启动它。
此外,您需要在工作流的开头添加一个任务,检查所有10个工作流变量(每个会话1个),如果全部为1,则将all设置为0。确保下次运行工作流程时它将启动,即使所有会话在上一次成功完成。
希望这有帮助。