血腥的企业如何赢得开源:BPMS之战

现代银行的齿轮根据金融业务流程旋转。 它们比平常更为复杂-此规则适用于所有事物,您还可以在其中添加“金融”的定义。 一方面,监管机构,无数的批准和所涉及的各方使一切变得复杂。 另一方面-笨拙的整体式BPMS(业务流程管理系统)。 在这篇文章中,我们将告诉您如何成功放弃一个这样的系统,并成为一个灵活且功能强大的开源程序。



程序员使用不同的符号显示业务流程。 现在的标准是BPMN(业务流程模型和表示法)-这些是带有图像的XML文件。 为了使用这种表示法,将创建BPMS产品-单体专有系统,这些系统试图容纳用于开发BPM的最大工具:从用户界面编辑器到版本控制系统。

只有长期使用这些系统的开发人员才能扩展它们。 在企业BPMS中,提供了REST API,即可以作为响应访问和接收系统。 但是修改和深度调整BPMS本身几乎是不可能的。 只能通过制造商的有限工具集(专有版本控制系统,编译器,部署器)来使用此类BPMS,通常为每个大型BPMS开发一套完整的工具。 这些工具的开发速度很慢,相同的问题可能会在各个发行版本之间持续存在,因为与开放源代码一样,参与这项工作的人并不多。 通常,企业BMPS的功能与用户的需求很少重合。

在此类系统的广告中,他们谈论了端到端的工作流程,他们说业务本身可以即时更改BPM流程。 但实际上,即使是分析人员也无法做到这一点-只有发达的专家才能处理。


业务流程由用户和服务任务组成,其顺序导致最终停止。 在BPMS中,通过这样的方案,您可以跟踪业务流程的执行时间以及各种业务指标-例如KPI。

我们经常必须对业务流程进行各种规模的更改。 过去,我们为在其他办公室工作的客户经理制定了BPM流程。 2015年,我们关闭了一些办公室,并调动了经理到现场工作。 这需要对BPM流程进行重大更改,有必要引入其他角色,操作。 或者,例如,对经济安全服务的监管发生了变化,现在有三个协调员,而不是两个协调员。

首先,我们通过IBM Lombardi BPMS进行了更改。 收集了同类系统中的典型缺陷后,它的特点还在于缺乏有序的文档。 似乎,在购买Lombardi Software之后,这家软件巨头看着随附文章的不定云团,决定不动任何东西。 即使阅读了所有文档,也无法做很多事情。 例如,使用用户证书通过HTTPS身份验证调用REST请求。 幸运的是,寻找替代方案取得了成功。

Camunda解决了问题


与IBM BPM合作之后,我们得出的结论是,不同的用户组应该能够更改业务流程。 业务单位的普通员工可以贡献在线模式中无关紧要的东西。 系统分析师正在改变业务流程中任务的顺序。 新的集成,UI和程序代码中的更改仍由开发人员负责。 为了保持这种灵活性,所有BPMS必须部署在微服务上。

我们可以通过开源BPMS Camunda提供这种方法。 这是Activity项目的一个分支,开发团队决定进行更多销售。 他们整理了文件,开始分别开发Camunda,他们通过出售支持来赚钱。

BPMS Camunda允许您使用标准Java编辑业务流程,并支持微服务共享。 将BPMS切换到微服务可立即提供以下优势:

  • 摆脱巨石。 我们可以按段划分业务流程,使用Rabbit MQ或Kafka通过队列将它们链接在一起。 业务流程可以彼此隔离地进行更改,无需等待完整版本即可进行更改。
  • 摆脱业务流程服务器。
  • 缩放比例。 如果任何服务器开始负载不足,则可以对其进行克隆。 在高峰负载下,您可以通过在不同服务中运行多个业务流程实例来轻松提高生产力。
  • 版本控制 例如,如果需要更新Java版本,则可以选择具有不同Java版本的多个微服务,然后并行运行新版本。 每个微服务不仅可以具有不同的软件版本,而且可以具有不同的语言。

将来,我们计划将最大的业务流程之一转移到Camunda-企业贷款。 这里的一切都比个人甚至中小型企业要复杂得多。 它不是产品,而是适用的有限信贷方案,限制时间是有限的,借款人通常是控股等大型组织的一部分,而控股还有其他事情要做。 分别为这些结构中的每个确定极限,并且每个结构都有自己的匹配项,其组成不断变化。 我们从数百个阶段获得业务流程。 我们能够通过Camunda进行更改,并决定继续使用。 即使开发人员现在决定关闭该项目,该系统的当前功能也将持续三年。

我们的Camunda的第一个版本是基于Websphere的,实际上,它与IBM Lombardi并没有太大区别。 我们决定编写该服务在Spring Boot上访问的应用程序。 他们部署在Tomcat上,无法独立工作。 然后事实证明Camunda可以在Tomcat上运行,这是Spring Boot的一个版本。 完整的微服务架构已经在那里可用。 与业务流程配合使用的所有应用程序均在基于Spring Cloud的微服务架构上实现。

事实证明,您不仅可以在为业务流程提供服务的服务中快速更改功能。 BPM引擎本身可以作为库连接到任何springboot应用程序。

Camunda作为微服务

问题出现了:要提升多少个微服务? 可以为每个流程创建一个服务器,然后在其中放置所有微服务,或者为每个任务创建您自己的微服务,并在其中创建一个单独的业务流程。 第二个会更方便,但是有必要组织散布在各个微服务之间的流程的交互。 当几个微服务负责某个主题并且将多个流程归为一组时,我们尝试了几种选择并确定了解决方案。 通过REST或Rabbit MQ进行通信。 现在,他们已经在Kafka上启动了一个试点项目。

BPMS的前景


业务流程不仅显示业务工作流,而且还响应其他系统中发生的事件。 这些事件是由大数据的一个单独部门积累的。 根据对这些事件的分析,可以创建新的业务流程或更改现有的业务流程-事后发生,例如每天一次。

理想情况下,业务流程应转向在线更改-例如,当对某些服务的需求增加时,它们将自动确定其实现的优先级并重新分配资源。 这可以通过自动化,交互(例如,Kafka和Camunda)来实现,但这至少要花几年的时间。 也许现在朝着在线模式变化的方向,最全面的是完全在线的英国Monzo Bank。 我们也在努力。

Source: https://habr.com/ru/post/zh-CN415953/


All Articles