热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

高级工作流模式深入业务场景分析(1)——多路合并

开篇之作(1)描述两条或更多的分支合并到单一的一条后续路径中,每一条使能进入分支都激活后续路径的一次执行线程。虽然多条分支在图形上是合并的,但是这个多路合并并不对这些分支激活的后续线程进行任

开篇之作

(1) 描述

两条或更多的分支合并到单一的一条后续路径中,每一条使能进入分支都激活后续路径的一次执行线程。虽然多条分支在图形上是合并的,但是这个多路合并并不对这些分支激活的后续线程进行任何的同步。

(2) 抽象模型描述

多路合并的Flash动画

clip_image002

上图中,B和C是多路选择后的分支,这样的分支可以超过两个,假设还有E、F……,这样的分支在多路选择处不进行同步,每一个分支都会激活一次D的执行,即D(B)、D(C)、D(E)……,并且这些D的线程互不干扰。

(3) 业务场景举例

clip_image004

报销流程,假设分为三部分:住宿费、交通费、飞机票特殊报销。可能出现的情况有:住宿费+交通费;住宿费+交通费+飞机票特殊报销;交通费;交通费+飞机票特殊报销……

流程开始,首先填写报销申请(勾选报销的内容,三种费用中选择),之后流程根据勾选的内容激活后续的填写不同报销单的分支,最后每一张报销单都需要经过审批。

如果流程引擎没有实现多路合并我们可以变相的实现上面的功能。如下图:

clip_image006

但上述的实现有以下的不足:

a、 重复工作量,审批分明是同一个活动,非要分多个来画;

b、 无法进行统计,若要对审批这一活动的时间、数量等信息进行统计分析,那么分成了多个活动后就难于进行统计。

c、 资源的分配,假设审批是由一个岗位来负责,且任务压力应该在这个岗位上负载均衡,那么分成了多个活动后这个资源的分配也无从着手。

(4) 含义引申

多路合并的后续路径,是一些相同行为的执行线程,这就类似于另外一种模式——多实例模式。这些线程终有一个需要同步的时候,在业务场景中,这个同步就非常的复杂,如后续步骤为制证,这种业务可以分为以下情况,我们一一举例说明:

a、 强制一对一:一个审批后的单据生成一个财务凭证,那么这些多实例的线程暂时不同步,留到后续步骤。这种管理方式是比较常见的。

clip_image008

b、 强制多对一:同一个报销申请产生的报销单据,需要生成在一个财务凭证上。因此在制证前就需要同步。这种管理方式是比较常见的。

clip_image010

c、 任意多对多:在本场景中,这个不太可能发生,但在一般的物流业务中却非常常见。假设飞机票的审批比较严格,拖得时间比较长,另外两个报销单早批了,那么先将这两个生成同一个财务凭证。这种任意性的规则,一般都是通过人来判断的。

clip_image012


推荐阅读
  • 使用LVS与ldirectord实现高可用负载均衡
    本文介绍了如何通过LVS(Linux Virtual Server)结合ldirectord工具来实现服务器的健康检查及负载均衡功能。环境设置包括一个LVS节点和两个真实服务器节点,通过配置ldirectord进行健康状态监测,确保系统的高可用性。 ... [详细]
  • 深入理解Docker网络管理
    本文介绍了Docker网络管理的基本概念,包括为什么需要Docker网络管理以及Docker提供的多种网络驱动模式。同时,文章还详细解释了Docker网络相关的命令操作,帮助读者更好地理解和使用Docker网络功能。 ... [详细]
  • 利用GitHub热门资源,成功斩获阿里、京东、腾讯三巨头Offer
    Spring框架作为Java生态系统中的重要组成部分,因其强大的功能和灵活的扩展性,被广泛应用于各种规模的企业级应用开发中。本文将通过一份在GitHub上获得极高评价的Spring全家桶文档,探讨如何掌握Spring框架及其相关技术,助力职业发展。 ... [详细]
  • 本文详细介绍了反向代理与负载均衡的概念及其在Nginx中的应用。反向代理主要用于将客户端请求转发到后端服务器,而负载均衡则通过分发请求来提高系统的响应速度和可用性。 ... [详细]
  • 腾讯视频 Node.js 服务国庆阅兵直播高并发实战
    本文分享了腾讯视频团队在国庆阅兵直播项目中,如何利用Node.js服务成功应对2.38亿次观看的高并发挑战。文章将从服务架构、可用性保障、缓存策略、日志与告警等方面详细解析。 ... [详细]
  • 历经两个月,他成功斩获阿里巴巴Offer
    经过两个月的努力,一位普通的双非本科毕业生最终成功获得了阿里巴巴的录用通知。 ... [详细]
  • 本文深入探讨ZooKeeper的功能与应用场景,解释其作为开源分布式协调服务的核心作用,以及如何通过ZooKeeper实现数据的一致性和高可用性。 ... [详细]
  • Kubernetes中构建Nginx Service的详细步骤
    本文介绍了如何在Kubernetes集群中通过创建Service来稳定访问Nginx应用的方法,包括Service的基本概念及其在Kubernetes中的作用。 ... [详细]
  • 本文详细探讨了在Windows Server 2003环境下遇到MySQL连接失败(错误代码10061)的解决方案,包括通过卸载特定的Windows更新和调整系统注册表设置的方法。 ... [详细]
  • ipvsadm命令简介:ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置。在fedora14、Linux6.0之后系统中 ... [详细]
  • 本文档详细介绍了服务器与应用系统迁移的策略与实施步骤。迁移不仅涉及数据的转移,还包括环境配置、应用兼容性测试等多个方面,旨在确保迁移过程的顺利进行及迁移后的系统稳定运行。 ... [详细]
  • Linux双网卡绑定技术详解与实践
    本文详细介绍了如何在Linux系统中实现双网卡绑定,即将两块物理网卡合并为一个逻辑网卡,以提高网络性能和可靠性。文中不仅涵盖了基本的概念,还提供了具体的配置步骤和测试方法。 ... [详细]
  • 本文详细介绍了RocketMQ中的消息并发消费机制,包括消息拉取后的处理流程、消费服务的调用以及消费任务的具体执行过程。 ... [详细]
  • MHA 架构详解与实践
    MHA(Master High Availability)是一种高效的主从切换解决方案,确保了数据的一致性和系统的高可用性。本文将详细介绍MHA的功能、主从切换流程以及配置步骤,并探讨其优缺点。 ... [详细]
  • 深入解析ZooKeeper:Java组件化开发必备技能
    本文详细介绍了ZooKeeper作为分布式服务协调框架的核心功能与应用场景,包括其数据一致性解决方案、数据结构特点、监听通知机制及选举机制等,帮助开发者更好地理解和应用ZooKeeper。 ... [详细]
author-avatar
mobiledu2502861533
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有