何时选择 Azure Functions 运行业务逻辑

已完成

现在我们将着重于自行车租赁业务的其他流程,并确定最适合我们需求的技术。 我们将考虑流程的技术方面、受众和流程的演变情况。

场景

自行车技术人员目前使用电子表格来记录他们修理和维护每辆自行车所采取的措施。 需要备件时,会出现困难,因为租用人员无法知道自行车是在等待修理还是需要零件。 此问题导致将带有失灵的刹车片、漏气轮胎和其他故障的自行车租给客户,并且这些故障会损害作为高品质自行车租赁公司的公司品牌形象。

建议构建一种系统,用于管理维护和修复流程,并且允许每个人找到以下问题的答案。

  • 在一辆自行车上完成了哪些作业?
  • 在将自行车再次出租之前还有哪些作业要完成?
  • 目前可以租用哪些自行车?
  • 目前无法租用哪些自行车?
  • 对于每辆不可用的自行车:
    • 为什么我们不能将其出租?
    • 是否需要任何零件,这些零件是什么?
    • 何时可以再次租用自行车?

你想将此系统与上一个单元的自行车预订和租用过程集成。 这样,当店员搜索可用的自行车时,他们只会找到当前可租用的那些自行车。 你的经理已要求你成为此项目的开发者。

业务流程

希望确保两个校区的自行车技术人员在租用后维护自行车时坚持以下工作流:

Decision flow diagram detailing the logic for the Bike maintenance workflow.

详细信息如下所示:

  1. 客户将自行车归还到任何位置。 自行车维护流程开始。
  2. 技术人员将自行车标记为不可用。
  3. 技术人员完成一整套检查,包括轮胎、刹车、传动链和灯。
  4. 是否需要新零件?
    1. 需要新零件,但我们没有库存零件。
      1. 技术人员订购新零件
      2. 零件到货
    2. 安装新零件
  5. 技术人员完成最终更换。
  6. 技术人员将自行车标记为可供租用。

选择技术

要实现业务流程并与自行车定位数据库集成,请考虑以下这组技术。

  • Microsoft Power Automate
  • Azure 逻辑应用
  • Azure Functions
  • Azure 服务应用 WebJobs

与上述方案一样,任何这些技术都可用于构建工作流。 但是,有两个问题决定了最佳选择。

设计优先还是代码优先?

仅使用逻辑应用或 Power Automate 实现此工作流很难。 虽然不了解过多的低级别细节,但很明显,此流程需要访问库存系统以及向第三方零件公司下订单。 这是新的业务逻辑,并不要求我们考虑采用设计优先的方法。 我们可以将我们的解决方案包装在自定义连接器中,以与使用逻辑应用或 Power Automate 创建的其他工作流集成。 作为开发者,通过代码优先方法处理此场景,可以获得最大的灵活性,所以让我们执行该操作!

Azure Functions 还是 Azure 应用服务 WebJobs?

我们需要在以下两种技术之间做出决定。

  • Azure Functions
  • Azure 应用服务 WebJobs

以下因素将影响你的选择:

  • 成本:使用 WebJobs,需要为托管作业的整个 VM 或应用服务计划付费。 Azure Functions 可根据使用计划运行,因此只需在函数运行时付费。 由于此流程仅在归还自行车时启动,因此我们通过选择 Azure Functions 来节省资金。
  • 集成:建议将维护工作流与为上述单元中的自行车预订和租用流程构建的逻辑应用集成。 尽管可以从逻辑应用调用 WebJob,但逻辑应用和 Functions 之间的集成更加密切。 例如,可以更轻松地从逻辑应用视觉对象设计器控制对 Function 的调用。

出于这些原因,我们将选择 Azure Functions 来管理自行车维护业务流程。