如何检查参数是否匹配流量条件中的2个以上的值

时间:2017-10-10 19:23:32

标签: microsoft-flow

我正在创建一个Flow,你可以添加一个条件来检查。默认情况下,条件有一个简单的“Value 1 equals / contains / ... Value2”表达式。 要执行更高级的条件,可以使用Azure逻辑应用程序的工作流定义语言。

我的问题是:如何检查参数是否匹配超过2个值。 例如,我想检查value1是否等于值2,value3,值4,value5。

我知道如何检查value1是否等于value2或值3.假设value2为2且value3为3:

@or(equals(body('action1')?['value1'], 2),equals(body('action1')?['value1'], 3))

但是,我不确定要检查更多值。 or()函数仅允许2个参数。这是专门针对Microsoft Flow

我尝试使用intersection()函数,并认为如果找到值,它将返回一个值,我可以使用empty()为流条件返回一个布尔值:

@not(empty(intersection([body('action1')['value1']], [39, 40,41, 42])))

当我尝试这个时,我得到一个错误的流程;

  

模板验证失败:'第1行和第'4124行'的模板操作'my_condition'无效:“无法解析模板语言表达式”(空(交集)([body('action1')) ['value1']],[39,40,41,42])))':期望令牌'标识符'和实际'LeftSquareBracket'。“。'。

有人有什么想法吗?

参考:https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-workflow-definition-language

1 个答案:

答案 0 :(得分:0)

我刚刚遇到了需要更新Microsoft Flow以执行3条件OR语句的相同问题。我发现你可以嵌套逻辑条件以达到预期的效果。请参阅下面对我有用的语法。

@or(equals(triggerBody()?['Editor']?['DisplayName'], 'User 1', or(equals(triggerBody()?['Editor']?['DisplayName'], 'User 2'), equals(triggerBody()?['Editor']?['DisplayName'], 'User 3')))