CN110377413B - 基于bpmn标准的分布式任务异步调度和监控的系统 - Google Patents
基于bpmn标准的分布式任务异步调度和监控的系统 Download PDFInfo
- Publication number
- CN110377413B CN110377413B CN201910671811.7A CN201910671811A CN110377413B CN 110377413 B CN110377413 B CN 110377413B CN 201910671811 A CN201910671811 A CN 201910671811A CN 110377413 B CN110377413 B CN 110377413B
- Authority
- CN
- China
- Prior art keywords
- task
- module
- scheduling
- monitoring
- tasks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/324—Display of status information
- G06F11/327—Alarm or error message display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了基于BPMN标准的分布式任务异步调度和监控的系统,可以应对各类复杂的任务依赖场景,上手门槛低。其技术方案为:系统包括:管理端子系统,包括管理模块、调度模块和监控模块,其中管理模块管理任务、流程和作业,作业和任务通过流程定义关联,任务接收节点通过任务标识号和任务绑定,任务接收节点之间的关系表示任务之间的依赖关系;调度模块用异步方式对触发任务,产生任务发布消息发布到分布式发布订阅消息模块;监控模块通过基于BPMN标准的流程引擎实施监控;执行端子系统,对分布式发布订阅消息模块进行监听,当监听到任务发布消息后再由对应的执行器执行相应任务。
Description
技术领域
本发明涉及分布式任务的调度和监控技术,具体涉及基于BPMN标准的分布式任务异步调度和监控的系统。
背景技术
调度系统主要用于自动(定时)或者手动触发其他业务系统中的任务代码运行。在大多数科技公司,调度系统是一个非常重要的基础架构系统。通过调度系统的调度,可以将业务系统中的定时任务集中管理,使业务系统无需再处理复杂的调度逻辑和任务依赖关系。目前市场上针对任务调度需求的解决方案主要有两类:
一类是基于java定时任务框架quartz实现,如elastic-job、xxl-job等,是完全由java编写的开源定时任务调度框架。这类方案的主要问题在于对任务依赖关系的支持过于简单,如xxl-job只能通过配置任务的父子关系来定义任务依赖,而在实际场景中,任务之间的关系可能非常复杂,如并行、互斥、回调等等,这类方案很难处理这样的复杂场景。
另一类是基于有项无环图dag实现,如airflow、d2、maat等。dag是有向无环图(directed acyclic graph),在任意一条边有方向,且不存在环路的图,如图1所示。这类方案通过定义dag文件来创建任务,虽然dag中节点的前后顺序可以表示任务的依赖关系,但dag本身存在一定的局限性。第一,dag不允许出现环,也就不能直接支持一个任务节点执行失败回退到前置任务节点的需求;第二,dag文件使用python编写,不支持可视化编辑,对使用人员要求较高,需要掌握python和dag规范,且在复杂场景下,修改节点依赖关系的代价很大;第三,dag文件基于python运行,在高并发场景下,性能急剧下降。
发明内容
以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。
本发明的目的在于解决上述问题,提供了一种基于BPMN标准的分布式任务异步调度和监控的系统,使用基于BPMN的流程图来建立任务之间的依赖关系,由于BPMN标准成熟、元素丰富,可以应对各类复杂的任务依赖场景,不同于dag文件,市场上存在丰富的绘图软件支持可视化编辑生成BPMN文件,如activiti提供的Web版画图工具、BPMN-JS、VisualParadigm等,上手门槛低,用户只需根据具体场景通过拖拽的方式即可生成相应流程图。
本发明的技术方案为:本发明揭示了一种基于BPMN标准的分布式任务异步调度和监控的系统,包括管理端子系统和执行端子系统,管理端子系统和执行端子系统之间通过分布式发布订阅消息模块实现数据通信,其中:
管理端子系统,包括管理模块、调度模块和监控模块,其中管理模块用于管理任务、流程和作业,其中作业和任务通过流程定义建立关联,任务接收节点通过任务标识号和任务实现绑定,任务接收节点之间的关系表示任务之间的依赖关系;调度模块用于采用异步方式对任务进行触发,在任务触发时产生一个任务发布消息发布到分布式发布订阅消息模块;监控模块用于通过记录有各流程实例在各任务接收节点上流转过程的基于BPMN标准的流程引擎实施监控;
执行端子系统,包括多种执行器,对分布式发布订阅消息模块进行监听,当监听到任务发布消息后再由对应的执行器执行相应任务。
根据本发明的基于BPMN标准的分布式任务异步调度和监控的系统的一实施例,分布式发布订阅消息模块是kafka模块。
根据本发明的基于BPMN标准的分布式任务异步调度和监控的系统的一实施例,管理模块包括:
任务管理单元,用于添加、更新、删除任务定义,其中任务定义可配置任务执行时需要的参数信息;
流程管理单元,用于添加、更新、删除流程定义;
作业管理单元,用于添加、更新、删除作业定义,其中作业定义中可指定绑定某个流程定义。
根据本发明的基于BPMN标准的分布式任务异步调度和监控的系统的一实施例,基于BPMN标准的流程引擎是activiti引擎,调度模块配置为通过quartz触发作业调度,其中每一次作业调度即为启动一个作业绑定的流程定义的一个实例,流程定义的实例流转到任务接收节点时被activiti引擎挂起,同时在调度模块中根据任务标识号生成该任务对应的任务发布消息,发布到分布式发布订阅消息模块,再由执行端子系统中的执行器执行,如果任务执行成功,则调度模块通过activiti引擎唤起流程实例,流程实例会流转到下一个任务接收节点,如果任务执行失败,则流程实例继续挂起,当流程实例完结时作业调度完成。
根据本发明的基于BPMN标准的分布式任务异步调度和监控的系统的一实施例,调度模块中的任务发布消息对象维护一次任务调度过程的所有状态,状态包括初始状态、正在执行、执行成功、执行失败、等待、终止、重新执行,任务发布消息对象还记录了任务调度过程信息,任务调度过程信息包括但不限于:关联的流程实例、运行节点,任务发布的时间,接收到任务执行结果的时间,任务在哪个执行节点上执行,执行的开始、结束时间,执行的结果、异常信息。
根据本发明的基于BPMN标准的分布式任务异步调度和监控的系统的一实施例,监控模块包括:
监控单元,用于监控作业、任务的执行状况;
报警单元,用于警示作业调度中发生的异常状况;
统计单元,用于统计作业调度过程相关的数据信息;
人工干预单元,用于提供人工介入功能。
根据本发明的基于BPMN标准的分布式任务异步调度和监控的系统的一实施例,执行端子系统维护一线程池,执行端子系统从订阅的主题中获取任务发布消息并解析,提取任务具体信息,使用对应的执行器执行任务,创建一个线程任务并置于线程池中运行。
根据本发明的基于BPMN标准的分布式任务异步调度和监控的系统的一实施例,执行端子系统包括:
Shell执行器,用于从任务信息中获取shell文件路径,再通过java调用执行shell脚本;
python执行器,用于从任务信息中获取python代码,再通过java调用python代码;
plsql执行器,用于从任务信息中获取数据源连接信息和存储过程的名称,再和数据源建立连接,通过java调用存储过程;
service执行器,用于从任务信息中获取服务的url,再使用httpclient调用服务。
本发明对比现有技术有如下的有益效果:本发明使用流程图来表示业务场景(下文称之为作业),一个作业包含多个有依赖关系的任务,流程图中的节点代表任务,节点间的连线代表依赖关系。本发明的核心思想如下:一次作业调度就是启动一个流程实例,流程实例流转到某个节点,会根据该节点上绑定的任务产生一个任务发布消息并发送到kafka,执行端监听kafka得到任务发布消息后触发执行指定的任务,流程实例继续流转,流程实例完结,本次作业调度完成。相较于现有技术,本发明的创新点如下:
1、通过基于BPMN的流程图来建立任务之间的依赖关系,流程图支持可视化编辑,用户只需通过简单拖拽的方式,即可创建复杂任务依赖场景对应的流程图。
2、设计任务发布消息对象,维护任务调度过程的所有相关状态和信息,基于这些数据可以扩展实现诸多提升调度系统实用性的功能,如监控、报警、统计等。
3、任务的触发和执行采用异步方式,调度系统的性能瓶颈往往在任务执行部分,引入kafka实现了调度端和执行端的解耦,执行端可以横向扩展,既能提高吞吐量,也能实现负载均衡。
4、执行端保留了高扩展性,本发明实现了一些通用执行器,定义了执行器的实现规范,用户可以根据自己的需求扩展实现自定义执行器,执行端既可以单独部署,也可以嵌入到应用之中。
附图说明
在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本发明的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。
图1示出了有向无环图的一个示例的示意图。
图2示出了BPMN的一个图形化模型示例的示意图。
图3示出了本发明的基于BPMN标准的分布式任务异步调度和监控的系统的一实施例的整体架构图。
图4示出了调度模块的任务调度过程的所有状态的示意图。
具体实施方式
以下结合附图和具体实施例对本发明作详细描述。注意,以下结合附图和具体实施例描述的诸方面仅是示例性的,而不应被理解为对本发明的保护范围进行任何限制。
图3示出了本发明的基于BPMN标准的分布式任务异步调度和监控的系统的一实施例的整体架构。在介绍系统之前,首先简单说明一下BPMN,即business process modelingnotation,可以称之为业务流程建模符号,也叫作业务流程图,是设计用于创建业务流程的图形化模型,图2就是包含两个任务节点的简单的业务流程图。
请参见图3,本实施例的系统包括管理端子系统和执行端子系统。
管理端子系统和执行端子系统之间通过kafka模块通信。kafka模块用于实现高吞吐量的分布式的发布和订阅消息。
管理端子系统是一个基于springboot开发的web应用,主要包括管理模块、调度模块和监控模块。执行端子系统是基于java开发的应用,包含各类执行器,例如图3中所示的shell执行器、phthon执行器、plsql执行器、service执行器。
管理模块包括任务管理单元、流程管理单元和作业管理单元。任务、流程、作业是调度系统的三个基本实体,作业和任务的关联是通过流程定义建立的,即,流程节点和任务绑定,作业和流程定义绑定,从而实现作业和任务的关联。在流程定义中,使用ReceiveTask节点代表一个任务,每个ReceiveTask节点上都设置了TaskStartListener,执行方法为publishTask,参数为任务id,ReceiveTask节点通过任务id和任务实现绑定,ReceiveTask节点之间的关系代表了任务之间的依赖关系。
任务管理单元用于添加、更新、删除任务定义,任务定义中可以配置任务执行时需要的参数信息。
流程管理单元用于添加、更新、删除流程定义,流程定义中可以使用ReceiveTask节点来代表任务,每个ReceiveTask节点上都设置了TaskStartListener,执行方法为publishTask,参数为任务id,ReceiveTask节点通过任务id和任务定义绑定,ReceiveTask节点之间的关系代表了任务之间的依赖关系。
作业管理单元用于添加、更新、删除作业定义,作业定义中可以指定绑定某个流程定义。
调度模块基于quartz和activiti引擎(activiti引擎是基于apache许可、支持bpmn标准的流程引擎)实现。通过quartz触发作业调度,一次作业调度就是启动一个作业绑定的流程定义的一个实例,流程实例流转到ReceiveTask节点时会被activiti引擎挂起,同时触发TaskStartListener执行publishTask方法。TaskStartListener在调度模块中实现,publishTask方法会根据参数传递的任务id生成该任务对应的任务发布消息,发布到kafka模块,再由执行端子系统中的执行器执行。如果任务执行成功,调度模块通过activiti引擎唤起流程实例,流程实例会流转到下一个ReceiveTask节点;如果任务执行失败,则流程实例继续挂起。当流程实例完结时作业调度完成。
调度模块对任务的触发和执行采用异步方式,任务触发时会产生一个任务发布消息,发布到kafka模块,执行端子系统监听到任务发布消息后再由对应的执行器执行相应任务。
任务发布消息对象维护了一次任务调度过程的所有相关状态的,状态的迁移如图4所示。图4示出了一次任务调度过程中的七个状态,分别是init(初始状态)、running(正在执行)、succeed(执行成功)、failed(执行失败)、wait(等待)、abort(终止)、redo(重新执行),以下就这7个状态分别进行说明。
init(初始状态):任务发布消息的初始状态,任务发布消息产生后会立刻发布到kafka模块,因此init状态会瞬间迁移到running状态;
running(正在执行):任务发布消息发布到kafka模块,调度模块更新任务发布消息状态为running;
succeed(执行成功):执行器任务执行成功,发消息通知调度模块更新任务发布消息状态为succeed;如果任务本身为异步任务,异步任务执行成功,回调调度模块更新任务发布消息状态为succeed;
failed(执行失败):执行器任务执行失败后,发消息通知调度模块更新任务发布消息状态为failed;如果任务本身为异步任务,异步任务执行失败,回调调度模块更新任务发布消息状态为failed;
wait(等待):任务本身为异步任务,执行器调用异步任务后立刻发消息通知调度模块更新任务发布消息状态为wait,此时异步任务本身还在运行;
abort(终止):当任务状态为running或者wait时,可以人为在管理端子系统修改任务发布消息状态为abort,相应任务可能还在执行端子系统执行,但是执行完成后的通知或者回调都会被调度模块忽略;
redo(重新执行):当任务状态为failed或者abort时,可以在管理端子系统人为修改任务发布消息状态为redo,调度模块会根据当前任务发布消息生成新的子任务发布消息,并重新发布相应任务,也就是说如果一个任务被调度多次,会相应产生多条任务发布消息,任务最终执行结果可以通过最后一条任务发布消息查看。
任务发布消息还记录了关联的流程实例、运行节点,任务发布的时间,接收到任务执行结果的时间,任务在哪个执行节点上执行,执行的开始、结束时间,执行的结果、异常信息等。通过任务发布消息的这些信息实现对任务调度过程的详细监控。
监控模块包括监控单元、报警单元、统计单元和人工干预单元。每次作业调度对应一个流程实例,activiti引擎记录了每个流程实例在每个节点上流转的过程,通过activiti引擎可以方便监控作业当前的状态,统计作业执行的次数。每次任务调度对应一条任务发布消息,通过任务发布消息表可以实现监控任务执行状态、超时报警等功能。任务发布消息包含多个状态,可以通过修改任务发布消息的状态达到人工干预的目的。
监控单元用于监控作业、任务的执行状况,包括作业调度的开始时间、当前作业执行到哪一步、当前任务的状态等。
报警单元用于警示作业调度中发生的异常状况,如某个任务执行失败或者任务执行时间超过预设时长,报警单元会根据异常级别发出相应的警示通知。
统计单元用于统计作业调度过程相关的数据信息,如作业调度次数,作业调度一次的平均时长、任务执行失败的次数等
人工干预单元用于提供人工介入功能,如手动停止某次作业调度、触发某次执行失败的任务重新执行等。
执行端子系统基于java开发,负责监听任务发布消息,调用具体的任务代码,可以独立部署,也可以作为jar包嵌入到其他应用中。
执行端子系统维护了一个线程池,默认大小例如为5。执行端子系统从订阅的topic中获取任务发布消息并解析,提取任务具体信息,然后使用指定的执行器执行任务,即创建一个线程任务丢到线程池中运行。
执行端子系统包含各类任务的执行器,这些执行器均继承自BaseExecutor,BaseExecutor是一个抽象类,实现了Runnable接口,并暴露execute方法由各类执行器继承。各类执行器在execute方法中实现具体任务的执行,逻辑类似,都是根据任务具体信息,通过java调用相应的任务代码。如shell(脚本)执行器ShellExecutor,从任务信息中获取shell文件路径,然后java调用Runtime.exec执行shell脚本;如service执行器ServiceExecutor,从任务信息中获取服务的url,然后使用httpclient调用服务。execute方法调用前后封装了执行器的通用操作,包括记录任务执行的开始结束时间,任务执行的返回值,任务执行的异常信息等。这些记录会更新到任务发布消息中,执行器将更新后的任务发布消息传回给调度模块。
目前支持的通用执行器包括shell执行器、python执行器、plsql执行器、service执行器。python执行器从任务信息中获取python代码,然后通过java调用python代码。plsql执行器从任务信息中获取数据源连接信息和存储过程的名称,然后和数据源建立连接,通过java调用存储过程。在其他的实施例中可根据具体的业务场景可以定制个性化的任务执行器。
尽管为使解释简单化将上述方法图示并描述为一系列动作,但是应理解并领会,这些方法不受动作的次序所限,因为根据一个或多个实施例,一些动作可按不同次序发生和/或与来自本文中图示和描述或本文中未图示和描述但本领域技术人员可以理解的其他动作并发地发生。
本领域技术人员将进一步领会,结合本文中所公开的实施例来描述的各种解说性逻辑板块、模块、电路、和算法步骤可实现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、框、模块、电路、和步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员对于每种特定应用可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成导致脱离了本发明的范围。
结合本文所公开的实施例描述的各种解说性逻辑板块、模块、和电路可用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文所描述功能的任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如DSP与微处理器的组合、多个微处理器、与DSP核心协作的一个或多个微处理器、或任何其他此类配置。
结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中体现。软件模块可驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域中所知的任何其他形式的存储介质中。示例性存储介质耦合到处理器以使得该处理器能从/向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在ASIC中。ASIC可驻留在用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。
在一个或多个示例性实施例中,所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现为计算机程序产品,则各功能可以作为一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或诸如红外、无线电、以及微波之类的无线技术从web网站、服务器、或其它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、DSL、或诸如红外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(CD)、激光碟、光碟、数字多用碟(DVD)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据,而碟(disc)用激光以光学方式再现数据。上述的组合也应被包括在计算机可读介质的范围内。
提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。
Claims (7)
1.一种基于BPMN标准的分布式任务异步调度和监控的系统,其特征在于,包括管理端子系统和执行端子系统,管理端子系统和执行端子系统之间通过分布式发布订阅消息模块实现数据通信,其中:
管理端子系统,包括管理模块、调度模块和监控模块,其中管理模块用于管理任务、流程和作业,其中作业和任务通过流程定义建立关联,任务接收节点通过任务标识号和任务实现绑定,任务接收节点之间的关系表示任务之间的依赖关系;调度模块用于采用异步方式对任务进行触发,在任务触发时产生一个任务发布消息发布到分布式发布订阅消息模块;监控模块用于通过记录有各流程实例在各任务接收节点上流转过程的基于BPMN标准的流程引擎实施监控;
执行端子系统,包括多种执行器,对分布式发布订阅消息模块进行监听,当监听到任务发布消息后再由对应的执行器执行相应任务;
其中,基于BPMN标准的流程引擎是activiti引擎,调度模块配置为通过quartz触发作业调度,其中每一次作业调度即为启动一个作业绑定的流程定义的一个实例,流程定义的实例流转到任务接收节点时被activiti引擎挂起,同时在调度模块中根据任务标识号生成该任务对应的任务发布消息,发布到分布式发布订阅消息模块,再由执行端子系统中的执行器执行,如果任务执行成功,则调度模块通过activiti引擎唤起流程实例,流程实例会流转到下一个任务接收节点,如果任务执行失败,则流程实例继续挂起,当流程实例完结时作业调度完成。
2.根据权利要求1所述的基于BPMN标准的分布式任务异步调度和监控的系统,其特征在于,分布式发布订阅消息模块是kafka模块。
3.根据权利要求1所述的基于BPMN标准的分布式任务异步调度和监控的系统,其特征在于,管理模块包括:
任务管理单元,用于添加、更新、删除任务定义,其中任务定义可配置任务执行时需要的参数信息;
流程管理单元,用于添加、更新、删除流程定义;
作业管理单元,用于添加、更新、删除作业定义,其中作业定义中可指定绑定某个流程定义。
4.根据权利要求1所述的基于BPMN标准的分布式任务异步调度和监控的系统,其特征在于,调度模块中的任务发布消息对象维护一次任务调度过程的所有状态,状态包括初始状态、正在执行、执行成功、执行失败、等待、终止、重新执行,任务发布消息对象还记录了任务调度过程信息,任务调度过程信息包括但不限于:关联的流程实例、运行节点,任务发布的时间,接收到任务执行结果的时间,任务在哪个执行节点上执行,执行的开始、结束时间,执行的结果、异常信息。
5.根据权利要求1所述的基于BPMN标准的分布式任务异步调度和监控的系统,其特征在于,监控模块包括:
监控单元,用于监控作业、任务的执行状况;
报警单元,用于警示作业调度中发生的异常状况;
统计单元,用于统计作业调度过程相关的数据信息;
人工干预单元,用于提供人工介入功能。
6.根据权利要求1所述的基于BPMN标准的分布式任务异步调度和监控的系统,其特征在于,执行端子系统维护一线程池,执行端子系统从订阅的主题中获取任务发布消息并解析,提取任务具体信息,使用对应的执行器执行任务,创建一个线程任务并置于线程池中运行。
7.根据权利要求1所述的基于BPMN标准的分布式任务异步调度和监控的系统,其特征在于,执行端子系统包括:
Shell执行器,用于从任务信息中获取shell文件路径,再通过java调用执行shell脚本;
python执行器,用于从任务信息中获取python代码,再通过java调用python代码;
plsql执行器,用于从任务信息中获取数据源连接信息和存储过程的名称,再和数据源建立连接,通过java调用存储过程;
service执行器,用于从任务信息中获取服务的url,再使用httpclient调用服务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910671811.7A CN110377413B (zh) | 2019-07-24 | 2019-07-24 | 基于bpmn标准的分布式任务异步调度和监控的系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910671811.7A CN110377413B (zh) | 2019-07-24 | 2019-07-24 | 基于bpmn标准的分布式任务异步调度和监控的系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110377413A CN110377413A (zh) | 2019-10-25 |
CN110377413B true CN110377413B (zh) | 2023-03-03 |
Family
ID=68255546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910671811.7A Active CN110377413B (zh) | 2019-07-24 | 2019-07-24 | 基于bpmn标准的分布式任务异步调度和监控的系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110377413B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026809B (zh) * | 2019-12-03 | 2024-04-19 | 浪潮软件股份有限公司 | 一种调度流程分布式执行系统 |
CN111290868B (zh) * | 2020-03-02 | 2024-03-15 | 中国邮政储蓄银行股份有限公司 | 任务处理方法、装置和系统以及流程引擎 |
CN111522711B (zh) * | 2020-04-17 | 2023-05-05 | 北京奇艺世纪科技有限公司 | 一种数据监控处理系统、方法、执行端、监控端及电子设备 |
CN111553545B (zh) * | 2020-07-13 | 2020-10-27 | 四川新网银行股份有限公司 | 一种优化批量任务调度依赖的方法 |
CN111949326A (zh) * | 2020-08-03 | 2020-11-17 | 杭州当虹科技股份有限公司 | 一种基于Activiti的微服务工作流方法 |
CN112231078A (zh) * | 2020-09-21 | 2021-01-15 | 上海容易网电子商务股份有限公司 | 一种自动化营销系统分布式任务调度的实现方法 |
CN112422331A (zh) * | 2020-11-06 | 2021-02-26 | 平安证券股份有限公司 | 运维操作节点监控方法及相关设备 |
CN113065030A (zh) * | 2021-01-11 | 2021-07-02 | 上海金融期货信息技术有限公司 | 一种基于有向无环图的作业控制系统 |
CN112988705B (zh) * | 2021-03-08 | 2022-04-15 | 厦门靠谱云股份有限公司 | 一种可用于企业级生产的数据中台构建方法 |
CN113590216B (zh) * | 2021-07-19 | 2024-03-19 | 上海淇玥信息技术有限公司 | 一种定时任务集中管理方法、装置和电子设备 |
CN113468212A (zh) * | 2021-07-21 | 2021-10-01 | 华青融天(北京)软件股份有限公司 | 事件执行的方法、装置及电子设备 |
CN113641139B (zh) * | 2021-08-05 | 2022-11-25 | 珠海格力电器股份有限公司 | 可实现异步编程的系统、控制器、控制系统、存储介质 |
CN113626167A (zh) * | 2021-08-11 | 2021-11-09 | 京东科技控股股份有限公司 | 线程控制方法、装置、设备及计算机存储介质 |
CN114611917A (zh) * | 2022-03-10 | 2022-06-10 | 山东福生佳信科技股份有限公司 | 一种人员管理系统 |
CN115440341B (zh) * | 2022-11-09 | 2023-03-10 | 神州医疗科技股份有限公司 | 基于bpmn标准的放疗业务流程自动化方法及系统 |
CN116450305B (zh) * | 2023-06-16 | 2023-09-12 | 北京长亭科技有限公司 | 基于分布式任务调度的soar平台组件执行方法与装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102650953A (zh) * | 2011-02-28 | 2012-08-29 | 北京航空航天大学 | 并发优化的bpmn组合服务执行引擎及方法 |
CN105630589A (zh) * | 2014-11-24 | 2016-06-01 | 航天恒星科技有限公司 | 分布式流程调度系统及流程调度、执行方法 |
CN106325887A (zh) * | 2016-09-19 | 2017-01-11 | 深圳市彬讯科技有限公司 | 一种基于Activiti的业务流程管理方法 |
CN106557860A (zh) * | 2015-09-30 | 2017-04-05 | 腾讯科技(深圳)有限公司 | 一种流程处理方法及装置 |
CN108563425A (zh) * | 2018-02-27 | 2018-09-21 | 北京邮电大学 | 一种事件驱动的多流程协同处理系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10354212B2 (en) * | 2013-02-07 | 2019-07-16 | Software Ag | Techniques for business process driven service oriented architecture (SOA) governance |
US9331943B2 (en) * | 2013-09-10 | 2016-05-03 | Robin Systems, Inc. | Asynchronous scheduling informed by job characteristics and anticipatory provisioning of data for real-time, parallel processing |
-
2019
- 2019-07-24 CN CN201910671811.7A patent/CN110377413B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102650953A (zh) * | 2011-02-28 | 2012-08-29 | 北京航空航天大学 | 并发优化的bpmn组合服务执行引擎及方法 |
CN105630589A (zh) * | 2014-11-24 | 2016-06-01 | 航天恒星科技有限公司 | 分布式流程调度系统及流程调度、执行方法 |
CN106557860A (zh) * | 2015-09-30 | 2017-04-05 | 腾讯科技(深圳)有限公司 | 一种流程处理方法及装置 |
CN106325887A (zh) * | 2016-09-19 | 2017-01-11 | 深圳市彬讯科技有限公司 | 一种基于Activiti的业务流程管理方法 |
CN108563425A (zh) * | 2018-02-27 | 2018-09-21 | 北京邮电大学 | 一种事件驱动的多流程协同处理系统 |
Non-Patent Citations (3)
Title |
---|
António M. Rosado da Cruz ; Estrela Ferreira Cruz.On the Design of a Platform for Traceability in the Fishery and Aquaculture Value Chain.《IEEE Xplore》.2019,全文. * |
基于Activiti的卫星地面站流程调度应用框架;党菲等;《计算机测量与控制》;20121225;第20卷(第12期);全文 * |
面向服务架构中的服务分类及其应用;黄小庆等;《计算机集成制造系统》;20090915;第15卷(第09期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110377413A (zh) | 2019-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110377413B (zh) | 基于bpmn标准的分布式任务异步调度和监控的系统 | |
WO2020237797A1 (zh) | 一种微服务框架下动态配置管理方法及系统 | |
CN109684057B (zh) | 任务处理方法、装置和存储介质 | |
CN108418851B (zh) | 策略发布系统、方法、装置及设备 | |
CN108076098A (zh) | 一种业务处理方法及系统 | |
US20090204578A1 (en) | Targeted queries using an oma dm protocol | |
TW200525938A (en) | Remote system administration using command line environment | |
CN111695827B (zh) | 业务流程的管理方法、装置、电子设备及存储介质 | |
CN111064626B (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
CN111858007A (zh) | 一种基于消息中间件的任务调度方法方法和装置 | |
US9380001B2 (en) | Deploying and modifying a service-oriented architecture deployment environment model | |
CN111784318A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110868309A (zh) | Vnfm中资源处理的方法、装置及计算机存储介质 | |
CN111897643A (zh) | 线程池配置系统、方法、装置和存储介质 | |
CN113467782B (zh) | 一种确定业务流程的方法、装置及设备 | |
CN112379989B (zh) | 一种定时任务进程与队列服务进程管理系统及方法 | |
CN111538525B (zh) | 一种用于程序发布的快速迭代与回滚方法 | |
CN111610992B (zh) | 部署组件更新处理方法、装置及存储介质 | |
CN113434323A (zh) | 数据中台的任务流控制方法及相关装置 | |
CN114003203B (zh) | 一种活动计数变量的维护方法、装置、设备及可读介质 | |
CN112418796B (zh) | 子流程任务节点激活方法、装置、电子设备及存储介质 | |
US9059992B2 (en) | Distributed mobile enterprise application platform | |
CN114253534A (zh) | 一种实时数据处理方法和系统 | |
CN113704355A (zh) | 数据同步方法、电子设备及存储介质 | |
CN113794997A (zh) | 基于区块链及5g消息的接口文档管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |