介绍

image

本GitBook介绍了版本7中添加的新概念和组件。 本Git Book将介绍如何使用Activiti 7和Activiti Cloud的基础知识以及它如何与项目的以前版本进行比较。 访问该书:https://www.gitbook.com/book/activiti/activiti-7-developers-guide/ 如果您发现拼写错误或想要提交改进,请随时向此GitHub存储库发送Pull Request。

什么是ActivitiCloud

Activiti Cloud是第一个云本地BPM框架,旨在为云环境中的BPM实施提供可扩展且透明的解决方案。

创建BPM规则是为了更好地理解组织如何开展工作以及如何以迭代的方式改进这项工作。 BPM套件的创建基础是一家公司将主持一个中央BPM服务器,该服务器负责自动化并监控其业务流程。 这种方法在现代组织中引起了一些挫折,以下列表强调了采用BPM套件代表中等规模组织的一些痛点:

  • BPM套件建立在组织内IT部门(软件)不需要知道的技术堆栈之上
  • BPM套件通常不能很好地与其他生态系统集成
  • 用户需要学习一个全新的工具集来完成这项工作
  • 负责BPM套件运行的基础架构的部门不了解其要求。 这同样适用于需要了解BPM套件如何工作以调整其数据库的DBA。
  • BPM套件提供的用户界面通常不够灵活。 许多BPM实现最终需要多次重新实现其UI
  • BPM套件采用通常是由业务推动的,而不是由组织内部的软件开发团队进行备份

由于BPM套件强加了一整套技术,推动组织适应这些技术,因此大多数这些难题都出现了。 这当然会导致拒绝,痛苦和挫折。

随着促进此类环境(如微服务,容器和服务协调器)采用的云环境和工具的兴起,BPM套件现在不得不重新设计自己以适应这些环境。

容器有助于缓解技术方面的痛苦。 我们现在负责容器,隐藏任何软件运行在里面。 但容器是不够的。 BPM套件的主要问题是,它们中的大多数都被设计为庞然大物,推动采用者全力或全无。 另一方面,您会发现开源BPM框架,旨在尽可能通用,以支持广泛的开发和部署方案。 通过这样做,这些项目使用起来很麻烦,以适应不同的体系结构。 由于采用这种通用方法,开源BPM框架将太多的决策委托给实施解决方案的决策者,这不仅让他们了解框架的内部结构,而且还可以做出只有专家才能做出的复杂决策。

Activiti Cloud试图将Activiti 工作流引擎剥离到最低限度,并尽可能保持单一重点。 与此同时,Activiti Cloud提供了大多数BPM实施所需的一套定义明确,重点突出的服务。 这些服务中的每一个都可以使用,但它们都是相互独立的。 你可以选择你需要什么和不需要什么,或者如果提供的不符合你的需求,甚至可以替换实现。

从Activiti Cloud角度来看工作流引擎的主要目标是理解(解析)BPMN 2.x业务流程定义并自动执行(运行时/流程执行)。 工作流引擎不应该担心:

  • 流程定义存储在何处
    • 处理流程版本和更改
  • 身份管理
  • 单一登录
  • 工作执行
  • 定时器机制
  • 为系统集成机制提供系统
  • 发送电子邮件
  • 存储历史记录/审计信息并提供查询此信息的方法
  • 客户端使用引擎生成的数据的性能

基于工作流引擎不应该做的事情列表,我们创建了不同的Activiti Cloud组件,并采用了第三方组件,它们将与流程引擎进行交互,以提供所需的90%时间需要的所有功能 实施BPM项目。 Activiti Cloud旨在支持零宕机时间部署(例如滚动更新)以及从开始实施的那一刻起使用生产准备就绪组件进行扩展。 Activiti Cloud在现代云平台中使用Activiti使它变得自然。 我们还确保使用我们的工具对于不同的角色(开发人员/开发人员/最终用户)来说很自然:

  • Spring Boot / Spring Cloud:如果您已经在使用这些技术,那么添加Activiti Cloud应该是非常简单的
  • 如果您正在研究诸如Kubernetes和Docker等技术,我们所有的组件都可以随时使用并与这些环境的要求保持一致。
  • 如果您想要通过使用我们的* -cloud-starters来更改/自定义部分开箱即用的组件。
  • 如果您想更改底层技术堆栈,例如将RabbitMQ切换到ActiveMQ或Kafka,这些都是可以的,因为我们依靠Spring Cloud抽象层。
  • 如果您担心流程/应用程序迁移和更新,您可以依靠业界标准的方式来处理容器版本和数据迁移,而不是处理专门为工作流引擎编写的复杂迁移工具。
  • 如果您已经拥有持续集成/部署管道,则可以将BPM特定版本与这些工具集成。

路线图

您可以在此处查看项目路线图:https://github.com/Activiti/Activiti/wiki/Activiti-7-Roadmap

我们根据我们所取得的进展(包括社区贡献),新的估计和社区反馈,每月更新路线图。 如果您想查看路线图中尚未包含的内容,请通过Gitter与我们联系,以便我们可以讨论如何将项目路线图与您的要求相匹配。

超越了12个因子应用

为了构建云本地应用程序和服务,仅将旧的整体包装在Docker Image中并在Kubernetes内部运行它是不够的。 我们重视Heroku将其定义为12个因子应用程序的原则:https://12factor.net(从Pivotal角度来看,请参阅)。 没有这些指导原则,就很难在分布式环境中进行扩展。 Activiti Cloud重新定位流程引擎,以便与分布式环境中的其他组件进行更好的交互。 Activiti Cloud成功的标准是与其他微服务及其设计,构建和部署的方式具有较低的阻抗不匹配。

  • 一个代码库,一个应用程序

我们的服务全部位于不同的存储库,每个代表一个单一的spring boot应用程序。

  • api优先

Restful和消息驱动APIs是为每个服务定义的,并且每个服务的规范都可以在组件文档中找到。

  • 依赖管理

Activiti和Activiti Cloud依赖项在中央存储库中进行管理,以便清楚地了解使用哪种版本的基础框架。

  • 设计,构建,发布,运行

    • 设计:我们在设计,RFC和编码之间保持一个闭环,以确保我们快速构建能够改进我们服务的小功能,并且可以经常发布(至少每月一次)。
    • 构建:我们的每项服务都是由我们的CI服务器构建的,并发布到Alfresco Nexus和Maven中心,因此您可以依赖经常发布的工件和夜间构建。 如果您在开发应用程序时针对每晚构建的服务和项目进行工作,那么您可以帮助我们确保在您发布应用程序/服务时一切都可以为您工作。不要担心SNAPSHOTS。 我们所有的服务都可以使用环境变量进行配置,因此我们保持它们不变,并且可以使用标准容器实践更改其配置
    • 发布:对于特定领域的模块/服务,我们将提供机制来确保您可以复制您的版本,以便在出现问题时进行审核和排除故障
    • 运行:我们提供docker-compose和Minikube设置,以便您可以在本地运行所有基础架构和服务以实现开发目的
  • 配置,凭证和代码

对于Activiti云服务,所有配置都由env变量提供,并且使用Spring云配置服务可用于系统/平台范围的配置。

  • 日志

Activiti云服务的日志被委托给基础设施,您可以连接您的ELK堆栈来分析和监控您的日志。 关于日志的去向的配置是通过env变量完成的。

  • 可处理

Activiti Cloud服务可在30秒内快速启动,因此可以在需要时快速扩展。 这些服务不存储状态,因此它们可以随时由基础设施进行处理和重新创建。 Activiti Cloud团队致力于改善启动时间并确保将前期操作降至最低。

  • 服务

Activiti Cloud服务使用有限资源的概念来保护安全,电子邮件,数据源,存储和其他资源。 它还使用服务注册表来抽象其他服务在哪里以及它们如何相互通信。

  • 环境

Activiti Cloud为我们的用户和实施者提供了一种类似产品的环境,以生成其后可以发布到生产环境的特定于域的工件。 Activiti云依靠行业标准确保处理多个开发环境,测试/质量保证和生产环境,并且尽可能真实。

  • 行政程序

在最初与流程引擎捆绑在一起的Activiti Cloud管理流程正在外部进行重构,以重新使用基础架构提供的服务。 管理流程是大多数开源BPM项目中的主要问题之一。 出于这个原因,我们正在努力使每个这些流程都脱离工作流引擎范围。

  • 端口绑定

所有Activiti Cloud服务都是Spring启动应用程序,允许环境变量配置其名称(用于自动发现)及其运行端口,以作为其他应用程序和服务的后备服务。

  • 无状态过程

Activiti Cloud服务在设计上是无状态的,如果他们需要存储状态,他们将绑定到数据源来存储它。 缓存机制(如Redis)将用于在需要时共享状态。

  • 并发

运行时软件包的设计思路是扩展流程执行 - 如果有太多的请求来创建某个类型的流程实例,或者针对某一组流程实例进行太多交互,则可以根据需要创建新的运行时软件包实例,以处理负载。 在Activiti Cloud中实现这种可扩展性不需要额外的配置 - 这是该平台的一项先天功能。

  • 遥测

Activiti云服务通过标准的SpringBoot执行器和健康指示器提供遥测功能,但它还提供了业务级别的遥测功能,可以发布一系列标准化的事件来揭示发动机的运行情况。 所有这些信息都可以用于数据仓库和预测目的。

  • 认证和授权

Activiti云所有服务都依赖于SSO和IDM。 RBAC(基于角色的访问控制)是我们所有服务的本地部分。