zoukankan      html  css  js  c++  java
  • [置顶] 某大型银行深化系统技术方案之七:核心层之流程控制引擎

    传送门 ☞ Android兵器谱 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229

    核心层

            核心层主要提供后台业务集中处理中最基本、共性的信息处理、流程调度和相关的管理功能,如任务调度、路由确定、事务一致性管理、任务拆解合并、优先级管理等。核心层对业务处理中的各项工作进行高度的抽象,只管理共性的属性和操作,功能相对简单,具有较高稳定性和处理效率,并对外部服务提供基础调用接口。
    流程控制引擎
            流程控制引擎作为流程管理系统的核心部分,主要提供了对于流程定义的解析以及流程流转的支持。流程定义文件描述了业务的交互逻辑,流程控制引擎通过解析此流程定义文件按照业务的交互逻辑进行业务的流转,流程控制引擎通过参考某种模型来进行设计,通过调度算法来进行流程的流转(流程的启动、终止、挂起、恢复等),通过各种环节调度算法(SPLIT、AND、OR等)来实现对于环节的流转(环节的合并、分叉、选择、条件性的选择等)。

            为了实现系统的可扩展性,设计流程控制引擎的集群模式是必要的环节。在设计图中,不同的流程引擎分别部署在不同的物理机器上,主要负责业务流程状态的改变(状态机)、工作项的产生等计算环节;以共享流程数据库、独立计算为运行模式来实现集群模式。流程集群设计如下图所示,其中包括了几个功能:


    一、组间负载均衡
            通过任务分配器来实现每个流程引擎组的实例分配,不同的业务可以分配到相同的引擎组中。具体实现过程如下:每当业务产生一个实例时,任务分配器将都将该实例分配到一个引擎组中,即将对应的引擎组信息存入实例的上下文环境中,每次该流程实例化、工作项产生、流转都是由该组负责。系统将采用1-n组工作组,每一组是逻辑并行的关系。
    二、组内多点备份
            流程引擎组至少包含两个;组内的引擎通过共享流程数据库,解决单点失效问题。对于流程实例而言,引擎之间是竞争关系,他们之间的互斥主要体现在流程实例是否被引擎加载的标志位上。对于流程实例化来说,采用数据库的操作Select_for_Update来实现同步。组内的竞争通过Timeout机制和提交前检查机制来实现。
    三、包含模块
    1.状态机:存储了流程实例的状态信息。
    2.线程池:实现对多个实例的并发处理。
    3.实例池:对流程的实例保存在内存中,实现流程实例的二级Cache,减少对数据库的IO操作;
    四、任务分配器
            主要完成流程的组分配,原则有两种:
    1.按业务优先级配置分配,即根据每个业务产生的业务量统计、优先级、最大业务流程实例数等估算信息,预分配把引擎组分配给该业务。
    2.按照运行状态动态分配,即通过流程监控信息,实现实例的动态分配。

  • 相关阅读:
    AngularJS XMLHttpRequest
    AngularJS服务
    angularJS过滤器
    AngularJ控制器
    angular Scope(作用域)
    angular Model 指令
    angular指令
    微信小程序调用微信支付
    微信小程序一直保持登陆状态
    微信小程序ajax请求数据及一些方法
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3149447.html
Copyright © 2011-2022 走看看