有没有办法检查Groovy DSL中是否(do.condion ==' 11')

时间:2015-10-28 09:42:13

标签: groovy dsl

有没有办法在Groovy DSL中检查if(do.condion=='11')

if(object.member == '2') //then do my logic

我无法使用==。它不会抛出任何错误它只是下一个声明

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的DSL,为了清晰起见,请将其格式化为:

AcceptILPN { 
    input scanCase        

    if(workflowParameters.reserveVerificationModeParm.equals("1")) next AcceptSKUQuantity 
    if(workflowParameters.validateCarton.equals("1")) next AcceptOLPNOrTote 
    if(workflowDO.nextDtlPresent) next AcceptILPN else next AcceptPickCart 
}

要了解发生了什么,请使用更正式的语法来使用相同的代码:

AcceptILPN { 
    input(scanCase)     

    if(workflowParameters.reserveVerificationModeParm.equals("1")) {
        next(AcceptSKUQuantity)
    }

    if(workflowParameters.validateCarton.equals("1")) {
        next(AcceptOLPNOrTote)
    )

    if(workflowDO.nextDtlPresent) {
        next(AcceptILPN)
    } else {
        next(AcceptPickCart)
    }
}

正如您所看到的,即使第一个if表达式的计算结果为true,也会执行以下if块,因为没有任何内容(至少在DSL中可见)退出{ {1}}过早地。你似乎正在寻找这样的东西:

Closure