一个 Azure 逻辑应用程序可以有多个启动触发器吗?

Can an Azure Logic App have multiple start triggers?

一个 Azure 逻辑应用程序可以有多个启动触发器吗?

我已经阅读了 MSDN 上的触发器文档,但看不到任何有关具有多个触发器的信息

一般来说是的,您可以在一个逻辑应用程序工作流中有多个触发器。其实,according to the official documentation,你最多可以有10个 在单个逻辑应用程序中触发。例如,在下面的逻辑应用程序中,我使用了两个触发器:第一个是 SFTP 连接器触发器,在一系列操作之后,我在服务总线队列上有第二个触发器(通过发送消息操作,我发送消息给一个执行长 运行 任务的 Web 作业,它会在另一个队列上用一条消息通知逻辑应用程序,让它继续执行)。

可能,你的意思是,如果可以有多个 "starting" 触发器来实现触发器之间的某种 "or logic" 。在这种情况下,我认为答案是否定的,为了实现这一点,我也将采用@Steven Van Eycken 的建议:将逻辑应用程序分成两个,由您需要的两个触发器触发,然后发送一个队列上的消息触发具有通用工作流的第三个逻辑应用。

我想我参加聚会有点晚了,但我已经能够为逻辑应用程序创建多个触发器。

在我的环境中,我使用 SFTP 连接器在创建或更改文件时触发。 SFTP 连接器只允许监视一个文件夹,但我不想为要监视的每个文件夹复制逻辑应用程序,因此我在我的应用程序中添加了三个 SFTP 触发器,每个触发器监视同一个 SFTP 上的不同文件夹网站。

据我所知,你只能在代码视图中执行此操作,一旦你有多个触发器,你将无法返回到设计器视图,但基本上我根据需要设置我的逻辑应用程序,然后进入代码视图,复制了触发器定义并更改了我需要更改的位(名称、文件夹名称和文件夹 ID)。

“概览”屏幕中的触发器历史记录随后允许您选择要查看的触发器,但无论触发了哪个触发器,逻辑应用程序的其余部分都会运行。您也无法查看历史运行的工作流视图,但通过几次额外的点击,您可以看到应用程序中每个阶段的情况。

这很痛苦,因为它只能在代码视图中完成,但它是可能的,当然是使用相同类型的触发器。我不确定混合触发器类型,但我想只要您不依赖其他触发器类型中不存在的输出,就应该没问题。我还使用多个电子邮件触发器对其进行了测试。请记住,如果连接器需要不同的连接,您需要在代码中包含每个连接。首先,可能值得在单独的应用程序中构建每个应用程序,然后将相关的代码位粘贴到其中。

这个回答是@Steve 回答的延续。史蒂夫已经解释了如何做到这一点,我只是为了更清楚地添加一些代码片段。

此外,当我测试此解决方案时,在代码视图中单击 "Run" 时,它对触发器列表中的第二个文件夹不起作用。因为我认为 "Run" 默认运行第一个触发器。因此出于测试目的,我将触发时间设置为 15 秒,以便将其保存在 code-view 中后更容易测试。

"triggers": 
{
"When_a_file_is_added_or_modified_folder1": {
  "inputs": {
    "host": {
      "connection": {
        "name": "@parameters('$connections')['sftp']['connectionId']"
      }
    },
    "method": "get",
      "path": "/datasets/default/triggers/onupdatedfile",
      "queries": {
        "folderId": "L2hvbWUvbmF3YQ==",
        "includeFileContent": true,
        "inferContentType": true,
        "queryParametersSingleEncoded": true
    }
 },
   "metadata": {
        "L2hvbWUvbmF3YQ==": "/home/folder1"
    },
    "recurrence": {
      "frequency": "Second",
      "interval": 15
    },
    "type": "ApiConnection"
  },
"When_a_file_is_added_or_modified_folder1_sub": {
    "inputs": {
      "host": {
        "connection": {
          "name": "@parameters('$connections')['sftp']['connectionId']"
        }
      },
      "method": "get",
        "path": "/datasets/default/triggers/onupdatedfile",
        "queries": {
        "folderId": "L2hvbWUvbmF3YS9zdWIx",
        "includeFileContent": true,
        "inferContentType": true,
        "queryParametersSingleEncoded": true
      }
  },
    "metadata": {
      "L2hvbWUvbmF3YS9zdWIx": "/home/folder1/sub"
    },
    "recurrence": {
      "frequency": "Second",
      "interval": 15
  },
    "type": "ApiConnection"
 }
}

感谢 Microsoft Azure 支持提供更多信息。

我们可以创建多个启动触发器。从重复操作开始,然后添加 1 个以上的触发器。见下图。