如何将大型流程从IBM BPM迁移到Camunda而不停止功能开发

图片

嗨,我叫Denis,我在Tinkoff工作,负责BPM系统。在本文中,我将以大型流程为例,向您介绍如何从IBM BPM遗留系统迁移到开源Camunda流程引擎。最后,我将邀请您参加将于2月27日在莫斯科廷科夫(Vodny Stadion地铁)举行的关于Camunda 的第四次会议


BPMS系统和BPMN作为对其进行编程的一种方式


通过编程可以进行编程的想法广受欢迎,市场每年都在增长。一些企业获得了非常出色的结果。
为了做出好的项目并成功销售,BPMS系统除了“吃” BPMN文件外,还必须能够:
  • 确定流程中的特定执行者
  • 为用户,实施者和管理员提供界面
  • 致电外部服务,发送和收听事件等。通常,能够“陷入”代码
  • 提供数据建模和存储
  • 遵守业务规则
  • 测试创建的所有内容

我们在Tinkoff中使用了IBM BPM BPMS,由于它的复杂性和这些功能的可接受范围,它帮助我们进行了开发。但是我们决定拒绝它。

放弃IBM BPM的原因


我们意识到,由于BPMS系统的强大功能,我们仅使用:
  • bpmn文件的解释
  • 陷入代码

其他事物已转移到其他系统,例如:
  • , — , , . , BPMS. , — CRM Siebel.
  • Siebel CRM-. Siebel , — - UI.
  • 在许多消费者需要对数据进行CRUD操作的情况下,数据存储已转移到Siebel,而在单独的应用程序中。IBM BPM允许您以关系样式模拟数据,他为模型创建板。但是它将所有内容都存储在一个数据库中以供所有进程使用,从而创建了额外的连接性并增加了数据库的负载。
  • 对于业务规则,我们传统上使用IBM ODM,现在我们开始使用我们的Kotlin框架。
  • 通常,在开发风格中,我们没有学习如何在IBM BPM上测试应用程序。

有一些我们不喜欢的一般性问题:
  • 我们切换到Kotlin和Spring,这在IBM BPM中很困难。
  • 很少有专家或希望使用此产品的专家。
  • 方案\代码联合开发的困难,本质上是一种垄断的开发模式。
  • 4 3 ( ~40 ), .

另外,值得一提的是邻居吵闹的问题-许可限制迫使我们将许多产品推到一个集群中。我们试图在不同的业务流程中重用通用代码,这给修改代码带来了困难。

例如,有一个SMS发送代码被2种产品使用-现金结算服务和外包会计。以前,文本是在组件级别进行硬编码的,但是现在“外包记帐”过程希望从该过程中转移SMS的文本。但是CSC流程不希望这样做,但必须在任何地方进行更改。

或平庸的bug可能会占据整个基础,因此许多产品虽然不应该受到指责,但却无法正常工作。

我的同事Nikolai在上一篇文章中写道,他们为什么选择Camunda


什么是大过程


我们决定从IBM转移大型流程(但是,起初,我们只培训了一个小型流程):
  • 每月超过10万个实例。
  • 超过70平方
  • 与其他系统的30多个集成
  • 快速增长的积压

这是在Tinkoff Business中开设活期帐户的过程。不可能以一种方法来转移这样的过程,这将需要暂停3-4个月的开发,这对于业务发展的步伐不是很合适。
我们决定逐步解决并重构即将出现的一切。为了解决嘈杂的邻居的问题,我们提出了一个单独的应用程序,该应用程序仅负责现金结算服务的应用程序。

在顶层,该过程如下所示:
图片

过渡规则


1号:停止挖掘


我们决定停止在旧应用程序中添加新功能。当任务出现在待办事项列表中时,我们尝试确定与之相关的box \ component \ service,并在Camunda中从头开始重写了此内容。有时成本是1.2倍(如果是在IBM,则为x),有时是3倍或5倍。

#2:Camunda对IBM一无所知


重构后,我们只想关闭旧应用程序,因此我们决定在Camunda中添加新功能,以使它对IBM一无所知。两件事帮助了我们:
  • 存储在Siebel中的业务数据
  • 来自Camuda的现成的API,可帮助您完全了解流程的完成方式。

结果,我们在IBM进行了启动并从Camunda接收结果的流程:
图片

第三:漫长的“手动任务”和粘合过程


首先,我们将简单的单步同步调用移至Camunda,一切正常。之后,我们开始将这些东西粘贴到正常的“业务流程”中,并开始出现用户的期望。
用户可以执行多年的任务,因此我们开始有大量任务来手动修复垃圾桶中的流程。我们以这种方式赢得了胜利-我们只是开始考虑Camunda中特定任务的类型,而没有考虑可能长时间等待的任务的垃圾桶。

第4个:功能切换到前叉


有些代码太混乱了,以至于从头开始编写并查看它是否工作正常更容易。为此,将IBM功能引入网关。我们向Camuda发送了一些申请,然后看了一下笔,一切正常。
图片

将实例从IBM迁移到Camunda


最终,IBM的流程仅包括对Camunda的调用,而在Camunda收集了3个级别的流程。业务流程本身并没有太大变化,因此我们设法将旧实例从IBM转移到Camunda到相同的等待点。并关闭IBM。
图片

如果您有类似情况该怎么办


如果您想使用BPMS旧版迁移到Camunda,则:
  • 将上下文移到单独的数据库。
  • 将用户界面移动到单独的应用程序。
  • 停止在旧应用程序中编码新功能。
  • 使用单向呼叫,以便Camunda不了解旧系统。
  • 从小盒子开始,但不要忘记漫长的自定义任务。

这种方法帮助我们将事件数量减少了14倍,将回归时间减少了4倍,使日常发布成为可能,并将手动测试的成本减少了4倍。现在,有5个人正在从事该项目,并且与9个人在IBM从事的工作量相同。希望您的结果不会更糟。

Camunda邀请参加第4场比赛


2020年2月27日(星期四)19:30在莫斯科Golovinskoye Shosse 5A,Vodny商业中心,我们将在Camunda举行另一次会议。您可以在链接上注册并阅读有关扬声器的信息来!

All Articles