跳转到主要内容

热门内容

今日:


总体:


最近浏览:


Chinese, Simplified

category

我不知道你的情况,但我的生活由混乱的“工作流程”和“过程”组成,充满了惊喜和不可预测的错误,只是没有按预期工作,因为我自己有点疯狂,健忘,不可预测。然而,在商业世界中,这种混乱是不可接受的,因此这就是为什么企业寻求自动化他们的流程,并要求像我们这样的软件开发人员提供解决方案。幸运的是,有很多平台可以让我们创建健壮、可扩展和可管理的工作流,这些工作流也可以直观地表示出来,这样任何利益相关者(无论是否有技术知识)都可以清楚地表示给定工作流中发生的事情。本博客简要介绍了自动化工作流平台:Camunda和Flowable,演示了如何应用自动化工作流,确定了一些最佳实践,并概述了使用这些平台的挑战。

Camunda vs Flowable

照片由Mateusz Wacławek在Unsplash上拍摄
从本博客的介绍中可以看出,Camunda和Flowable是两个用于工作流和业务流程自动化的开源平台,为工作流、业务流程和规则的创建、管理和可视化提供了工具。要了解更多关于Camunda和Flowable的信息,您可以访问他们相应的网站:

Camunda和Flowable均基于BPMN 2.0标准构建(https://www.omg.org/spec/BPMN/2.0/PDF)它为工作流建模提供了一种图形表示法,包括业务流程和规则、用户界面、执行、监控和优化。Camunda和Flowable都是Activiti的分支,Activiti是一种业务流程自动化工具,据信其通用性和功能不如Camunda。然而,与Activiti相比,Flowable具有与Camunda非常相似的功能。Camunda于2013年从Activiti分拆出来,Flowable于2016年从Activati分叉出来,由与Activiti相同的工程师开发。

用户界面

Camunda提供免费的建模工具。它有网络和桌面版本。这两个版本都使您能够对BPMN图、DMN决策、表单和外部系统的连接器进行建模,而无需接触xml文件。如果您想查看或编辑原始xml文件,该工具也允许您这样做。

Camunda不再支持Eclipse或IntelliJ插件,并建议您改用Camunda modeller。Camunda modeller是一个独立的工具,不依赖于任何IDE。如果我们在操作系统中将BPMN文件设置为与Camunda modeller相关联,那么BPMN文件将从我们选择的IDE在Camunda modeller中打开。例如,如果我们首选的IDE是IntelliJ,我们可以右键单击BPMN文件并选择“打开方式”,选择Camunda Modeler作为打开该文件的默认程序。然后,每次我们在IntelliJ IDEA中双击BPMN文件时,它都会在Camunda Modeler中打开。对于IntelliJ,还有一个第三方插件,允许查看和编辑BPMN模型。但是,不可能在IDE中创建新的Camunda模型,我们必须使用Camunda建模工具。有时,在开发过程中从IDE跳转到Camunda建模器并返回可能会很不方便。

Flowable的用户界面与Camunda相似。Flowable附带了Eclipse插件——Flowable Eclipse Designer。因此,如果我们的项目在Eclipse中,它非常方便,我们不必从Eclipse跳到外部工具来创建新模型。该插件还有其他方便的功能,例如,它允许为Flowable图自动生成单元测试。然而,如果我们全心全意地憎恨日蚀,那么我们注定要失败!好吧,也许没有那么戏剧性地注定,但我们可能会很恼火。我们可以通过使用Flowable web应用程序——Flowable建模器来避免Eclipse。此外,Intellij IDEA有一个Flowable BPMN可视化插件,允许用户在Intellij中查看和编辑Flowable图表。但遗憾的是,我们仍然需要Eclipse或Flowable建模器来创建新的Flowable Diagram。

Camunda和Flowable用户界面都是高度可定制的。例如,我们可以创建自定义元素、连接器和形状,以表示特定于我们业务领域的事物。

对于Camunda modeller,可以通过更改安装文件夹中的css文件(app.css)来更改外观。此外,Camunda允许添加具有不同功能的插件,这些插件可以从GitHub开发或下载。自定义插件是用JavaScript和Camunda Modeller API开发的。要加载我们的自定义插件,您需要在config.app.js文件的插件部分指定插件的路径。我们还可以创建具有预定义值的自定义元素模板。要在Camunda中创建元素模板,我们需要创建一个实现Camunda元素模式的json。要了解有关如何创建元素模板的更多信息,请参阅Camunda关于模板的文档。

与Camunda类似,Flowable允许扩展Flowable Designer的功能。可以扩展托盘和输出格式。与应用js插件的Camunda不同,Flowable Designer扩展是JAR文件。要了解有关如何自定义Flowable Designer的更多信息,请参阅Flowable文档。

Flowable目前不支持像Camunda这样的元素模板。

除了建模功能外,这两个平台还提供了用于监控性能、任务分配和管理的UI。Camunda提供Camunda Cockpit,用于监控工作流和业务流程性能,识别和修复业务流程或决策表中的问题,暂停流程,编辑和删除任务,以及将流程实例迁移到新版本。

Flowable没有像Camunda那样的驾驶舱应用程序,但它有不同的应用程序用于单点登录、角色和访问管理(Flowable IDM)、任务管理,包括启动和停止流程实例(Flowable任务),以及包括基本监控和更改业务流程在内的管理工作(Flowable管理)。与Flowable相比,Camunda允许在单个应用程序中更好地控制和调查问题及其解决方案。

特征

这两个平台都支持建模业务流程(BPMN)和决策表(DMN)。最近,Camunda还包括Flowable提供的表单创建和任务分配。我们可以在建模器中创建一个表单,并将该表单分配给用户任务。

此外,Camunda和Flowable支持DRD——决策需求图。它允许使用单个DRD对多个决策表进行建模,而不是使用具有多个结果规则的流程来聚合决策表。

Flowable自豪地宣称,它支持并为不可预测的流程生成CMMN引擎的更多功能(案例管理模型和符号)。Flowable声称,将CMMN、BPMN和DMN组合在一个工具中,可以让开发人员创建非常人性化和事件驱动的问题模型。另一方面,Camunda停止了基于CMMN引擎的功能开发。在Camunda modeller中打开CMMN是可能的,但默认情况下,它是关闭的。其背后的原因是,根据Camunda团队的研究,只有少数开发人员使用CMMN。Camunda代表表示,大多数流程都是可预测的,与可预测背景的微小偏差可以由子流程建模。

Flowable还允许动态进程注入,这允许人工智能或人类根据需要将进程片段注入正在运行的实例中。当我们不想依赖特定条件来触发流程,而是决定运行一个流程来处理不同的情况时,这很有用。此外,它允许简化正在注入的流程模型,因为它不再依赖于要触发的条件。要了解更多关于Flowable中动态过程注射的信息,请阅读他们的文档。

在撰写本文时,Camunda还不支持这些功能。

与外部系统集成

Camunda允许开发人员在广泛的Camunda REST API和连接器的帮助下创建与其他系统的集成。

Camunda提供云连接器,其中包括Kafka流、AWS和Azure。例如,要将BPMN服务与AWS连接以调用AWS lambda Camunda,需要提供AWS lambda连接器。同样,Camunda为AWS Simple Queu消息服务和AWS Simple通知服务提供连接器。

其他连接器包括Business connectors,其中包括Salesforce和SWIFT;生产力应用连接器,其中包括Microsoft团队和slack;企业内容连接器,允许将内容推送到Box和Opentext等系统或从中提取内容;数据连接器,允许将数据推送到或从商业智能系统、数据湖和数据仓库等提供商中提取数据。

此外,Camunda允许使用Integration Framework创建自定义连接器以集成到外部服务中。有关Camunda连接器(包括自定义连接器)的更多信息,请参阅其文档。

与Camunda类似,Flowable提供了与外部系统的现成集成,例如与AWS SQS、Kafka、Rabbit MQ和Active MQ的事件流集成,用于事件驱动的业务流程。此外,Flowable还提供包括Whatsapp在内的第三方消息集成。它还具有抽象数据源集成,支持关系数据库和非关系数据库。然而,Flowable似乎与Camunda等外部系统的现成集成较少。

部署

Flowable在部署方面比Camunda更灵活。Camunda可以部署在云端和本地。而Flowable也可以部署为混合解决方案。

语言支持

这两个平台都支持不同的语言,例如

  • Java
  • Groovy
  • Kotlin
  • JavaScript
  • python
     

除此之外,Camunda还支持PHP和.NET

Camunda还是Flowable?

最终,两个平台之间的选择取决于项目和项目的需求。通常,Flowable适合需要更灵活部署的项目,或者/并且必须通过动态流程注入和CMMN来解决业务流程中不可预测的上下文。

而Camunda将适合具有复杂业务流程和规则以及与不同外部系统集成的更大项目。

用例:狗行为学家自动化工作流程


我有一只70公斤重的小狗,它最近开始害怕某些狗。为了帮助我的小狗应对恐惧,我联系了一位狗行为学家。狗行为学家很贵,很受欢迎,有很多新客户和现有客户就他们的狗与他联系。有时我想知道他是如何回复所有这些人并相应地向他们收费的。也许,只是也许,他有一个为他做事的自动化流程…

如图所示,客户询问有关其狗行为的建议。这将启动“建议生成流程”工作流。第一步是将客户的问题发送给人工智能。该服务会生成答案。然后相应地定制答案并通过电子邮件发送给客户。最后,创建服务发票。

我可能应该直接使用ChatGPT,而不是付钱给狗行为学家。

一些最佳实践


因此,我们决定有一个实现自动化业务流程平台的用例。假设我们选择了Camunda。我们可以使用Camunda modeller,然后开始创建我们的模型。然而,随着时间的推移,我们的模型可能会变得难以理解、更改或维护。这可能是因为我们没有遵循这些平台推荐的最佳实践。Camunda和Flowable都为自动化流程的建模和开发提供最佳实践建议。

可读性

模型应该保持简单。易于理解,标签清晰。活动应该以描述性的方式标记,以便清楚地了解它们的内容。同样,网关也应按照命名约定进行命名。例如,XOR网关应标记为具有互斥答案的问题。来自网关的输出序列流或路径应标有相应的答案。

所有生成的id和标签都应该替换为连贯的命名,其中包括模型所代表的业务流程的普遍语言,以便所有利益相关者(例如开发人员和业务分析师)都能理解。

模型应该从左到右进行系统建模。在难以遵循流方向的情况下,不建议使用重叠的序列流。然而,在读者清楚流向的情况下,使用流向一个目标的重叠序列流是可以的。

应尽可能避免隐式BPMN构造。

单一责任

我有没有提到我们的流程模型应该尽可能简单?啊,是的,我做了。好吧,我会重复一遍——它应该尽可能简单。过程模型应该只负责解决一个问题。该过程中的活动应该只负责一件事。在一个步骤中计算业务流程的所有数据是一种应该避免的反模式。

如果一个流程非常复杂,可以将其分解为子流程。这使我们能够将某些流程封装成有意义的块。子流程可以是嵌入式子流程(嵌入在父流程中且仅可由该流程访问的流程)、事件子流程(由事件触发)或全局子流程。在视觉上,子流程仍然可以从使用它们的父流程中看到/扩展。

可重复使用性

流程中的某些流程和步骤可能与其他流程相似或相同。正如您可能猜到的那样,对于这些情况,全局子流程可以被其他流程创建和重用。在我们的狗行为自动化流程系统中,发票客户端或错误处理可以是在不同流程中重用的子流程。

此外,元素模板是不同流程重用流程步骤的另一种方式。元素模板还确保了流程之间的一致性。

优雅的失败

在我们的过程中,总有可能会出现问题。例如,如果在我们的“建议生成过程”中,OpenAI集成系统中存在错误怎么办?我们必须预见到这些失败,并确保我们的流程以我们想要的方式结束。在“建议生成过程”中,我们可以通过向客户发送电子邮件来处理错误,并附上一些借口,比如“对不起,我现在正在度假”,然后中止该过程。

如果失败,我们还可以采取其他步骤:

  • 回滚到之前的交易点,
  • 重试/等待多次,
  • 为流程/子流程/活动设置全局或本地计时器,
  • 错误边界事件、错误事件子过程

高性能

Camunda和Flowable都具有内置的监控和报告功能。强烈建议定期使用这些工具来监控流程实例,并识别任何瓶颈和性能问题。

挑战


BPMN图形符号是xml文件。它们不仅包含有关工作流、活动和元素的信息,还包含图形表示,如这些元素的位置。因此,当开发人员进行更改时,很难进行代码审查。特别是如果开发人员没有遵守最佳实践,也没有为活动、规则和条件提供连贯的标签和id。

有时提供更改前后的图表图像会有所帮助。然而,如果提供的图像不代表所做的实际更改,也可能会产生误导。

同样,很难合并冲突,因为我们需要确定需要在一个非常复杂的xml文件中保留、组合或丢弃哪个版本的更改,该文件还包含有关不同元素位置的信息。

Camunda、Flowable和其他BPMN平台是面向状态的,当特定状态的流和数据发生变化时,很难维护。通常,建议使用历史数据分析新版本中流程的行为,以避免重大错误。

变化也会影响性能。因此,需要监控、调整配置和微调以确保最佳性能。

结论


本博客简要介绍了工作流自动化平台Camunda和Flowable,并试图演示我们为什么要使用它们。这些平台使我们能够自动化工作流和流程、任务分配、表单和决策表。Flowable是一个更轻量级的平台,可以非常有效地与Eclipse一起使用。Camunda提供了比Flowable更强大的监控、问题调查和解决能力。两个平台之间的选择取决于项目和要求。

这两个平台都使我们能够自动化、执行和监控业务流程。Camunda和Flowable还可以让所有利益相关者更好地直观地了解过程中发生的事情。

然而,在实践中,实现这些平台可能具有挑战性。尤其是当流程需要更改时。通过遵循两个平台提供的推荐最佳实践,可以减少或避免一些挑战。

本文地址
最后修改
星期三, 七月 24, 2024 - 15:41
Article