一个 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 个以上的触发器。见下图。
一个 Azure 逻辑应用程序可以有多个启动触发器吗?
我已经阅读了 MSDN 上的触发器文档,但看不到任何有关具有多个触发器的信息
一般来说是的,您可以在一个逻辑应用程序工作流中有多个触发器。其实,according to the official documentation,你最多可以有10个 在单个逻辑应用程序中触发。例如,在下面的逻辑应用程序中,我使用了两个触发器:第一个是 SFTP 连接器触发器,在一系列操作之后,我在服务总线队列上有第二个触发器(通过发送消息操作,我发送消息给一个执行长 运行 任务的 Web 作业,它会在另一个队列上用一条消息通知逻辑应用程序,让它继续执行)。
我想我参加聚会有点晚了,但我已经能够为逻辑应用程序创建多个触发器。
在我的环境中,我使用 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 个以上的触发器。见下图。