我正在创建一个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
答案 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')))