Webhooks&指挥 - 自动化的完美二人组
#java #springboot #webhook #orchestration

在现代数字时代,从订购食物到自动化订阅,应用是所有内容的主食。为了真正应对应用程序的功能,它们之间的无缝通信和实时数据更新至关重要。

分享应用程序之间的实时数据更新简化了业务流程,消除了手动干预并立即同步信息。它使您可以保持准确的库存水平,提供适当的客户支持并确保无缝的客户体验。

虽然传统的API方法可以在应用程序之间启用通信,但Webhooks在实时更新方面提供了完美的解决方案。 Webhooks功能作为事件驱动的触发器,在应用程序之间启动通信并共享信息。 Webhooks并没有不断进行更新,而是允许应用程序在事件触发时立即通知。

Orkes导体建于战斗测试的Netflix导体上,是一个快速构建分布式应用程序10倍的平台。通过导体 - 韦布克集成,您可以无缝连接导体与其他应用程序。

在这篇博客文章中,让我们更深入地了解Webhooks的力量,并发现它们如何彻底改变您的应用程序的通信和协作方式。

使用Webhooks编排工作流/应用程序

Webhook是一个基于HTTP的回调功能,可促进导体与其他第三方系统之间的通信。它可用于接收来自导体的其他应用程序的数据。

Webhook可以以2种不同的方式与导体一起使用。

  1. 您可以通过Webhook从其他应用程序接收事件开始工作流程。
  2. 您可以在工作流程内部从外部应用程序接收事件的工作流程中。

示例工作流程

让我们看到一个示例工作流,该工作流从邮递员那里接收事件。

步骤1-使用Webhook任务创建工作流程

最初,您需要使用 wait_for_webhook 任务创建一个导体中的工作流程。为此,从导体UI导航到 WorkFlow>定义,然后单击定义工作流

Creating a workflow with webhook task

在您想从Webhook接收事件的点上添加WAIT_FOR_WEBHOOK任务。当工作流达到这一点时,它会等待Webhook事件。确保根据您的要求提供input matches。匹配是传入的Webhook事件与运行工作流程之间的相关性,以查找应根据事件的有效载荷更新的实例。

在此示例中,我将输入匹配定义为:

"inputParameters": {
       "matches": {
         "$['data']['recipientId']": "${workflow.input.recipientId}"
       }
    },

让我们说有1000个具有不同收件人ID的工作流程的运行实例;当传入的Webhook请求到来时,它将找到并匹配 // data/coctientID 从传入的消息带有运行工作流程,找到匹配的实例并标记该特定工作流程实例。完成完成的任务。

步骤2-在导体中创建一个网络钩

接下来,让我们在导体中创建一个webhook。

您可以通过从左菜单中导航到 webhooks 选项来创建一个Webhook。

Creating new webhook for integration

提供一个Webhook名称。在接收Webhook事件的字段工作流程下,您必须提供工作流名称,其中包括Webhook任务。因此,这种情况工作流程中的任务始于从Webhook收到的事件

您可以从指导者支持的列表中选择一个源平台。在此示例中,我们正在发送Postman的请求,因此让我们将平台选择为 custom 。提供标题键和价值。

创建Webhook时,可以选择在接收Webhook事件时运行其他工作流程。在接收Webhook事件时触发工作流程的情况

Webhook with URL unverified

保存Webhook会生成URL,这将是未验证的。

Webhook URL的验证过程取决于导体的支持验证方法。 custom 类型是基于标题的验证符,当第一个Webhook事件带有所有标头键和值时,该url被验证。

步骤3-运行工作流程

现在运行工作流程!

从导体UI左菜单中,单击运行工作流

Running Webhook workflow from UI

您可以单击生成的工作流ID以查看执行。

Workflow execution in running state

从工作流程图可以清楚地看出,工作流正在等待Webhook事件。

步骤4-发送邮递员的请求

接下来,从Postman发送请求。创建一个新的请求,提供您的Webhook URL,然后更改发布的方法。

提供标题键和值,以及以JSON格式的输入匹配。单击发送,它应该返回200个OK,这意味着它已成功发送。

Sending post request from Postman

现在,如果我们返回Webhook,您可以验证已收到该事件。这触发了添加Webhook任务的工作流程。

Webhook with verified URL

您可以看到现在已经验证了URL。如果您检查了以前的工作流执行,则可以验证它已成功完成。

Completed workflow execution

我们还配置为在接收此Webhook事件时开始工作流程 sample_triggered_workflow 。您可以从 workflow> executions page

中验证相同

Triggered workflow execution from Webhook event

ta-dað!您现在已经成功执行了工作流程!

Webhook安全机制

导体允许使用不同的机制保护Webhook端点。我们使用以下验证方法支持通过HTTPS的传入Webhooks:

  • 标题验证 - 根据预定义的标头和值验证。
  • 签名验证 - 根据有效载荷签名验证,这需要在导体端配置秘密和标头键。当请求到达时,导体将计算请求有效载荷哈希并与预定义的标头值匹配。
  • 挑战验证 - 验证第三方系统发送挑战请求时,导体服务器响应以建立信任。

查看我们的Webhook documentation,以了解有关如何验证URL的更多详细信息。

导体的离式网络旋号集成

到目前为止,您已经了解了导体提供的配置步骤和安全机制。现在,让我们快速查看导体的现成配置。导体通过以下第三方应用程序支持Webhook集成:

Supported integration platforms for Webhooks in Conductor

用例:Webhook作为服务

导体提供Webhook作为服务,您可以在其中精心策划不同的业务用例。这有助于简化不同系统之间的集成和通信,从而在您的组织内实现自动化。

让我们快速查看各种用例:

github

  • 启用对您的存储库中新创建的问题的自动警报,并为自动答复建立系统。
  • 每当将新提交推到存储库时,触发自动部署。
  • 每当将更改推到存储库时,触发CI构建。

Slack

  • 创建聊天机器人。
  • 员工入职。
  • 自动化Scrum更新。
  • 自动化问题在支持渠道上创建消息。

twilio

  • 通过短信通知客户有关订单更新,付款确认或约会提醒。

条纹

  • 自动向客户发送付款失败的电子邮件。
  • 有人通过您的申请付款时得到通知。

pagerduty

  • 当事件触发您的Pagerduty帐户中时。
  • 当事件在您的Pagerduty帐户中升级时。

Zendesk

  • 每当创建新票时,请设置自动放松警报,以保持团队的通知和敏捷。
  • 解决机票后,将票务详细信息自动将票务详细信息转移到Asana的文档团队。

Twitter

  • 当有人在Twitter上提到您的公司时,将消息发送到您的Slack频道。

facebook

  • 每当有人在您的Facebook页面上发表评论时发送通知。

sendgrid

  • 发送有关发送电子邮件的事件的信息。您可以使用此数据来删除未订阅的人,对垃圾邮件报告做出反应,确定未参与的收件人,确定弹跳的电子邮件地址或创建电子邮件程序的高级分析。

我们使用此集成为工程团队建立了日常站立机器人。员工将其更新与Slack App集成的应用程序发布,该应用程序发布在站立频道上。

Standup bot created for Orkes engineering team

不再使用错误的频道混乱,也不担心丢失更新。这就是我们的经理如何了解工程团队的进度和活动。ð

为什么您不尝试使用指挥 - webhook集成来自动化这样的日常活动?

包起来

总而言之,Webhooks是一个非常强大的工具,可以有效地利用以满足您的业务需求。将Webhooks与诸如Orkes指挥(Or​​kes指挥家)这样的强大平台集成在一起可以解锁更大的潜力,以提高您的业务效率和生产力。

等待什么?现在就尝试Orkes Conductor!如果您期待免费尝试指挥,请利用Playground-来自Orkes的免费工具。

确实与我们的社区Slack频道联系了任何查询。我们充满活力的团队总是在这里为您提供帮助!