长期运行的业务流程

介绍

以下描述的使用案例并非当前 Mistral 开发过程中的最重要驱动因素。然而,在后期,当 OpenStack 本身变得更加成熟时,将会有许多云用户希望构建企业系统,遵循此使用案例的想法。

问题陈述

回顾行业发展,例如 20 年前,显而易见的是事物已经发生了巨大的变化。例如,不再像过去那样拥有一个处理所有事务的信息系统,如会计、财务规划、报告,企业倾向于拥有多个专业系统,以解决因企业数据不断增长而导致性能问题。然而,我们可能需要定义一个业务流程或工作流,它跨越多个系统,并且对于某些计算步骤,甚至可能需要人们通过手动输入数据与流程进行交互。这些人可能是输入原始信息的会计师、办公室经理、财务主管等。这里的正式挑战是定义和维护需要一个接一个执行的一系列操作,并能够拥有一些逻辑(条件)来驱动该序列的执行方向。

为了使此工作流可扩展(能够并行运行某些步骤)、容错和可供外部系统观察,必须存在一个组件来充当协调器。这里“可供外部系统观察”是指我们应该能够查看流程进行的所有相关信息,哪些步骤已经处理,哪些步骤还剩下,以及它是否因故障而停止或成功完成。维护已完成流程的历史记录也将带来显著价值。

解决方案

Mistral 非常适合充当这种协调器。为了说明到目前为止所描述的一切,让我们考虑一个计算企业员工工资的虚拟工作流。

../../_images/long_running_business_process.png

图 1. Mistral 维护跨越多个系统的业务工作流。

给定员工的全名(或 ID),此工作流可能包括以下计算步骤

  • 使用会计信息系统计算工资基数。

  • 使用不同的奖金系统计算员工的奖金。

  • 请求经理批准计算出的奖金。

  • 如果任何阶段发生任何错误,则向系统管理员发送短信

在这种情况下,Mistral 始终知道整个工作流的执行状态,并且在发生故障(网络丢失等)时,它可以透明地从停止的点继续工作流,而不会影响用户。此外,Mistral 可以并行运行工资基数和奖金的计算,因为这两个任务是独立的。所有这些事情都可以由用户灵活配置。

说明

上面的例子只是 Mistral 在处理长期运行的业务流程方面可以提供的简单说明。在现实生活中,Mistral 可以处理更复杂的过程,这些过程跨越多个信息系统,并且在某些点上涉及真实的人员。