AI开发平台MODELARTS-构建条件节点控制分支执行:进阶示例

时间:2024-11-21 19:46:06

进阶示例

import modelarts.workflow as wf

left_value = wf.Placeholder(name="left_value", placeholder_type=wf.PlaceholderType.BOOL, default=True)
condition1 = wf.steps.Condition(condition_type=wf.steps.ConditionTypeEnum.EQ, left=left_value, right=True)

internal_condition_1 = wf.steps.Condition(condition_type=wf.steps.ConditionTypeEnum.GT, left=10, right=9)
internal_condition_2 = wf.steps.Condition(condition_type=wf.steps.ConditionTypeEnum.LT, left=10, right=9)

# condition2的结果为internal_condition_1 || internal_condition_2
condition2 = wf.steps.Condition(condition_type=wf.steps.ConditionTypeEnum.OR, left=internal_condition_1, right=internal_condition_2)

condition_step = wf.steps.ConditionStep(
    name="condition_step_test", # 条件节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复
    conditions=[condition1, condition2], # 条件对象,允许多个条件,条件之间的关系为&&
    if_then_steps=["job_step_1"], # 当condition结果为true时,名称为job_step_1的节点允许执行,名称为job_step_2的节点跳过不执行
    else_then_steps=["job_step_2"] # 当condition结果为false时,名称为job_step_2的节点允许执行,名称为job_step_1的节点跳过不执行
)

# 该节点仅作为示例使用,其他字段需自行补充
job_step_1 = wf.steps.JobStep(
    name="job_step_1",
    depend_steps=condition_step
)

# 该节点仅作为示例使用,其他字段需自行补充
job_step_2 = wf.steps.JobStep(
    name="job_step_2",
    depend_steps=condition_step
)

workflow = wf.Workflow(
    name="condition-demo",
    desc="this is a demo workflow",
    steps=[condition_step, job_step_1, job_step_2],
)

ConditionStep支持多条件节点的嵌套使用,用户可以基于不同的场景灵活设计。

条件节点只支持双分支的选择执行,局限性较大,推荐您使用新的分支功能,可以在不添加新节点的情况下完全覆盖ConditionStep的能力,详情请参见配置节点参数控制分支执行章节。

support.huaweicloud.com/usermanual-standard-modelarts/modelarts_workflow_0394.html