CN114238703A - 事件流程编排方法、装置及应用 - Google Patents
事件流程编排方法、装置及应用 Download PDFInfo
- Publication number
- CN114238703A CN114238703A CN202111676873.0A CN202111676873A CN114238703A CN 114238703 A CN114238703 A CN 114238703A CN 202111676873 A CN202111676873 A CN 202111676873A CN 114238703 A CN114238703 A CN 114238703A
- Authority
- CN
- China
- Prior art keywords
- flow
- node
- service
- current
- previous
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9035—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提出了一种事件流程编排方法、装置及应用,其中,所述方法采用对原始流程文件进行拆分,并重新组装成流程组件只存储当前流程节点的业务信息以及上一流程节点、下一流程节点的方式形成可以顺序执行的执行链,不仅减少了在数据流转中所需流转的数据量,而且在执行链的任意环节可以进行链路的重新拆分和组合,实现了流转流程节点动态扩展的效果。
Description
技术领域
本申请涉及计算机应用技术领域,特别是涉及一种事件流程编排方法、装置及应用。
背景技术
城市管理事件是在城市中非固定、且与人的活动行为密切相关的问题,类别可大致区分为两类,一类具有法律效力、另一类不具有法律效力但是影响人们的正常生活。比如占道经营、张贴小广告等属于不需要法律法规参与的事件。擅自在路灯设施上设置广告牌或者其他挂浮物等是需要执法机构参与进行的。这两类事件都需要不同部门的不同人员进行流程性质的审批操作,具有前后依赖的关系,只有上一步操作完成才能进行下一步的操作。此外,城市管理事件的数据量大,不同层面角度进行统计的结果是不同的,以一个地级市统计来计算,每月甚至可以达到几万的数量,逐月累积下来,数据量甚至有可能呈指数形式的增长。开源工作流引擎使用的都是MySQL数据库,如此庞大数据量的流程数据存储在MySQL数据库中,流程数据的数据量根据流程节点数量的不同,有可能是业务数据的几倍甚至几十倍,无论是对性能或者磁盘容量来说都是一个非常大的负担。
而目前多数政府信息化系统采用的流程引擎是开源的Activiti引擎或者Flowable引擎,长远发展角度考虑都会受到掣肘,比如遭受黑客攻击等。并且传统的流程引擎属于高度抽象的公用技术,不能完美贴合业务。并且由于流程引擎的先天限制性,只能根据已经定义好的流转路径进行流转,故在实现不同的业务方提出的需求的时候会受到相当大的限制。
综上,针对目前事件流程编排方法中流转的数据量大、已定义好的流转路径和流转流程节点无法动态扩展的问题,目前尚未得到能实现动态扩展流程编排以及轻量级的数据进行流转目的的有效解决方案。
发明内容
本申请实施例提供了一种事件流程编排方法、装置及应用,针对现有的事件流程编排方法流转的数据量大、已定义好的流转路径和流转流程节点无法动态扩展的问题,实现了高并发、动态流转的有益效果。
第一方面,本申请实施例提供了一种事件流程编排方法,所述方法包括:获取原始流程文件,从所述原始流程文件中拆分得到流程节点、流程连接线以及流程节点的业务信息;将每一所述流程节点以链表存储,得到每一所述流程节点对应的流程组件,将所有所述流程组件组合形成流程模板,其中,所述流程组件包括当前流程节点key,当前流程节点的业务信息、上一流程节点key、下一流程节点key以及指向下一流程节点的流程连接线;通过所述流程模板生成至少一实例对象,在每一所述实例对象中遍历任一未被处理的所述流程组件作为选定节点,根据所述选定节点中的所述上一流程节点key获取上一流程节点对应的上一业务结果;结合所述上一业务结果和所述选定节点的所述业务信息办理所述选定节点的业务内容,得到当前业务结果;根据所述选定节点中的所述下一流程节点key以及所述流程连接线向所述下一流程节点流转以办理所述下一流程节点对应的业务内容。
在其中一些实施例中,所述业务信息包括业务参数,在每一所述当前流程节点中根据所述业务参数办理业务内容,得到办理结果。
在其中一些实施例中,每次获取所述办理结果后,记录办理时间,将所述当前流程节点的所述当前流程节点key、所述办理结果以及所述办理时间存储于数据库中,其中,任一所述流程组件根据所述当前流程节点key从所述数据库中获取所述办理结果以及所述办理时间。
在其中一些实施例中,业务信息还包括流程节点标签和/或监听器,其中,流程节点标签用于记录对应流程节点的执行内容,监听器包括执行监听器和任务监听器,任务监听器作用在流程节点上,执行监听器作用在流程节点或流程连接线上。
在其中一些实施例中,所述方法还包括:获取每一所述实例对象对应的开始流程节点,以所述开始流程节点向下流转,当流转至结束流程节点则调用结束标签对应的监听器向业务系统发送流程结束消息,将所述实例对象的状态设置为结束状态。
在其中一些实施例中,若所述当前流程节点向下流转的所述下一流程节点key的个数为多个,查询所述当前流程节点的流程节点标签,根据所述流程节点标签的标识在所述下一流程节点key中选择目标流程节点进行流转。
在其中一些实施例中,当任一所述当前流程节点指向的所述下一流程节点的个数为多个时,将多个所述下一流程节点key以数组存储。
在其中一些实施例中,所述方法还包括:在所述流程模板中新增、删除所述流程组件或者修改任意所述流程组件的流转顺序。
第二方面,本申请实施例提供了一种事件流程编排装置,包括:数据拆分模块,用于获取原始流程文件,从所述原始流程文件中拆分得到流程节点、流程连接线以及流程节点的业务信息;数据重组模块,用于将每一所述流程节点以链表存储,得到每一所述流程节点对应的流程组件,将所有所述流程组件组合形成流程模板,其中,所述流程组件包括当前流程节点key,当前流程节点的业务信息、上一流程节点key、下一流程节点key以及指向下一流程节点的流程连接线;上一结果获取模块,用于通过所述流程模板生成至少一实例对象,在每一所述实例对象中遍历任一未被处理的所述流程组件作为选定节点,根据所述选定节点中的所述上一流程节点key获取上一流程节点对应的上一业务结果;当前业务办理模块,用于结合所述上一业务结果和所述选定节点的所述业务信息办理所述选定节点的业务内容,得到当前业务结果;流转模块,用于根据所述选定节点中的所述下一流程节点key以及所述流程连接线向所述下一流程节点流转以办理所述下一流程节点对应的业务内容。
第三方面,本申请实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行第一方面任一项所述的事件流程编排方法。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序包括用于控制过程以执行过程的程序代码,所述过程包括根据第一方面任一项所述的事件流程编排方法。
本申请实施例的主要贡献和创新点如下:
本申请实施例采用对原始流程文件进行拆分,并重新组装成流程组件只存储当前流程节点的业务信息以及上一流程节点、下一流程节点的方式形成可以顺序执行的执行链,不仅减少了在数据流转中所需流转的数据量,而且在执行链的任意环节可以进行链路的重新拆分和组合,实现了流转流程节点动态扩展的效果。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请第一实施例的事件流程编排方法的主要步骤流程图。
图2是根据本申请第一实施例的事件流程编排方法的初始流程编排示例图。
图3是根据本申请第二实施例的事件流程编排装置的结构框图。
图4是根据本申请第三实施例的电子装置的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
本方案目的在于通过对原始流程文件进行拆分,并重新组装成流程组件,每个流程组件只存储当前流程节点的业务信息以及上一流程节点、下一流程节点,多个流程组件形成可以顺序执行的执行链,使得执行链的任意环节都可以进行链路的重新拆分与组合,组合之后依然可以使用之前的定义信息进行新流程的流转。
由于本方案针对需要多级审批的事件流程,因此在每一步审批时需要获取前一步的审批结果,导致整个审批流程图实际达到的数据量是原始流程数据的几倍甚至几十倍。
换言之,现有的审批流程中将上一流程节点的数据传输到下一流程节点中,使得流转结束后达到的数据量呈指数形式的增长。基于此,本方案通过在流程组件中存储上一流程节点key和下一流程节点key,并通过上一流程节点key从数据库中获取具体的上一业务结果,处理完成后根据下一流程节点key流转给下一流程节点,从而避免了数据重复地在任务中流转造成流程数据的数据量太大的问题。
图1是根据本申请第一实施例的事件流程编排方法的主要步骤流程图。
为实现该目的,如图1所示,事件流程编排方法主要包括如下的步骤S101至步骤S105。
步骤S101、获取原始流程文件,从所述原始流程文件中拆分得到流程节点、流程连接线以及流程节点的业务信息。
在本步骤中,原始流程文件可以由服务端通过拖拽组件组装得到,具体地,服务端可以通过拖拽流程节点、流程连接线、以及流程节点的业务信息等配置生成BPMN文件,将BPMN文件转换成JSON格式的原始流程文件。
该步骤中可以为原始流程文件生成一个随机UUID作为key来标识原始流程文件的唯一性,并根据key将原始流程文件存储到Redis服务器中。为了便于流程出错时进行重新解析重新定义流程,通过消息队列将原始流程文件存储到MySQL数据库中。
通过消息队列解析原始流程文件,得到多个流程节点、多个流程连接线以及多个业务信息,并将解析得到的数据存储于MySQL数据库中,作为后续的服务发布、流程启动、任务完成或对外暴露服务等接口的参数调用的主数据备份。
在其中一个实施例中,所述业务信息包括业务参数。业务参数可以是服务端针对每个流程节点进行配置生成的,例如,业务参数可以记录具体城管事件:谁在什么时候干了什么事情。当流程节点获取业务参数,可以对具体城管事件进行审批,并得到审批结果。
针对上述步骤S101,本方案通过对原始流程文件进行保存以及拆分后存储,将主数据进行备份,在后续操作中直接根据拆分后的流程节点、流程连接线以及流程节点的业务信息进行组装,相比于现有技术,本步骤无需将整体的原始流程文件在流程节点间流转,因此产生的数量更少。
步骤S102、将每一所述流程节点以链表存储,得到每一所述流程节点对应的流程组件,将所有所述流程组件组合形成流程模板,其中,所述流程组件包括当前流程节点key,当前流程节点的业务信息、上一流程节点key、下一流程节点key以及指向下一流程节点的流程连接线。
在本步骤中,将拆分出的流程节点以链表存储,链表包括pre、current、next,每一次流转,当前流程节点就成为了下一流程节点的pre流程节点。
如图2所示,每一个流程模板在服务端呈现为一个开始流程节点、一个结束流程节点以及在开始流程节点和结束流程节点之间的多个任务流程节点,相邻流程节点之间通过有向箭头连接,有的流程节点被多个流程节点指向,有的流程节点指向多个流程节点。因此本步骤中将数据重新组装的目的是可以知道当前流程节点由具体的那个流程节点指向,以及当前流程节点之后会流转到哪些流程节点。
在该步骤中,当任一所述当前流程节点指向的所述下一流程节点的个数为多个时,将多个所述下一流程节点key以数组存储。具体地,每个下一流程节点key表示数组内的一个元素,当链表结构向下移动一下,访问数组内的元素。
若所述当前流程节点向下流转的所述下一流程节点key的个数为多个,查询所述当前流程节点的流程节点标签,根据所述流程节点标签的标识在所述下一流程节点key中选择目标流程节点进行流转。
换言之,本步骤通过将所有下一流程节点key存储于流程组件的下一流程节点key数组中使得当前流程节点向下流转的流转范围限定在数组内的元素中,在具体选择哪个目标流程节点时,可以通过流程节点标签的标识来选择,或者,也可以通过业务端根据当前执行结果给出的下一流转方向来选择目标流程节点。而本步骤区别于现有技术的点在于:当前流程节点得到的当前业务结果无需直接传输给下一流程节点,避免了流转时积累过多的数据量。
此外,采用链表结构进行流转时,能够在所述流程模板中新增、删除所述流程组件或者修改任意所述流程组件的流转顺序。
例如,当需要增加当前流程节点之后增加一流程节点,只需要将当前流程节点的next流程节点替换为新增的流程节点key,并将流程节点key指向当前流程节点原next流程节点,并将原next流程节点的pre流程节点替换为流程节点key即可。
也就是说,若业务需求需要在流程模板中新增某一流程组件,只需要对原有的链路进行重组,重组后仍可以使用之前的定义信息进行新流程的流转,从而实现了能够动态扩展的效果。
相应地,当需要删除当前流程节点时,只需要将上一流程节点的next指向下一流程节点,并将下一流程节点的pre指向上一流程节点的next即可实现对不必要的流程节点的删除。
当然,在执行链的任意环节还能进行链路的拆分和重组,从而修改流转顺序,使得流程模板能够实现不同业务方提出的个性化需求。
针对上述步骤S102,本方案通过将流程节点重新组合,得到流程组件,将流程组件以链式存储为包含上一流程节点、当前流程节点、下一流程节点的结构,使得流程模板组成一条顺序执行的执行链。执行链将各个流程节点变为数据包,并指定流程节点上下文关联关系,通过获取上下文中参数与结果数据从而进行数据的流转。实现了高内聚低耦合,且更加的轻量化。
步骤S103、通过所述流程模板生成至少一实例对象,在每一所述实例对象中遍历任一未被处理的所述流程组件作为选定节点,根据所述选定节点中的所述上一流程节点key获取上一流程节点对应的上一业务结果。
在本步骤中,流程模板是指根据已经预先配置好的完整流程,在实际业务中相同时间内会有不同的案件需要根据流程模板进行流转,因此当需要处理多个案件时,为每个流程模板生成多个实例对象,每个案件在对应的实例对象中流转。为了清楚知道案件进展具体在哪个实例对象的哪个流程节点上。为流程对象、流程节点都分配key值,通过key值可以唯一确定案件的进展情况。
在本步骤中,业务结果包括办理结果以及办理时间,每次获取所述办理结果后,记录办理时间,将所述当前流程节点的所述当前流程节点key、所述办理结果以及所述办理时间存储于数据库中,其中,任一所述流程组件根据所述当前流程节点key从所述数据库中获取所述办理结果以及所述办理时间。
步骤S104、结合所述上一业务结果和所述选定节点的所述业务信息办理所述选定节点的业务内容,得到当前业务结果。
需要说明的是,每次完成当前流程节点的审批后,对于办理结果和办理时间是否需记录是可选的。故可预设是否需要对某个流程节点的办理结果或者办理时间进行记录,若某流程节点的办理结果或者办理时间会与之后的审批流程产生联系,相应地记录下来。
针对上述步骤S103-S104,本方案通过执行链上一流程节点key从数据库中获取上一流程节点key的上一业务结果,并根据上一流程节点结果结合当前流程节点的业务信息进行办理,得到当前业务结果。
步骤S105、根据所述选定节点中的所述下一流程节点key以及所述流程连接线向所述下一流程节点流转以办理所述下一流程节点对应的业务内容。
在本步骤中,服务端可以根据自身的流转逻辑直接流转至下一流程节点办理对应的业务内容。此外,也可以通过HTTP服务或者消息队列服务暴露方法给业务系统进行流程的部署、启动、流程流转及流程回退等操作。
如图2所示,环卫科处置的下一流程节点包括委办局受理以及并行网关,可以由业务系统执行具体是回退还是流转操作,使得当前流程节点可以流转到指定的目标流程节点。
示例性的,任务的流转由开始流程节点一直向下流转至结束流程节点,在Redis服务器中查询流程组件中每一实例对象对应的开始流程节点,以开始流程节点向下流转,依次查询流程节点,直至流转至结束流程节点后任务结束,调用结束标签对应的监听器向业务系统发送流程结束消息,将所述实例对象的状态设置为结束状态。
需要说明的是,在本方案中流程节点标签一部分是预设在系统中初始数据,另一部分可以是用户动态增加的扩展数据。初始数据是预设在系统中的默认实现,用户增加的扩展数据可以设计对应的实现,也可以不进行实现。
标签流程节点根据作用不同可以包含多个,例如结束标签是在用于提示当前流程节点为结束流程节点。此外,标签对应的具体含义还可以如表1所示:
表1
此外,业务信息还包括监听器,监听器包括执行监听器和任务监听器,任务监听器作用在流程节点上,执行监听器作用在流程节点或流程连接线上。
具体地,可以根据业务需求编写监听器,监听消息队列中的流程不熟时间、流程流转事件以及流程挂起时间等,并解析流程流转事件中所包含的流程节点标签,执行流程节点标签对应的流转组件来完成单流程节点回退、并行网关流程节点回退、相容网关流程节点回退等操作。
以下举一示例对本方案提供的事件流程编排方法进行说明。
首先,服务器端服务的准备工作,部署Redis单机服务用于存储解析后流程组件、部署Kafka单机服务用于流程流转过程中消息的交互、部署流程流转解析的服务用于流程流转过程中查询流程定义信息及流程节点之后的流转操作,所有服务器开启后测试网络通信情况。部署使用VUE编写的浏览器端服务,并配置Nginx服务器进行反向代理及进行浏览器端资源的动静分离。
然后,浏览器端访问流程编排服务,根据业务编排完整流程(其中包括开始流程节点、结束流程节点、用户任务流程节点、网关流程节点、流程连接线等)并配置对应的流程节点标签,如消息通知标签、回退标签等,配置流程节点对应的数据结构、配置当前系统流转还是需要等待外部系统调用结果返回后继续流转等,这些配置的信息统称为业务信息,配置完成之后点击保存按钮,将生产的BPMN文件转换为JSON格式并将数据传输到服务端进行流程的解析。
服务端接收到请求之后做以下工作:
1)先将原始数据在Redis服务器中存储一份。
2)对浏览器传输过来的JSON文件进行解析。以任务流程节点为例,首先获取到JSON文件中定义为UserTask的JSON对象,获取其中表层的KEY和VALUE,并进行深度循环遍历获取其中所有的KEY和VALUE,重新定义HashMap将所有的KEY和VALUE平行存储在同一个级别,并定义名称为userTasks。使用相同的方式解析出标签属性、监听器属性、流程节点连接线等属性。
3)将第2步中定义好的所有HashMap重新序列化为JSON对象存储在Redis服务器中。重新序列化好的JSON对象可以称之为流程组件。
4)在MySQL数据库中存储第3步生成的全部流程组件信息,新增或提升相应的版本信息。全部流程信息组合起来可以称之为一个流程模板。
5)对流程模板进行部署操作,部署之后的模板就可以被业务系统调用进行流程的流转。
6)通过HTTP服务或者消息队列服务暴露方法给业务系统进行流程的部署、启动、流程流转及流程回退等操作。
接着,业务系统获取全部已不熟的流程模板,并根据流程模板key调用流程启动接口,生成流程实例以及流程实例key。实例启动之后会先去Redis服务器中的查询开始流程节点,使用消息队列发送消息让流程流转解析服务从开始流程节点自动向下流转一步,到达一个任务,此时任务流程节点会生成一个唯一的任务流程节点Key。上述流转操作完成之后,接口返回当前实例流程实例Key、任务流程节点Key,业务系统将返回信息保存下来,作为下一次流转的参数。
接着业务系统不停的调用任务流转接口,任务流转接口通过内置completeTask方法能够进行业务审批处理,并得到结果后存储于数据库中,每次处理完后流转到下一流程节点。流转过程中不断触发在引擎文件中各个流程节点或者连接线配置的对应的流程节点标签或者监听器直至流转到结束流程节点,给业务系统发送流程结束消息,业务系统设置本条任务的状态为结束状态。
综上,本申请实施例提供了一种事件流程编排方法,首先该方案将前后端分离,使得流转过程在服务端进行计算分析,服务端可以通过增加服务器硬件等多种方式,提高聚合计算能力,并将各个流程节点进行拆分进一步降低了流程节点与流程节点之间的耦合性,改善了计算效率并利于扩展。
另外,该方案中业务端为各个流程节点绑定不同的标签、绑定不同的页面渲染模板以及增加定制化的业务信息。当流转到对应的流程节点上,解析出对应的数据以及流程节点标签来完成对应业务的实现,并且在服务端的流程流转中把各个流程节点以链式存储,通过获取上下文中参数与结果数据从而进行数据的流转。
此外,本方案还引入了Redis服务,成倍的提升了流程流转过程中并发的性能,引入消息队列实现了各个组件模块之间的解耦,且随时可替换消息队列的具体实现,通过具体场景选择合适的消息队列。且Redis服务器及消息队列在横向扩展方面都变得非常的容易,对于运维的成本非常低。
图3是根据本申请的第二实施例的事件流程编排装置的结构框图。
如图3所示,本申请的一个实施例提出了一种事件流程编排装置,包括:
数据拆分模块301,用于获取原始流程文件,从所述原始流程文件中拆分得到流程节点、流程连接线以及流程节点的业务信息。
数据重组模块302,用于将每一所述流程节点以链表存储,得到每一所述流程节点对应的流程组件,将所有所述流程组件组合形成流程模板,其中,所述流程组件包括当前流程节点key,当前流程节点的业务信息、上一流程节点key、下一流程节点key以及指向下一流程节点的流程连接线。
上一结果获取模块303,用于通过所述流程模板生成至少一实例对象,在每一所述实例对象中遍历任一未被处理的所述流程组件作为选定节点,根据所述选定节点中的所述上一流程节点key获取上一流程节点对应的上一业务结果。
当前业务办理模块304,用于结合所述上一业务结果和所述选定节点的所述业务信息办理所述选定节点的业务内容,得到当前业务结果。
流转模块305,用于根据所述选定节点中的所述下一流程节点key以及所述流程连接线向所述下一流程节点流转以办理所述下一流程节点对应的业务内容。
图4是根据本申请实施例的电子装置的硬件结构示意图。
如图4所示,本申请一个实施例的电子装置,包括存储器404和处理器402,该存储器404中存储有计算机程序,该处理器402被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
具体地,上述处理器402可以包括中央处理器(CPU),或者特定集成电路(ApplicationSpecificIntegratedCircuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器404可以包括用于数据或指令的大容量存储器404。举例来说而非限制,存储器404可包括硬盘驱动器(HardDiskDrive,简称为HDD)、软盘驱动器、固态驱动器(SolidStateDrive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(UniversalSerialBus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器404可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器404可在数据处理装置的内部或外部。在特定实施例中,存储器404是非易失性(Non-Volatile)存储器。在特定实施例中,存储器404包括只读存储器(Read-OnlyMemory,简称为ROM)和随机存取存储器(RandomAccessMemory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(ProgrammableRead-OnlyMemory,简称为PROM)、可擦除PROM(ErasableProgrammableRead-OnlyMemory,简称为EPROM)、电可擦除PROM(ElectricallyErasableProgrammableRead-OnlyMemory,简称为EEPROM)、电可改写ROM(ElectricallyAlterableRead-OnlyMemory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(StaticRandom-AccessMemory,简称为SRAM)或动态随机存取存储器(DynamicRandomAccessMemory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器404(FastPageModeDynamicRandomAccessMemory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(ExtendedDateOutDynamicRandomAccessMemory,简称为EDODRAM)、同步动态随机存取内存(SynchronousDynamicRandom-AccessMemory,简称SDRAM)等。
存储器404可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器402所执行的可能的计算机程序指令。
处理器402通过读取并执行存储器404中存储的计算机程序指令,以实现上述实施例中的任意一种事件流程编排方法。
可选地,上述电子装置还可以包括传输设备406以及输入输出设备408,其中,该传输设备406和上述处理器402连接,该输入输出设备408和上述处理器402连接。
传输设备406可以用来经由一个网络接收或者发送数据。上述的网络具体实例可包括电子装置的通信供应商提供的有线或无线网络。在一个实例中,传输设备包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备406可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
输入输出设备408用于输入或输出信息。在本实施例中,输入的信息可以是完整流程图等,输出的信息可以是各流程节点的处理结果等。
可选地,在本实施例中,上述处理器402可以被设置为通过计算机程序执行以下步骤:
S101、获取原始流程文件,从所述原始流程文件中拆分得到流程节点、流程连接线以及流程节点的业务信息。
S102、将每一所述流程节点以链表存储,得到每一所述流程节点对应的流程组件,将所有所述流程组件组合形成流程模板,其中,所述流程组件包括当前流程节点key,当前流程节点的业务信息、上一流程节点key、下一流程节点key以及指向下一流程节点的流程连接线。
S103、通过所述流程模板生成至少一实例对象,在每一所述实例对象中遍历任一未被处理的所述流程组件作为选定节点,根据所述选定节点中的所述上一流程节点key获取上一流程节点对应的上一业务结果。
S104、结合所述上一业务结果和所述选定节点的所述业务信息办理所述选定节点的业务内容,得到当前业务结果。
S105、根据所述选定节点中的所述下一流程节点key以及所述流程连接线向所述下一流程节点流转以办理所述下一流程节点对应的业务内容。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
通常,各种实施例可以以硬件或专用电路、软件、逻辑或其任何组合来实现。本发明的一些方面可以以硬件来实现,而其他方面可以以可以由控制器、微处理器或其他计算设备执行的固件或软件来实现,但是本发明不限于此。尽管本发明的各个方面可以被示出和描述为框图、流程图或使用一些其他图形表示,但是应当理解,作为非限制性示例,本文中描述的这些框、装置、系统、技术或方法可以以硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备或其某种组合来实现。
本发明的实施例可以由计算机软件来实现,该计算机软件由移动设备的数据处理器诸如在处理器实体中可执行,或者由硬件来实现,或者由软件和硬件的组合来实现。包括软件例程、小程序和/或宏的计算机软件或程序(也称为程序产品)可以存储在任何装置可读数据存储介质中,并且它们包括用于执行特定任务的程序指令。计算机程序产品可以包括当程序运行时被配置为执行实施例的一个或多个计算机可执行组件。一个或多个计算机可执行组件可以是至少一个软件代码或其一部分。另外,在这一点上,应当注意,如图中的逻辑流程的任何框可以表示程序步骤、或者互连的逻辑电路、框和功能、或者程序步骤和逻辑电路、框和功能的组合。软件可以存储在诸如存储器芯片或在处理器内实现的存储块等物理介质、诸如硬盘或软盘等磁性介质、以及诸如例如DVD及其数据变体、CD等光学介质上。物理介质是非瞬态介质。
本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (11)
1.一种事件流程编排方法,其特征在于,包括以下步骤:
获取原始流程文件,从所述原始流程文件中拆分得到流程节点、流程连接线以及流程节点的业务信息;
将每一所述流程节点以链表存储,得到每一所述流程节点对应的流程组件,将所有所述流程组件组合形成流程模板,其中,所述流程组件包括当前流程节点key,当前流程节点的业务信息、上一流程节点key、下一流程节点key以及指向下一流程节点的流程连接线;
通过所述流程模板生成至少一实例对象,在每一所述实例对象中遍历任一未被处理的所述流程组件作为选定节点,根据所述选定节点中的所述上一流程节点key获取上一流程节点对应的上一业务结果;
结合所述上一业务结果和所述选定节点的所述业务信息办理所述选定节点的业务内容,得到当前业务结果;
根据所述选定节点中的所述下一流程节点key以及所述流程连接线向所述下一流程节点流转以办理所述下一流程节点对应的业务内容。
2.根据权利要求1所述的事件流程编排方法,其特征在于,所述业务信息包括业务参数,在每一所述当前流程节点中根据所述业务参数办理业务内容,得到办理结果。
3.根据权利要求2所述的事件流程编排方法,其特征在于,每次获取所述办理结果后,记录办理时间,将所述当前流程节点的所述当前流程节点key、所述办理结果以及所述办理时间存储于数据库中,其中,任一所述流程组件根据所述当前流程节点key从所述数据库中获取所述办理结果以及所述办理时间。
4.根据权利要求2所述的事件流程编排方法,其特征在于,业务信息还包括流程节点标签和/或监听器,其中,流程节点标签用于记录对应流程节点的执行内容,监听器包括执行监听器和任务监听器,任务监听器作用在流程节点上,执行监听器作用在流程节点或流程连接线上。
5.根据权利要求4所述的事件流程编排方法,其特征在于,所述方法还包括:获取每一所述实例对象对应的开始流程节点,以所述开始流程节点向下流转,当流转至结束流程节点则调用结束标签对应的监听器向业务系统发送流程结束消息,将所述实例对象的状态设置为结束状态。
6.根据权利要求4所述的事件流程编排方法,其特征在于,若所述当前流程节点向下流转的所述下一流程节点key的个数为多个,查询所述当前流程节点的流程节点标签,根据所述流程节点标签的标识在所述下一流程节点key中选择目标流程节点进行流转。
7.根据权利要求1所述的事件流程编排方法,其特征在于,当任一所述当前流程节点指向的所述下一流程节点的个数为多个时,将多个所述下一流程节点key以数组存储。
8.根据权利要求1所述的事件流程编排方法,其特征在于,所述方法还包括:在所述流程模板中新增、删除所述流程组件或者修改任意所述流程组件的流转顺序。
9.一种事件流程编排装置,其特征在于,包括:
数据拆分模块,用于获取原始流程文件,从所述原始流程文件中拆分得到流程节点、流程连接线以及流程节点的业务信息;
数据重组模块,用于将每一所述流程节点以链表存储,得到每一所述流程节点对应的流程组件,将所有所述流程组件组合形成流程模板,其中,所述流程组件包括当前流程节点key,当前流程节点的业务信息、上一流程节点key、下一流程节点key以及指向下一流程节点的流程连接线;
上一结果获取模块,用于通过所述流程模板生成至少一实例对象,在每一所述实例对象中遍历任一未被处理的所述流程组件作为选定节点,根据所述选定节点中的所述上一流程节点key获取上一流程节点对应的上一业务结果;
当前业务办理模块,用于结合所述上一业务结果和所述选定节点的所述业务信息办理所述选定节点的业务内容,得到当前业务结果;
流转模块,用于根据所述选定节点中的所述下一流程节点key以及所述流程连接线向所述下一流程节点流转以办理所述下一流程节点对应的业务内容。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至8任一项所述的事件流程编排方法。
11.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序包括用于控制过程以执行过程的程序代码,所述过程包括根据权利要求1至8任一项所述的事件流程编排方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111676873.0A CN114238703A (zh) | 2021-12-31 | 2021-12-31 | 事件流程编排方法、装置及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111676873.0A CN114238703A (zh) | 2021-12-31 | 2021-12-31 | 事件流程编排方法、装置及应用 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114238703A true CN114238703A (zh) | 2022-03-25 |
Family
ID=80745635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111676873.0A Pending CN114238703A (zh) | 2021-12-31 | 2021-12-31 | 事件流程编排方法、装置及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114238703A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185425A (zh) * | 2023-03-23 | 2023-05-30 | 苏州峰之鼎信息科技有限公司 | 基于节点组合的事件流程编排方法、装置、设备及介质 |
CN116521400A (zh) * | 2023-07-04 | 2023-08-01 | 京东科技信息技术有限公司 | 文章信息处理方法、装置、存储介质及电子设备 |
-
2021
- 2021-12-31 CN CN202111676873.0A patent/CN114238703A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185425A (zh) * | 2023-03-23 | 2023-05-30 | 苏州峰之鼎信息科技有限公司 | 基于节点组合的事件流程编排方法、装置、设备及介质 |
CN116185425B (zh) * | 2023-03-23 | 2024-02-23 | 苏州峰之鼎信息科技有限公司 | 基于节点组合的事件流程编排方法、装置、设备及介质 |
CN116521400A (zh) * | 2023-07-04 | 2023-08-01 | 京东科技信息技术有限公司 | 文章信息处理方法、装置、存储介质及电子设备 |
CN116521400B (zh) * | 2023-07-04 | 2023-11-03 | 京东科技信息技术有限公司 | 文章信息处理方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10360257B2 (en) | System and method for image annotation | |
CN114238703A (zh) | 事件流程编排方法、装置及应用 | |
CN103227836B (zh) | 离线下载方法和离线下载服务器 | |
CN108563697B (zh) | 一种数据处理方法、装置和存储介质 | |
CN113900810A (zh) | 分布式图处理方法、系统及存储介质 | |
CN104199863A (zh) | 存储设备上的文件的查找方法、装置及路由器 | |
US20200153889A1 (en) | Method for uploading and downloading file, and server for executing the same | |
CN110557420A (zh) | 一种独立子链的运行方法及系统 | |
CN103593215A (zh) | 用于信息处理系统映像网络传递的系统和方法 | |
CN113409047B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
US10506392B1 (en) | Stream-processing of telecommunication diameter event records | |
CN109753424B (zh) | Ab测试的方法和装置 | |
CN110460668B (zh) | 一种文件上传方法、装置、计算机设备和存储介质 | |
CN108228432A (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
CN113918129A (zh) | 前后端分离的接口请求处理方法和装置 | |
CN113312355A (zh) | 一种数据管理的方法和装置 | |
CN115409507A (zh) | 区块处理方法、区块处理装置、计算机设备及存储介质 | |
CN112363838A (zh) | 数据处理方法及装置、存储介质、电子装置 | |
CN115576973B (zh) | 一种业务部署方法、装置、计算机设备和可读存储介质 | |
CN112988738A (zh) | 用于区块链的数据分片方法和装置 | |
CN113392081B (zh) | 数据处理系统及方法 | |
CN112817980B (zh) | 一种数据索引处理方法、装置、设备及存储介质 | |
CN104462235A (zh) | 一种基于Restful Web Service的物联网通用事件服务机制 | |
CN112235367B (zh) | 一种实体行为关系消息订阅方法、系统、终端及存储介质 | |
CN113407491A (zh) | 数据处理方法及装置 |
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 |