0

我正在创建一个流程,您可以添加一个条件来检查。默认情况下,条件有一个简单的“值 1 等于/包含/...值 2”表达式。若要执行更高级的条件,可以使用 Azure 逻辑应用的工作流定义语言。

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

我知道如何检查 value1 是否等于 value2 或 value 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' 无效:“无法解析模板语言表达式 'not(empty(intersection([body('action1')['value1) ']], [39, 40,41, 42])))':预期的令牌'标识符'和实际的'LeftSquareBracket'。".'。

有人有什么想法吗?

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

4

1 回答 1

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')))
于 2018-05-10T18:53:03.653 回答