谈谈流程平台的实现方案

流程平台的意义

当只有一个项目中有流程的时候,其实是不需要流程平台的。但是当有多个项目中都具有流程,并且这些项目的用户交叉时,就需要有一个统一的流程平台,来让用户能从一个页面中查看或处理自己的所有相关流程。

流程相关的一些数据

  1. 流程的原生数据(act_*的一些表数据),下文中用数据A来标识
  2. 流程的扩展配置信息(为了方便使用流程,进行的一些扩展配置:如业务表单的配置、流程节点支持的操作的配置等),下文中用数据B来标识

实现流程平台的三种思路

一、 流程平台完全独立(数据A数据B都存于平台)

业务系统完全通过流程平台提供的对外接口来实现流程发起、提交、取消等操作。所有的流程相关数据都存储于流程平台中。

优点

  1. 完全跟业务系统解耦
  2. 流程的完整数据都存储于同一个地方,便于取用

缺点

  1. 所有实现都需通过对外接口来实现,增加了网络交互,降低性能
  2. 当业务系统的业务处理跟流程操作需要在一个事物中处理时,事物的一致性不容易保证(虽然可以采用分布式事物来解决,但是分布式事物会增加使用成本和降低性能)
  3. 流程平台的处理压力大

二、 流程平台最小化(数据A数据B都存于业务系统)

流程平台只保留一个任务列表的查询功能,所有的其他功能都集成到业务系统中(流程平台提供一个jar包)。所有的流程相关数据都存储于业务系统的数据库中,业务系统进行流程操作(流程发起、取消等)时,将数据同步(根据业务需要,可以实时同步也可以利用mq异步同步)到流程平台对应的数据库中(一般为nosql数据库,如mongodb)

优点

  1. 性能高
  2. 无事物问题

缺点

  1. 流程相关配置信息分布在各个业务系统中,比较分散,不方便取用
  2. 业务系统的处理压力大

三、兼顾方案一和方案二(数据A存于业务系统,数据B存于平台)

流程平台只包含任务列表的查询功能和对流程配置信息(数据B)的配置功能,业务系统配置多数据源,包含业务本身的数据源和流程配置信息的数据源,业务本身的数据源为主数据源存在事物,流程配置的数据源为只读数据源,不需要事物,从而保证多数据源的事物一致

优点

  1. 性能高
  2. 无事物问题
  3. 流程配置集中管理

缺陷

  1. 需要配置多数据源,增加配置复杂度
  2. 业务系统的处理压力大

最后再说几句

个人更倾向于第三种方案,既能满足事物的一致性,又能尽最大可能的统一管理配置信息。
本人写作功底较差,无法完整表述清楚三种方案。如有疑问,欢迎留言讨论。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring 是一个开源的 Java 框架,用于构建企业级应用程序。它提供了一个全面的编程和配置模型,使开发人员可以轻松地构建任何规模的应用程序。Spring 的主要特点是它的轻量级和松散耦合性,它可以集成其他框架和技术,并提供了大量的 API 和工具来帮助开发人员提高生产力。Spring 框架还包括许多子框架和项目,例如 Spring Boot、Spring MVC、Spring Data 等,这些子框架为不同方面的应用程序开发提供了更专业的支持。总之,Spring 是一个非常强大的框架,为 Java 开发人员提供了许多便利和灵活性,它已成为企业级应用程序开发的事实标准之一。 ### 回答2: Spring是一个非常流行的轻量级开源框架,用于构建Java企业级应用程序。它提供了一种简化应用程序开发的综合解决方案。 首先,我理解Spring是一个容器,它可以管理和组织Java对象的生命周期。通过Spring容器,我们可以轻松地创建和管理对象,将它们相互连接,并在需要时将它们注入到其他对象中。这大大减少了手动管理和实例化对象的麻烦。 其次,Spring还提供了一种松耦合的方式来组织和访问应用程序的各个层。通过使用依赖注入和面向接口编程的方式,我们可以将不同的组件解耦,并在需要时轻松进行替换或扩展。这使得应用程序更加模块化,可扩展和可测试。 此外,Spring还提供了许多有用的特性和模块,以帮助开发人员更高效地构建应用程序。例如,Spring MVC可以用于构建Web应用程序,提供了灵活的控制器和视图的开发方式。Spring AOP可以实现切面编程,用于实现横切关注点。Spring事务管理器可以简化对数据库事务的管理等。 总体而言,我认为Spring是一个非常强大和灵活的框架,它可以简化Java应用程序的开发和维护。它提供了丰富的功能和工具,帮助我们提高开发效率,并使应用程序更加可靠和可扩展。无论是开发小型项目还是大型企业级应用程序,Spring都可以成为我们的首选框架之一。 ### 回答3: Spring 是一个开源的、轻量级的、面向企业级应用开发的框架,它提供了一套全面的解决方案,用于简化Java应用程序的开发。 首先,Spring 封装了企业级开发中常见的模式和最佳实践,包括依赖注入(DI)、控制反转(IoC)等。通过 DI ,对象之间的依赖关系不再是硬编码,而是通过配置文件或注解进行管理,降低了组件之间的耦合性,提高了程序的可维护性和可测试性。通过 IoC ,Spring 负责创建和管理对象的生命周期,开发人员只需要关注业务逻辑的实现,而不需要关心对象的创建和销毁。 其次,Spring 提供了一系列的模块,包括但不限于:Spring MVC用于 Web 应用开发,Spring Data用于数据库访问,Spring AOP用于面向切面编程等。这些模块相互协作,提供了完整的开发解决方案。 此外,Spring 还具有良好的扩展性和可定制性。开发人员可以根据项目需求选择需要的模块和功能,灵活地组合和配置。同时,Spring 提供了大量的扩展点和扩展机制,可以通过编写自定义插件或继承已有组件进行功能扩展。 总的来说,Spring 是一个功能强大、灵活性高、易于使用的开发框架,它通过提供一系列的模块和解决方案,简化了企业级应用的开发和维护。同时,Spring 基于开放源代码的原则,社区活跃,文档丰富,提供了充足的支持和资源,使得它成为许多Java开发人员的首选框架。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值