流程引擎与应用系统分布式部署架构

news2024/10/6 22:22:12

一、为什么应用系统和流程引擎需要分开部署

有句话讲:存在即合理。在实际的企业应用需求里有如下几种场景,需要把业务系统和流程引擎分开部署。

  1. 企业流程治理需求。即整个企业只部署一套流程平台BPM,也叫企业级流程中心BPM、或者跨系统端到端流程等,这种架构一般在大企业用的比较多,不单单是技术架构的变化,更重要的是要体现企业级流程治理,以及KPI考核等,这就要求流程模型的一致性,业务系统不能再开发异构的流程引擎了。
  2. 应用系统技术异构,但需要工作流。在一个企业里不单单只有一个供应商,或者一个技术体系,往往存在Java、.net、php等多种异构技术的系统,而这些系统常常有调用工作流的需求,如果每个系统都开发一套流程引擎,开发成本和维护成本极高,这时流程引擎独立部署,通过HTTP服务给业务系统提供流程能力是最好的方式。
  3. 流程中台架构。当前中台这个概念比较流行,有数据中台、业务中台、技术中台, AI中台、区块链中台、元宇宙中台、AR/VR中台等等。中台实际上一种架构思想,本质上是通过服务方式,提供复用和共享能力,提升前台业务应用的开发和维护效率。
  4. 还有统一技术架构,利于技术人员复用,便于日常系统运维,等等。

二、流程引擎和业务系统分开部署的技术难点

业务系统不再含有流程引擎,如果想实现流程审批功能,那么就得依赖独立部署流程引擎的远程服务接口了,目前主流技术是RESTful+JSON格式,本质是是一种HTTP通讯方式,常见的接口有发起流程、流程审批、查询待办等,这些都不是技术难点。比较难处理的是流程权限,在大部分的业务中都有“我的待办”、“我的已办”、“我发起的流程”、“我审批的流程”、“我参与的流程”等这种业务和流程相结合的查询需求,实现这样的需求,就需要关联业务端数据库表和流程引擎数据库表,而这种分开部署架构,数据库是独立的,无法通过SQL做关联查询。注意这种流程权限查询不是单条流程实例查询那么简单,不能通过HTTP服务请求实现,因为数据量太大了。

 

解决方案:

以主流的开源流程引擎jbpm、activiti、flowable、camunda为例说明该解决方案。业务列表与流程表的关联查询,涉及到流程的两张表:“act_hi_procinst”,“act_hi_identitylink”。

1、需要在业务库中也创建这两张表。

2、流程有数据变动的时候,需要同步更新业务库的两张流程表。

3、同步机制借助RabbitMQ消息队列、流程数据同步服务实现。

4、当流程有数据变动的时候,就把数据推送到RabbitMQ消息队列,流程数据同步服务订阅消息,当收到消息后,把数据分发到各个业务库。

详细方案见:https://yunchengxc.yuque.com/staff-kxgs7i/public/fdni4x7ksaxubx7c

三、独立部署的流程引擎应该具备什么能力

IBM对BPM的定义:在业务流程的整个生命周期中对业务流程进行建摸、开发、部署和管理来实现业务策略的it治理过程。

Gartner对BPM的定义:是一个描述一组服务和工具的一般名词,这些服务和工具为显式的流程管理(如流程的分析、定义、执行、监视和管理)提供支持。

参考IBM和Gartner对BPM的定义,BPM平台至少要包含:流程建模、流程引擎、流程监控、流程分析、流程门户等几个核心部分。

1、拖拉拽可视化流程建模

 

2、高效稳定流程执行引擎

3、在线流程监控管理

 

4、多维度流程效能分析

 

5、流程门户统一入口

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/185163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

canal数据同步安装、使用

canal源码仓库:https://github.com/alibaba/canal博主使用的是canal 1.5.5版本 MySQL 5.7.32 JDK:1.8 canal各个版本:https://github.com/alibaba/canal/releasescanal-adapter下载 canal-admin 下载 canal-deployer 下载上传到目标服务器对应目录下解压…

初识ros-Navigation

最近一直在看京天Turtlebot3 waffle pi的导航部分,这篇文章就介绍一下相关内容。导航模块是一个独立完整的模块,内容比较多也很深入。因为笔者没有看过源码,只是一些概念上的了解,做个整理,为后续的源码阅读做准备。本…

苏嵌实训——day16

文章目录一、进程间通信:1.传统通信方式:2. IPC通信方式(第五代操作系统):(1)传统通信之无名管道(2)传统通信方式之有名管道(3)使用有名管道来实现…

Python实现清除文件夹中重复视频

目录一、二进制文件二、摘要算法(MD5)三、shutil模块四、视频清除视频全在一个文件夹里视频在不同的文件夹里一、二进制文件 二进制文件是以文本的二进制形式存储在计算机中。 用户一般不能直接读取它们,需要通过相应的软件才能将其显示出来。 二进制文件一般是可…

jspssm大学生宿舍管理系统-宿管带前端

目录 摘 要 II Abstract III 1 绪论 1 1.1 课题背景 1 1.2 课题研究现状 1 1.3 初步设计方法与实施方案 2 1.4 本文研究内容 2 2 系统开发环境 4 2.1 JSP技术 4 2.2 B/S架构 5 2.3 Eclipse环境配置 5 2.4 MySQL数据库 6 3 系统分析 7 3…

【微服务】Docker容器化

🚩本文已收录至专栏:微服务探索之旅 👍希望您能有所收获 一.引入 (1) 为什么需要Docker 微服务虽然具备各种各样的优势,但服务的拆分的非常多给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同…

【1】Python基础语法

字面量 字面量:在程序中,被写下来的固定值,称之为字面量。Python中常用的6种数据类型: 字符串(string),又称文本,是由任意数量的字符如中文、英文、各类符号、数字等组成&#xff0…

虚拟化技术学习笔记10

虚拟机镜像管理 学习目标: 能够了解KVM虚拟机支持的镜像格式 能够使用qemu-img实现镜像创建 能够使用qemu-img实现镜像查看 能够使用qemu-img实现镜像格式转换 能够了解后备镜像的作用 能够了解差量镜像的作用 能够基于后备镜像制作差量镜像 能够使用差量镜…

[网鼎杯 2020 朱雀组]Nmap(双解详细分析)

目录 Nmap 相关参数 信息收集 思路 方法一 方法二 nmap常见操作 Nmap 相关参数 -iL 读取文件内容,以文件内容作为搜索目标 -o 输出到文件 -oN 标准保存 -oX XML保存 -oG Grep保存 -oA 保存到所有格式 信息收集 可以对ip进行扫描 思路 方法一 将一句话木马…

【高并发】- 生产级系统搭建 - 3

前言 本章讲解高并发系统动静分离方案设计、热点数据处理、管控等思想。 1. 动静分离方案设计 动静分离实质,将静态页面与动态页面(或者静态数据与动态数据)解耦分离,用不同系统承载对应流量。这样可以提升整个服务的访问性能和可…

MySql性能优化(五)优化细节

优化细节 当使用数据库列进行查询的时候尽量不要使用表达式,把计算结果放到业务层而不是数据层尽量使用主键索引,而不是其他索引,因此主键索引不会触发回表查询使用前缀索引 有的时候需要索引很长的字符串,这会让索引变的大且慢&…

Ethercat系列(1)COE非周期性数据通信

Ethercat主站通过读写邮箱数据SM通道实现非周期性数据通信。邮箱数据定义邮箱数据单元结构邮箱数据头各字段含义如下表非周期性邮箱数据通信EtherCAT协议中非周期性数据通信称为邮箱数据通信,它可以双向进行---主站到从站和从站到主站。它支持全双工,两个…

存储介质还是存储载体,这不是个问题

在档案领域中,“介质”和“载体”到底有什么区别?能不能混用?这个问题曾经困扰了笔者10几年,直到最近才发觉原来根本不是一个问题。我们先来看两句话: 1、磁盘、光盘、固态硬盘等常见数据存储载体的寿命无法满足电子档…

RabbitMQ快速入门和使用

文章目录1. 基础理论1.1. 同步调用与异步调用1.2. RabbitMQ 安装与运行1.2.1. 常见消息模型2. 基本消息队列的应用2.1. 消息发送流程2.2. 消息接收流程3. SpringAMQP的基础理论与应用(想快速应用看这里)3.1. 基础理论3.2. 【案例一】实现HelloWorld中的基础消息队列功能3.3. 【…

Neo4j数据库模糊查询

1、Neo4j单个查询条件模糊查询1.1使用 ~’.模糊匹配对象.’ 进行表示1.1.1 查询节点MATCH(n:Author) WHERE n.name ~.*梦.* RETURN n1.1.2 查询关系MATCH p({title:锆石U-Pb和Lu-Hf同位素研究内蒙乌努格吐山斑岩型铜钼矿岩浆岩特征})-[r:has_illustration]->(i:Illustration…

Python应用开发——制作bin文件

Python应用开发——制作bin文件 目录Python应用开发——制作bin文件前言1 环境搭建2 代码编写与测试结束语前言 什么是bin? bin是二进制文件,其用途依系统或应用而定。一种文件格式binary的缩写。一个后缀名为".bin"的文件,只是表…

无代码配置态势感知分析应用,预判你的预判

森林发生火势灾情时,应急管理中心快速做出部署,实时监测并分析演变趋势大型交通事故发生,应急指挥中对前端人员、车辆的远程调度线路规划实时监测无人机对电站电厂的运维工作公安警务对嫌疑人、嫌疑车辆等目标的跟踪侦查……以上这些&#xf…

Acwing---基础算法(一)

文章目录 快速排序归并排序整数二分浮点数二分一、快速排序 #include<iostream>using namespace std;const int N 1e6 10;int n; int q[N];void quick_sort(int q[], int l, int r) {//此时区间只有一个数或者没有数不需要排序了if (l > r) return;int x q[l], i…

【QCA】【实例】高通DTS中添加BLSP设备节点的基本配置

文章目录0. env1. 简介2. 需求及资料2.1 需求2.2 资料3. DTS实际配置及简述0. env IPQ601x SPF11.5cs 1. 简介 BLSP(BAM Low-Speed Peripheral) 不同chip有不止一组的BLSP&#xff0c;每个BLSP又有多个端口供使用。 每个端口功能可以复用为&#xff1a;SPI 或者 I2CUART 2. 需求…

计算机网络知识详解之:TCP连接原理详解

网络知识详解之&#xff1a;TCP连接原理详解 文章目录网络知识详解之&#xff1a;TCP连接原理详解TCP连接三次握手一、准备工作二、一次握手三、二次握手四、三次握手为什么TCP客户端最后还要发送一次确认呢&#xff1f;为什么要3次握手?握手中的SYN超时重试TCP协议缺陷四次挥…