CN114723397A - 一种流程执行方法及装置 - Google Patents
一种流程执行方法及装置 Download PDFInfo
- Publication number
- CN114723397A CN114723397A CN202210316348.6A CN202210316348A CN114723397A CN 114723397 A CN114723397 A CN 114723397A CN 202210316348 A CN202210316348 A CN 202210316348A CN 114723397 A CN114723397 A CN 114723397A
- Authority
- CN
- China
- Prior art keywords
- executed
- node
- flow
- operation result
- execution module
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
-
- 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/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Entrepreneurship & Innovation (AREA)
- Operations Research (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Quality & Reliability (AREA)
- Marketing (AREA)
- Multimedia (AREA)
- Economics (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本说明书实施例公开了一种流程执行方法及装置。所述方法包括:在接收到触发事件的情况下,确定用于处理所述触发事件的待执行流程;流程模块获取所述待执行流程,将其中的起始节点确定为待执行节点,并将该待执行节点发送到执行模块;循环执行以下步骤,直到所述待执行流程执行完成:所述执行模块解析当前的待执行节点,根据解析结果确定用于实现该节点功能的预设程序,并获取实现该节点功能所需的程序参数,基于所获取的程序参数运行所述预设程序,得到运行结果;所述流程模块获取所述运行结果,并根据所述运行结果,在所述待执行流程中确定新的待执行节点,并将新的待执行节点作为当前的待执行节点发送到所述执行模块。
Description
技术领域
本说明书实施例涉及领域计算机应用技术领域,尤其涉及一种流程执行方法及装置。
背景技术
目前,在许多机构中,通常会针对若干事件预先部署相应的处理流程。
例如,针对在某地发生灾害的突发事件,当地某公司需要一套完整的流程进行处理,通常可以包括:通知各部门主管商议办公形式、通知各部门员工是否在家办公、通知各部门员工汇报所在地的灾害情况等。
但这些流程往往是以文字形式记录,并且通过人工进行推进和反馈,执行效率低下。
发明内容
为了解决上述技术问题,本说明书实施例提供了一种流程执行方法及装置。技术方案如下所示。
一种流程执行方法,包括:
在接收到触发事件的情况下,确定用于处理所述触发事件的待执行流程;
流程模块获取所述待执行流程,将其中的起始节点确定为待执行节点,并将该待执行节点发送到执行模块;
循环执行以下步骤,直到所述待执行流程执行完成:
所述执行模块解析当前的待执行节点,根据解析结果确定用于实现该节点功能的预设程序,并获取实现该节点功能所需的程序参数,基于所获取的程序参数运行所述预设程序,得到运行结果;
所述流程模块获取所述运行结果,并根据所述运行结果,在所述待执行流程中确定新的待执行节点,并将新的待执行节点作为当前的待执行节点发送到所述执行模块。
一种流程执行装置,包括:
确定模块,用于在接收到触发事件的情况下,确定用于处理所述触发事件的待执行流程;
流程模块,用于获取所述待执行流程,将其中的起始节点确定为待执行节点,并将该待执行节点发送到执行模块;
所述执行模块,用于解析接收到的当前的待执行节点,根据解析结果确定用于实现该节点功能的预设程序,并获取实现该节点功能所需的程序参数,基于所获取的程序参数运行所述预设程序,得到运行结果;
所述流程模块,用于获取所述运行结果,并根据所述运行结果,在所述待执行流程中确定新的待执行节点,并将新的待执行节点作为当前的待执行节点发送到所述执行模块。
通过上述技术方案,可以通过计算设备执行流程,提高流程的执行效率。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书实施例提供的一种农民建房服务监管预案的流程图;
图2是本说明书实施例提供的一种流程执行方法的流程示意图;
图3是本说明书实施例提供的一种流程执行方法的原理示意图;
图4是本说明书实施例提供的一种进口冷链食品管控预案的流程图;
图5是本说明书实施例提供的一种找到专班信息的流程图;
图6是本说明书实施例提供的一种消息通知的流程图;
图7是本说明书实施例提供的一种找到部门负责人的流程图;
图8是本说明书实施例提供的一种交办人员的流程图;
图9是本说明书实施例提供的一种人员处置事件的流程图;
图10是本说明书实施例提供的一种流程执行装置的结构示意图;
图11是用于配置本说明书实施例方法的一种设备的结构示意图。
具体实施方式
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于公开的范围。
目前,在许多机构中,通常会针对若干事件预先部署相应的处理流程。
针对在某地发生灾害的突发事件,当地某公司需要一套完整的流程进行处理,通常可以包括:通知各部门主管商议办公形式、通知各部门员工是否在家办公、通知各部门员工汇报所在地的灾害情况等。
但这些流程往往是以文字形式记录,并且通过人工进行推进和反馈,执行效率低下。
在一种具体的示例中,城市治理各领域积累了大量的文字形式的预案。
针对城市治理中的污染治理,可以在发生严重污染事故后,根据文字形式的预案进行处理。文字形式的预案中,可以明确所涉及的机构和需要执行的任务。具体可以是通知环保局发生了严重污染事故,环保局需要派遣专员到现场确定污染严重等级和污染原因,之后环保局需要开会根据污染原因确定治理负责人和治理办法,处置本次污染事故。
文字形式的预案能够一定程度上牵引指导事件处置,权责清晰,流程相对固定,但同时存在管理粗放,协同处置效率低、回溯困难等问题,无有效的工具支撑城市精细化治理。
随着城市的快速发展,社会复杂程度逐年增高,决策难度加大,依靠经验性决策以及小范围的投票式决策不能满足城市精细化、科学化治理的需要。
而流程形式的预案让文字形式的预案数字化成为可能,可以灵活协同需处置一件事的组织、人员、资源,达到高效处置一件事的目的,很大程度缓解了以上问题,同时预案的版本管理和重构功能给流程再造带来助力。
如图1所示,为本说明书实施例提供的一种农民建房服务监管预案的流程图。
其中,通过不同渠道上报事件。例如,巡查发现、群众举报、部门转交等。
之后,综合信息指挥室负责确定事件类型后转交给大执法模块。
大执法模块从住建部门查询到房屋备案信息,转交给处置部门去核实。
处置部门确认现场情况后,如需要现场处置,由农业农村部门牵头,根据前一环节的情形和权利事项确认由那些部门到现场处置。例如,针对占道违建建筑,需要交通部门到现场处置。
因此,本说明书实施例提供一种流程执行方法。
在该方法中,可以在接收到触发事件后,通过计算设备自动化执行用于处理触发事件的流程。
在本方法的流程中,可以包括若干节点和若干节点之间的流转关系。
节点可以用于实现具体的功能,以实现对触发事件的处理。而节点之间的流转关系,可以用于确定需要执行的节点。具体可以包括,在某一节点执行完成之后,直接执行下一节点;也可以是在某一节点执行完成之后,根据判断条件确定是否执行下一节点;也可以是在多个节点都执行完成之后,根据执行情况确定是否执行下一节点等等。
计算设备可以针对节点进行解析,通过程序实现对应的功能,还可以通过程序解析节点之间的流转关系,确定下一个需要实现功能的节点。
为了便于解耦,计算设备可以通过不同的模块,分别解析节点和节点之间的流转关系。
因此,在该方法中,可以通过流程模块解析节点之间的流转关系,将需要执行的节点发送给执行模块。通过执行模块解析节点并得到节点执行结果。之后还需要通过流程模块根据节点执行结果,确定之后需要执行的节点。
通过上述方法,可以通过计算设备自动化执行流程,提高流程的执行效率。
上述方法还可以通过解耦节点与节点之间流转关系的解析,方便降低系统的复杂度,降低开发成本,也方便对计算设备中的流程模块和执行模块进行维护。
如图2所示,为本说明书实施例提供的一种流程执行方法的流程示意图。该方法可以应用于计算设备。
该方法可以包括以下步骤。
S101:在接收到触发事件的情况下,确定用于处理该触发事件的待执行流程。
S102:流程模块获取待执行流程,将其中的起始节点确定为待执行节点,并将该待执行节点发送到执行模块。
S103:执行模块解析当前的待执行节点,根据解析结果确定用于实现该节点功能的预设程序,并获取实现该节点功能所需的程序参数,基于所获取的程序参数运行预设程序,得到运行结果。
S104:流程模块获取运行结果。
S105:流程模块根据运行结果,在待执行流程中确定是否存在新的待执行节点。在存在新的待执行节点的情况下,执行S106。在不存在新的待执行节点的情况下,结束本方法流程。
S106:将新的待执行节点作为当前的待执行节点发送到执行模块,并执行S103。
通过上述方法流程,可以通过计算设备执行流程,提高流程的执行效率。
上述方法流程还可以通过解耦流程模块和执行模块,分别解析节点和确定新的待执行节点,降低模块的复杂度,降低开发成本,也方便对计算设备中的流程模块和执行模块进行维护。
下面针对各个步骤进行详细的解释。
S101:在接收到触发事件的情况下,确定用于处理该触发事件的待执行流程。
1)关于触发事件,本方法流程并不限定具体的触发事件形式,只要计算设备能够针对触发事件确定出用于处理该触发事件的待执行流程即可。
在一种可选的实施例中,可以预先设置事件类型与处理该事件类型的流程之间的对应关系。可选地,针对触发事件,可以在确定该触发事件的事件类型后,将对应处理该事件类型的流程确定为待执行流程。
事件类型例如,举报事件类型、房产纠纷事件类型、污染事件类型等。
在其他可选的实施例中,可以通过触发事件的其他内容确定出待执行流程。例如,触发事件中可以直接指定待执行流程。具体地,触发事件是申诉事件,其中指定了申诉流程,因此,可以直接将触发事件中指定的申诉流程确定为待执行流程。
可选地,触发事件可以是一个结构化的数据。其中可以具体包括若干字段和对应的字段值。
相应地,确定触发事件的事件类型,可以根据其中表征事件类型的字段值进行确定,进而可以确定对应处理该事件类型的待执行流程。
可选地,触发事件的事件参与方也可能需要查看运行结果。
例如,触发事件是申诉事件类型,事件参与方可以包括申诉方,申诉方可以具有实时查看当前流程进展情况,因此,申诉方可以获取到执行待执行流程过程中的运行结果。
换言之,触发事件的事件参与方也可以获取S103中得到的运行结果。本实施例可以提高事件参与方的使用体验。
可选地,在待执行流程中的后续节点可能需要使用触发事件的参数。
例如,某一节点需要向事件参与方发送通知消息,就需要事件参与方的联系方式。
因此,可以存储触发事件,具体可以存储触发事件的参数,具体可以将触发事件存储到数据库中。
2)关于待执行流程的确定。
本方法流程并不限定具体确定待执行流程的方式。
在一种可选的实施例中,可以从多个预设的流程中,确定出用于处理该触发事件的待执行流程。
可选地,针对同一事件,在预设的多个流程中可以确定出多个用于处理该事件的流程。
这些用于处理同一事件的流程,可以是针对同一事件类型的不同流程版本。
不同版本的流程可以是根据时间所更新的多个版本,也可以表征针对同一事件类型的不同处理方法。
因此,需要从确定出的多个流程中,确定出单个流程作为待执行流程。
本实施例并不限定确定方式,可选地,可以根据触发事件进行确定。具体可以是在触发事件指定流程版本的情况下,确定出指定版本的流程为待执行流程。
可选地,也可以根据预设的筛选规则进行确定。具体可以是不同版本的流程可以对应于不同时间段,根据触发事件的发生时间所在时间段,确定对应的流程版本为待执行流程。
当然,也可以是直接选择最新设计的流程版本作为待执行流程。
本实施例也不限定流程的来源。可选地,可以是用户预先设计编辑的,也可以是从外部获取的。
可选地,可以向用户提供流程编辑接口;流程编辑接口可以用于使得所述用户定义流程;根据用户基于流程编辑接口的操作,获取自定义流程。
自定义流程可以配置所处理的触发事件类型,从而方便在后续接收到该类型的触发事件后,可以将该自定义流程确定为待执行流程。
可选地,提供流程编辑接口,具体可以是提供可视化的流程编辑界面,从而方便用户通过可视化操作,例如拖拽组件,建立连线,编辑属性等,编辑流程中的节点和节点流转关系。
S102:流程模块获取待执行流程,将其中的起始节点确定为待执行节点,并将该待执行节点发送到执行模块。
可选地,流程模块具体可以是流程引擎,用于向执行模块发送需要执行的节点,并且确定待执行流程中之后需要执行的节点。可选地,流程模块也可以是调度中心。
可选地,待执行流程中可以包括节点和节点之间的流转关系。
可选地,待执行流程中可以包括起始节点,作为待执行流程中最先执行的节点。待执行流程中还可以包括结束节点,作为待执行流程结束执行的标志。
在S102中,流程模块可以选择待执行流程中的起始节点,确定为当前需要执行的待执行节点,发送到执行模块。可选地,执行模块具体可以是执行器。
S103:执行模块解析当前的待执行节点,根据解析结果确定用于实现该节点功能的预设程序,并获取实现该节点功能所需的程序参数,基于所获取的程序参数运行预设程序,得到运行结果。
1)关于待执行流程中的节点,本方法流程并不限定节点的具体形式,只要执行模块能够解析节点即可。
在一种可选的实施例中,节点可以是数据结构体,其中可以包括若干字段和对应的字段值。节点可以用于实现功能,例如,向某人发送消息、下发表单并获取填写完成的表单、通过应用程序发送通知、访问数据库获取信息等。
可选地,节点可以具有不同类型。例如,动作、规则、数据源、任务、消息等多种节点。不同的节点可以用于实现不同的功能。
其中,动作节点可以通过调用组件的方式查询信息并存储,用于下游流程使用。
常量节点可以定义固定的参数值用于下游流程使用。
任务节点可以下发任务给组织/部门下的人员,并需要获取人员反馈的任务执行结果。
消息节点可以发送消息给组织/部门下的人员。消息发送的通道例如,通讯应用、短信、智能外呼等。
预案调用节点可以调用已上线的预案,通过输入参数的配置映射,进而执行预案,获取到输出参数。
规则节点可以通过编程代码的方式输出信息。
2)关于预设程序。
在一种可选的实施例中,执行模块通过解析待执行节点,可以确定待执行节点所需要实现的功能,进而可以确定出用于实现该节点功能的预设程序。
例如,在确定待执行节点需要实现的功能是发送消息的情况下,可以确定用于发送消息的预设程序。
可选地,预设程序可以是根据节点所需要实现的功能类型预先开发部署的,方便实现节点所需的功能。
可选地,待执行节点中可以包括用于表征所需要实现的功能信息,执行模块也可以获取到功能信息与实现该功能的预设程序之间的对应关系,从而可以根据待执行节点中的功能信息,确定对应的预设程序。
可选地,待执行节点中也可以包括程序标识,该程序标识对应的预设程序用于实现待执行节点所需要实现的功能。
3)关于程序参数。
在一种可选的实施例中,在确定出用于实现节点功能的预设程序后,为了运行该预设程序,还需要获取该预设程序的参数。
例如,在确定待执行节点需要实现的功能是发送消息的情况下,可以确定用于发送消息的预设程序,但预设程序还需要明确发送消息的对象、发送消息的方式、发送的消息内容等参数才能实际运行。
因此,执行模块还需要进一步解析待执行节点,获取到实现该节点功能所需的程序参数。
本方法流程并不限定程序参数的获取来源。
可选地,节点中可以包括程序参数。在设计流程时就明确了节点中的全部或部分程序参数。例如,可以限定某节点发送消息的方式固定为通讯应用方式。
相应地,解析待执行节点,获取实现该节点功能所需的程序参数,可以是从待执行节点中获取程序参数。
可选地,在流程中当前待执行节点的上游节点也可以包括程序参数。例如,某个上游节点在执行时获取到事件参与方的联系方式,而在待执行节点需要向事件参与方发送消息的情况下,需要获取发送消息的对象,因此,需要从该上游节点获取到事件参与方的联系方式。
相对应地,程序参数也可以通过待执行流程中的上游节点进行获取。
4)关于自定义解析规则。
执行模块在具体解析待执行节点时,可以是根据预设的解析规则进行解析。
例如,预设的解析规则中明确字段“功能类型”对应的字段值表征的是节点所需要实现的功能类型,因此,执行模块可以基于预设的解析规则,解析出节点所需要实现的功能类型,并且可以进一步确定预设程序。
在一种可选的实施例中,为了提高用户体验,可以开放可编辑接口,方便用户自己定义解析规则。用户可以是需要执行待执行流程处理事件的执行方。
因此,可选地,还可以向用户提供解析接口;解析接口用于使得该用户定义解析规则;根据该用户基于解析接口的操作,可以获取自定义解析规则。
S103中执行模块解析当前的待执行节点,可以包括:执行模块根据自定义解析规则,解析当前的待执行节点。
可选地,通过自定义解析规则,用户可以定义新的预设程序,用于实现自定义的功能。
可选地,通过自定义解析规则,用户可以定义新的程序参数,以及新的程序参数获取方法。
在一种可选的实施例中,用户可以针对数据配置相应的标签,从而可以方便通过标签获取到程序参数。
可选地,节点中可以包括数据标签,获取程序参数可以根据数据标签,从数据库中获取配置该数据标签的数据。
例如,待执行节点需要通知某部门的主管,需要该部门主管的电话号码。在数据库中,可以预先为该部门主管配置表征主管的标签,而待执行节点中可以包括表征主管的标签,从而可以在数据库中该部门的所有人中,确定出配置有主管标签的用户信息,进而确定该用户电话号码。
在一种可选的实施例中,待执行节点可能需要使用表单。例如,待执行节点所需要实现的功能是,将某一信息表单下发到负责人员进行填写。
相对应地,用户可以通过自定义解析规则,针对自定义的表单进行解析。
具体地,可以是针对预设表单,将其中的字段名称与自定义表单中的字段名称建立映射关系。
例如,预设表单通常是预先设计的,往往是通用的,不会考虑具体场景。因此,预设表单中的字段名称可以是通用场景下的字段名称,具体可以包括:名称、属性1、属性2等等。
而用户所需要下发的表单,往往是存在具体的实际场景的,例如,自定义表单中的字段名称可以包括:任务名称、任务类型、任务执行人员等。
而为了方便使用针对预设表单的功能,例如,表单生成,表单发送等,往往需要将自定义表单中的字段名称与预设表单中的字段名称建立映射关系,从而方便处理自定义表单。
因此,可以通过自定义解析规则,在建立自定义表单后,进一步定义自定义表单与预设表单之间的字段名称映射关系。
本实施例中,通过上述自定义解析规则,可以提高解析节点的灵活度,提高用户体验。
5)关于运行结果。
在确定预设程序,并获取程序参数后,执行模块就可以基于所获取的程序参数运行预设程序。之后可以得到程序运行结果。
需要说明的是,运行结果可以是程序本身的运行结果。例如,消息发送成功、计算结果等。运行结果也可以是程序从外部接收的运行结果。例如,表单反馈,任务执行结果反馈等。
在一种可选的实施例中,可以根据运行结果更新数据库,具体可以是将运行结果写入数据库中。
需要说明的是,在待执行流程的执行过程中,通常需要与数据库进行交互,通过数据库存储数据。
可选地,为了提高数据库的交互效率,可以针对数据库根据不同维度进行分库或者分表。
可选地,可以根据不同维度划分出不同的数据库。在某一维度下的待执行流程执行时,可以直接访问对应维度的数据库。由于经过划分,每个划分后的数据库中的数据量相对减少,因此,可以提高数据库的交互效率。
并且,经过划分之后,不同维度的数据库可以支持不同维度的待执行流程并行访问,从而方便提高数据库的交互效率。
可选地,也可以在数据库中,根据不同维度划分出不同的数据表。在某一维度下的待执行流程执行时,可以直接访问对应维度的数据表。由于经过划分,每个划分后的数据表中的数据量相对减少,因此,可以提高数据库的交互效率。
并且,经过划分之后,不同维度的数据表可以支持不同维度的待执行流程并行访问,从而方便提高数据库的交互效率。
其中,可选地,维度具体可以包括测试数据和正式数据维度、人工任务和其他任务类型的维度、历史数据和执行数据的维度。
在本实施例中,可以通过维度进行划分,实现数据隔离的目的,提高数据库的交互效率。
因此,可选地,执行模块可以对接预设数据库;预设数据库中不同数据表对应于不同维度。在得到运行结果后,执行模块可以执行模块确定运行结果对应的第一维度,将运行结果写入预设数据库中对应第一维度的数据表。
具体地,待执行流程本身可以对应正式数据维度,因此,可以将运行结果写入预设数据库中对应正式数据维度的数据表中。
或者,运行结果可以是动作节点的运行结果,可以对应于动作节点维度,因此,可以将运行结果写入预设数据库中对应动作节点维度的数据表中。
可选地,执行模块可以对接多个数据库;不同数据库对应于不同维度;在得到运行结果后,执行模块可以确定运行结果对应的第一维度,将运行结果写入对应第一维度的数据库。
可选地,在将运行结果写入数据库之后,当前的待执行节点可以确定执行完成。
相对应地,执行模块可以进一步将运行结果发布出去。
在一种可选的实施例中,在将运行结果写入预设数据库中对应维度的数据表后,执行模块可以将运行结果通过发布订阅机制进行发布,以便于订阅节点运行结果的订阅方获取到运行结果;流程模块订阅节点运行结果。
需要说明的是,在获取实现待执行节点功能所需的程序参数时,可以从待执行节点本身中获取,也可以从上游节点中获取。
而在节点的运行结果写入数据库的情况下,上游节点的运行结果已经预先写入数据库,因此,可以从数据库中获取上游节点的信息所包含的程序参数,具体可以从待执行节点内容,和/或预设数据库中其他节点的运行结果中,获取实现该节点功能所需的程序参数。
6)关于自定义推送规则。
在得到运行结果之后,还可能存在将运行结果推送出去的需求。
例如,在某地确定存在疫情的情况下,需要通过某应用程序向社会通报疫情的情况。这时通常需要将运行结果推送到第三方系统中。
并且,具体推送运行结果的方式也存在自定义的需求。
例如,运行结果本身只是一个数据结构体,而在向第三方系统推送消息时,往往需要文字信息进行推送。因此,通常在推送之前需要解析运行结果。
显然,对于待执行流程而言,无法预先确定具体的第三方系统如何对接。
因此,可以向用户开放可编辑接口,方便用户自己定义推送规则。用户可以是需要执行待执行流程处理事件的执行方。
可选地,还可以向用户提供推送接口;推送接口用于使得用户定义推送规则;根据用户基于推送接口的操作,获取自定义推送规则。在得到运行结果之后,执行模块根据自定义推送规则,推送运行结果。
可选地,通过自定义推送规则,可以定义所需要推送的对象,还可以定义推送的方式等等。
本实施例中,通过上述自定义推送规则,可以提高推送运行结果的灵活度,提高用户体验。
7)关于线程池。
在一种可选的实施例中,执行模块解析当前的待执行节点,具体可以分为两次解析,分别是确定用于实现该节点功能的预设程序,以及获取实现该节点功能所需的程序参数。
需要说明的是,流程模块在确定待执行节点时,可能确定出一个或多个待执行节点。
而执行模块解析当前的一个或多个待执行节点,具体可以是并行或串行进行解析。
其中,确定用于实现待执行节点功能的预设程序,相对较为简单,而获取实现该节点功能所需的程序参数,则可能需要从多个来源获取程序参数。
为了进一步提高处理效率,可以进一步将两次解析进行解耦,分别执行。具体可以是通过队列进行解耦。
可选地,执行模块解析当前的待执行节点,根据解析结果确定用于实现该节点功能的预设程序,可以包括:执行模块解析当前的待执行节点,根据第一解析结果确定用于实现该节点功能的预设程序,并将该节点和预设程序标识添加到当前待执行节点队列的队尾。
执行模块还可以包括第一线程池。
执行模块可以在第一线程池存在可调用线程的情况下,调用该线程从当前待执行节点队列的队头中,获取到节点和程序标识。
其中,第一线程池具体可以是worker线程池。
第一线程池中的线程可以在获取到节点和程序标识后,继续执行节点解析和后续的程序运行。
相对应地,获取实现该节点功能所需的程序参数,基于所获取的程序参数运行预设程序,得到运行结果,可以包括:在执行模块调用第一线程池中的线程,从当前待执行节点队列的队头中,获取到待执行节点和预设程序标识的情况下,所调用的线程执行以下步骤:解析该节点,根据第二解析结果获取实现该节点功能所需的程序参数,基于所获取的程序参数运行预设程序标识对应的程序,得到运行结果。
8)关于恢复线程池。
在一种可选的实施例中,第一线程池中的线程可能会出现异常情况。
例如,线程本身的处理时长较长,出现超时的问题;线程本身无法继续执行;线程抢占CPU导致其他线程被拖慢等等。
因此,需要一种自动恢复异常线程的方式。
本方法流程并不限定具体恢复异常线程的方式。
可选地,可以通过另一个独立线程池帮助第一线程池进行线程恢复。
可选地,执行模块还可以包括第二线程池,第二线程池可以用于管理第一线程池中的线程。
执行模块还可以在确定第一线程池中任一线程出现异常的情况下,调用第二线程池中的线程执行:根据该线程的异常类型,确定并执行对应的预设恢复策略。
其中,预设恢复策略可以包括:重启线程,或者暂停线程并在预设时长后重新唤醒该线程。
具体的异常类型和预设恢复策略的对应关系,可以是:超时异常或者抢占异常,对应于暂停线程并在预设时长后重新唤醒该线程的策略;线程无法执行的异常,对应于重启线程的策略。
本实施例中,可以通过独立线程池对异常线程进行自动恢复,减少人工介入。
S104:流程模块获取运行结果。
本方法流程并不限定流程模块获取运行结果的方式。
可选地,可以是流程模块直接获取到执行模块发送的运行结果。
可选地,在执行模块通过发布订阅机制发布运行结果的情况下,流程模块可以通过订阅运行结果,获取到所发布的运行结果。
具体地,执行模块可以通过消息队列实现运行结果的发布,而流程模块可以通过消息队列接收到所订阅的运行结果。
通过发布订阅机制,可以使得执行模块与其他需要获取运行结果的模块或设备进行解耦,执行模块只需要发布运行结果即可,无需确定其他需要获取运行结果的模块或设备。并且,执行模块可以异步地发布运行结果,其他需要获取运行结果的模块或设备可以异步地获取运行结果。
在发布订阅机制中也可以使用消息队列,作为突发流量的缓冲,降低突发流量带来的影响。
S105:流程模块根据运行结果,在待执行流程中确定是否存在新的待执行节点。在存在新的待执行节点的情况下,执行S106。在不存在新的待执行节点的情况下,结束本方法流程。
S106:将新的待执行节点作为当前的待执行节点发送到执行模块,并执行S103。
可选地,在待执行流程中,可以包括节点之间的流转关系,用于确定下一个需要执行的节点。
两个节点之间的流转关系,例如,在节点1执行完成之后,直接执行节点2;在节点1执行完成之后,如果判断条件满足,则执行节点2;或者在节点1-N中M个节点执行完成之后,可以继续执行节点N+1等等。
在一种具体的示例中,待执行流程可以是根据BPMN规范设计的,其中的节点之间流转关系可以通包括判断条件、包容网关和汇聚并行。
其中,判断条件可以是,根据节点之间连线上配置的条件,执行满足条件的分支;若一个条件都未满足,则预案执行异常。
汇聚并行可以是针对M个分支同时执行,在M个分支全部执行完成后,可以继续执行。若存在任意一条分支执行异常,即无法继续执行。
包容网关可以是针对M个分支同时执行,若存在某个分支未满足判断条件,则不会执行此分支;若存在某个分支不设置判断条件,即默认执行此分支。之后,在M个分支中预设比例或者预设数量的分支执行完成后,可以继续执行。
需要说明的是,判断条件通常可以根据上游节点的运行结果进行判断。
当然,运行结果本身至少可以表征当前的待执行节点执行完成。
因此,流程模块可以根据运行结果,确定当前的待执行节点已经执行完成,之后可以根据当前的待执行节点与其他节点之间的流转关系,确定出下一个需要执行的节点为新的待执行节点。
在一种可选的实施例中,在不存在新的待执行节点的情况下,可以说明待执行流程已经执行完成。
可选地,也可以通过待执行流程中的结束节点进行判断。结束节点可以是待执行流程中表征流程结束的节点。相对应地,可以在当前的待执行节点为结束节点的情况下,结束本方法流程。
通过上述方法流程,可以通过计算设备执行流程,提高流程的执行效率。
上述方法流程还可以通过解耦流程模块和执行模块,分别解析节点和确定新的待执行节点,降低模块的复杂度,降低开发成本,也方便对计算设备中的流程模块和执行模块进行维护。
此外,在一种可选的实施例中,针对上述的待执行流程,还可以预先进行测试。
可选地,可以针对流程中的单个节点进行测试。具体可以根据不同参数调试流程执行情况,并根据异常报错检验流程的正确性。
可选地,还可以通过模拟上报事件从而测试整个预案的执行情况,可根据不同情况从而执行不同分支。
其中,一个事件类型可以对应多个流程,一个流程可以仅适用一个事件类型。在流程创建时可以预先绑定事件类型。
可选地,针对事件类型,可以提前定义该事件类型上报时的扩展参数。
如果一个流程适用多个事件类型,会因为不同事件类型的扩展参数不同,节点使用不同的事件类型的扩展参数,事件上报时选择的事件类型没有这个扩展参数,导致节点执行时失败。
在一种可选的实施例中,还可以针对流程执行的过程进行实时查看或复盘。
可选的,可以获取到流程模块和执行模块的日志,通过日志可以明确其中待执行流程在执行过程中的数据流,从而方便进行实时查看和分析复盘。
在一种可选的实施例中,还可以根据实际的运行情况和需求,对流程进行修改和测试。可以很方便地调整流程。而这些都是文字形式的预案难以实现的。
为了便于理解,下面给出了一种具体的示例。
如图3所示,为本说明书实施例提供的一种流程执行方法的原理示意图。
其中,用户可以先利用工具箱设计流程。
工具箱中可以包括消息节点、任务节点和动作节点等节点。还可以包括各种组件。例如,权责清单组件、选人组件、人事匹配链组件等。这些组件可以方便用户动态选择出组织或人员。具体可以是通过标签,或者权责,或者人事架构,进行选择。
例如,用户在构建节点时,可以在节点中填充“主管”标签,从而方便获取配置有“主管”标签的人员信息;也可以在节点中填充“xx部门负责人”,而权责清单中,可以包括有xx部门的负责人和员工,从而方便获取负责xx部门的人员信息。
在接收到触发事件后,可以进一步由流程引擎获取用于处理该触发事件的待执行流程。
流程引擎可以用于执行节点流程,具体可以是确定需要执行的节点。例如,通过判断条件、汇聚并行和包容网关等进行确定。
流程引擎可以将需要执行的待执行节点发送到执行器中。
执行器可以先针对待执行节点进行第一次解析,确定出用于实现该节点功能的预设程序,之后可以将待执行节点和所确定的预设程序,作为一个任务,添加到任务队列的队尾。
执行器中的worker线程池中的线程,可以从任务队列的队头中,获取任务进行处理。
线程具体可以针对待执行节点进行第二次解析,获取实现该节点功能所需的程序参数。
需要说明的是,第二次解析中除了预设的解析规则,还可以包括前置任务扩展点中用户所自定义的解析规则。
具体的第二次解析,可以包括上下文解析、选人/组织、表单解析等。
其中上下文解析可以是基于待执行节点的解析结果,从上游节点中获取到程序参数。
选人/组织,可以是根据用户自定义的数据标签进行选择。例如,待执行节点中,发送消息的对象可以是“主管”标签,从而可以获取到配置有“主管”标签的所有人员,作为发送消息的对象。
在确定出预设程序和程序参数后,可以基于程序参数运行预设程序,实现待执行节点功能。
例如,发送消息,可以是通过短信网关或者通讯应用进行发送;人工任务可以是向具体的人员下发人工任务,具体可以是通过通讯应用下发填写表单收集信息的人工任务,也可以是将人工任务发送到应用前台,还可以生成表单,向指定人员下发;执行动作具体可以是通过调用组件服务,获取信息,具体可以是从数据库中获取指定人员的电话号码。
在运行完成后,可以通过回调获取到运行结果。运行结果具体可以是程序本身的运行结果,也可以是从外部反馈的数据,例如,表单数据,或者人工任务完成情况。
运行结果可以进行解析,例如,解析表单数据,获取统计信息;或者将人工任务的完成情况进行数字化,方便后续流程引擎的判断。
之后,可以根据运行结果更新数据库,具体可以是将运行结果入库,确定当前的待执行节点执行完成。
在更新数据库之后,可以将运行结果通过状态广播进行推送。具体可以是通过状态监听器,将运行结果发送给其他模块或设备。
其中,事件状态通知,具体是针对触发事件,通知当前待执行流程的执行进度和情况。具体可以是通知事件参与方。
实例状态通知,具体是针对待执行流程本身,记录待执行流程在执行过程中的各个节点运行结果。
父状态通知,具体可以是在待执行流程是被其他流程调用的情况下,其他流程是待执行流程的父流程,从而可以向父流程通知当前待执行流程的执行进度和情况。
流程引擎状态通知,具体可以是针对流程引擎,通知当前待执行流程的执行进度和情况。
此外,状态广播还可以通过后置任务扩展点中,用户自定义的推送规则进行推送。通过后置任务扩展点,可以快速集成三方系统能力;如任务推送能力,集成排班管理系统调度人员能力等。
具体可以是向用户指定的第三方系统进行推送,也可以是通过消息队列进行异步推送。
流程引擎在获取到当前待执行流程的执行进度和情况,也就是待执行节点的运行结果后,可以根据节点流转关系,确定出新的待执行节点,继续将新的待执行节点发送给执行器进行执行。
此外,执行器可以对接数据库,数据库例如,内存数据库Ignite,MySQL数据库,和redis数据库。针对数据库,可以根据不同的维度拆分成不同的数据库或者数据表。
维度例如,测试数据维度、历史数据维度、消息节点维度、任务节点维度、规则节点维度等。其中,测试数据维度所对应的数据库或者数据表,可以存储测试数据相关的数据。消息节点维度对应的数据库或者数据表,可以存储消息节点相关的数据,例如,消息节点的运行结果和运行日志。
在具备无中心的同时,按不同维度拆分任务表来达到数据隔离目的,拆分的维度包括测试数据和正式数据维度、人工任务和其他任务类型的维度、历史数据和执行数据的维度。
此外,还可以通过恢复线程池管理worker线程池,在worker线程池中任一线程出现异常的情况下,调用恢复线程池中的线程针对异常线程进行恢复。独立线程池对异常任务进行自动恢复,可以减少人工介入。
具体的恢复,可以是重启线程,恢复线程池可以从MySQL数据库中,获取所需要重启的线程相关内容,进行线程的重启。
并且,恢复线程池在恢复某一异常线程时,还需要针对异常线程增加分布式锁,明确该异常线程已经被占用。
上述方案在满足无中心、可弹性伸缩的同时,同时采用垂直水平分割,对数据进行隔离(运行数据与非运行数据隔离;历史数据与正式数据隔离;不同类型的节点数据隔离;节点基础信息与上下文、定义信息等大字段拆分),减少运行中的读写操作,提高执行效率;同时通过队列MQ来缓解突发流量带来的冲击。
在事务沉淀上,结合事务属性,沉淀出来动作、规则、数据源、任务、消息等多种节点,针对选人困难,通过标签选人,来解决人员的动态变化,并沉淀出了专门的标签选组织、标签选人、人事匹配链、权责组件等具备事务特色的动作服务。
为了便于理解,下面给出一种具体的示例。
以进口冷链食品为例,需要针对进口冷链食品的安全风险进行管控,例如,针对进口冷链食品是否携带病毒进行管控。而在确定进口冷链食品携带病毒后,需要执行处理这件事的流程。
首先,梳理项目的事务流程,以及形成事务流程图。
如图4所示,为本说明书实施例提供的一种进口冷链食品管控预案的流程图。
在进口冷链食品被发现携带病毒后,需要执行以下步骤。
1:找到专班信息--负责专班部门及专班负责人。
2:对接外部系统--云上指挥室,专班负责人确认事件主管部门负责人,通知指挥室中的人员,以及修改指挥室事件处置状态。
3:找到疫情负责部门/人员,以及对应乡镇信息。根据乡镇信息找到需要参与的部门以及部门中的人员,并将人员拉进指挥室。
4:各个部门负责人交办任务给对应人员,以及指挥室确认交办状态。
5:对应人员处置任务并反馈;其他人员查看事件信息,并通知其他相关部门。
其次,可以根据事务流程图转换为处置预案。
下面分别针对各个步骤,解释其中包含的节点。
1:找到专班信息,对接外部系统。
目的:找到专班负责人,专班负责人确认主管部门责任人,在外部系统-云上指挥室确认事件,完成研判。
实现过程:不同区域有不同的组织信息,不同区域下有对应的专班部门,通过专班部门找到其负责人,还需要对接外部系统--云上指挥室。
此时查找的过程可以使用到常量,动作,规则,数据库查询等节点。
如图5所示,为本说明书实施例提供的一种找到专班信息的流程图。
1)动作节点:根据区域code获取责任区域组织信息。
2)动作节点:根据责任区域组织信息获取本区域下的专班部门。
3)动作节点:根据专班部门找到专班负责人。
4)动作节点:创建指挥室,对接外部系统(云上指挥室)。
5)任务节点:确认专班负责人已完成研判(确认事件属于疫情),确认主管部门责任人。
6)动作节点:对接外部系统--指挥室状态修改为正在处理。
7)动作节点:对接外部系统--指挥室发消息,专班负责人已确认需要处理。
2:找到疫情负责部门/人员。
目的:消息通知疫情负责人以及市物防专班。
实现过程:可以根据区域获取其对应的疫情指挥部门,以及对应负责人。
此时查找的过程可以使用到常量,动作,规则,数据库查询等节点。
如图6所示,为本说明书实施例提供的一种消息通知的流程图。
1)动作节点:获取区域疫情指挥部门。
2)动作节点:根据疫情指挥部门信息获取疫情指挥负责人。
3)消息通知:钉钉通知疫情负责人。
4)消息通知:钉钉通知市物防专班。
3:根据乡镇信息找到需要参与的部门以及部门中的人员,并将人员拉进指挥室。
目的:找到需要参与的部门下的负责人,并将其负责人拉入指挥室,并在指挥室发送消息给各部门人员。
实现过程:需要多部门协同,需要获取多部门人员信息,此过程是并行的操作,且获取部门人员信息,需先获取对应部门信息。
如图7所示,为本说明书实施例提供的一种找到部门负责人的流程图。
1)动作节点:根据乡镇code获取所在乡镇组织信息。
2)动作节点:获取监管局部门/卫建委部门/应急部门/乡镇/街道主管部门/宣传部部门信息。
3)动作节点:根据监管局部门/卫建委部门/应急部门/乡镇/街道主管部门/宣传部部门信息获取部门负责人信息。
4)动作节点:对接指挥室--将监管局部门/卫建委部门/应急部门/乡镇/街道主管部门/宣传部部门负责人拉进指挥室。
5)动作节点:对接指挥室--指挥室发送消息给相关部门(监管局,卫建委,应急部门,乡镇/街道主管部门,宣传部)。
4:交办。
目的:让每个部门负责人确定交办处置的人员,并消息通知。
实现过程:实际处置人员由部门负责人指定,此时则需要负责人在反馈任务完成时将交办人员信息上传,即使用到了任务的输出参数。
如图8所示,为本说明书实施例提供的一种交办人员的流程图。
1)任务节点:市场监管局负责人确认交办任务人员--组长与组员。
2)任务节点:主管部门负责人确认交办任务人员--组长与组员。
3)任务节点:卫建委负责人确认交办任务人员--组长与组员。
指挥室确认交办完成。
4)动作节点:对接指挥室--修改指挥室事件为交办完成状态。
5:处置。
目的:部门处置人员处置任务并反馈;其他人员查看事件信息,并通知其他相关部门实现过程:下发对象获取上游流程的输出-处置人员信息
如图9所示,为本说明书实施例提供的一种人员处置事件的流程图。
物品处置。
1)任务节点:监管局组长反馈物品处置情况。
2)消息节点:若存在组员,组员接受消息通知,查看信息。
3)任务节点:卫建委获取物品处置情况,进行检验输出检验结果。
4)判断:根据检验结果,物品阳性:需卫建委,监管局处置物品;物品阴性:需监管局处置物品。
环境处置。
1)任务节点:主管部门反馈环境处置情况。
2)消息节点:若存在组员,组员接受消息通知,查看信息。
3)任务节点:卫建委获取环境处置情况,进行检验输出检验结果。
4)判断:根据检验结果,环境阳性:需卫建委处置环境;环境阴性:需卫建委,主管部门处置环境。
人员处置。
1)任务节点:卫建委反馈人员处置情况。
2)消息节点:若存在组员,组员接受消息通知,查看信息。
3)判断:根据检验结果,人员阳性:需卫建委处置人员,并确认流调人员检测结果,根据检验结果不同处理方式;人员阴性:需卫建委处置环境。
消息通知。
4)消息节点:通知应急部门。
5)消息节点:通知宣传部门。
6)消息节点:通知乡镇/街道主管部门。
对应于上述方法实施例,本说明书实施例还提供了装置实施例。
如图10所示,为本说明书实施例提供的一种流程执行装置的结构示意图。
该装置可以包括以下模块。
确定模块201,用于在接收到触发事件的情况下,确定用于处理该触发事件的待执行流程。
流程模块202,用于获取待执行流程,将其中的起始节点确定为待执行节点,并将该待执行节点发送到执行模块203。
执行模块203,用于解析接收到的当前的待执行节点,根据解析结果确定用于实现该节点功能的预设程序,并获取实现该节点功能所需的程序参数,基于所获取的程序参数运行该预设程序,得到运行结果。
流程模块202,用于获取运行结果,并根据运行结果,在待执行流程中确定新的待执行节点,并将新的待执行节点作为当前的待执行节点发送到执行模块203。
可选地,流程模块202在确定待执行流程执行完成的情况下,可以不确定新的待执行节点。
可选地,流程模块202可以在无法确定出新的待执行流程节点的情况下,确定待执行流程执行完成,也就无需向执行模块203发送当前的待执行节点。
可选地,该装置还可以包括:解析规则模块204,用于向用户提供解析接口;解析接口用于使得用户定义解析规则;根据用户基于解析接口的操作,获取自定义解析规则。
执行模块203用于:执行模块根据自定义解析规则,解析当前的待执行节点。
可选地,该装置还可以包括:推送规则模块205,用于向用户提供推送接口;推送接口用于使得用户定义推送规则;根据用户基于推送接口的操作,获取自定义推送规则。
执行模块203还用于,在得到运行结果之后,根据自定义推送规则,推送运行结果。
可选地,执行模块203用于:解析当前的待执行节点,根据第一解析结果确定用于实现该节点功能的预设程序,并将该节点和预设程序标识添加到当前待执行节点队列的队尾。
执行模块203还包括第一线程池。
执行模块203还用于:在第一线程池存在可调用线程的情况下,调用该线程从当前待执行节点队列的队头中,获取到节点和程序标识。
可选地,执行模块203用于:在调用第一线程池中的线程,从当前待执行节点队列的队头中,获取到该节点和预设程序标识的情况下,所调用的线程执行以下步骤:解析该节点,根据第二解析结果获取实现该节点功能所需的程序参数,基于所获取的程序参数运行预设程序标识对应的程序,得到运行结果。
可选地,执行模块203还包括第二线程池,第二线程池用于管理第一线程池中的线程。
执行模块203还用于,在确定第一线程池中任一线程出现异常的情况下,调用第二线程池中的线程执行:根据该线程的异常类型,确定并执行对应的预设恢复策略;预设恢复策略包括:重启线程,或者暂停线程并在预设时长后重新唤醒该线程。
可选地,执行模块203对接预设数据库;预设数据库中不同数据表对应于不同维度。
执行模块203还用于,在得到运行结果后,确定运行结果对应的第一维度,将运行结果写入预设数据库中对应第一维度的数据表。
可选地,执行模块203还用于,在将运行结果写入预设数据库中对应维度的数据表后,将运行结果通过发布订阅机制进行发布,以便于订阅运行结果的订阅方获取到运行结果;流程模块订阅运行结果。
可选地,执行模块203用于:从该节点内容,和/或预设数据库中其他节点的运行结果中,获取实现该节点功能所需的程序参数。
可选地,执行模块203对接多个数据库;不同数据库对应于不同维度;执行模块203还用于,在得到运行结果后,确定运行结果对应的第一维度,将运行结果写入对应第一维度的数据库。
装置实施例的具体解释,可以参见上述方法实施例。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现一种流程执行方法。
图11示出了本说明书实施例所提供的一种更为具体的计算机设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现一种流程执行方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护。
Claims (11)
1.一种流程执行方法,包括:
在接收到触发事件的情况下,确定用于处理所述触发事件的待执行流程;
流程模块获取所述待执行流程,将其中的起始节点确定为待执行节点,并将该待执行节点发送到执行模块;
循环执行以下步骤,直到所述待执行流程执行完成:
所述执行模块解析当前的待执行节点,根据解析结果确定用于实现该节点功能的预设程序,并获取实现该节点功能所需的程序参数,基于所获取的程序参数运行所述预设程序,得到运行结果;
所述流程模块获取所述运行结果,并根据所述运行结果,在所述待执行流程中确定新的待执行节点,并将新的待执行节点作为当前的待执行节点发送到所述执行模块。
2.根据权利要求1所述的方法,还包括:
向用户提供解析接口;所述解析接口用于使得所述用户定义解析规则;根据所述用户基于所述解析接口的操作,获取自定义解析规则;
所述执行模块解析当前的待执行节点,包括:
所述执行模块根据所述自定义解析规则,解析当前的待执行节点。
3.根据权利要求1所述的方法,还包括:
向用户提供推送接口;所述推送接口用于使得所述用户定义推送规则;根据所述用户基于所述推送接口的操作,获取自定义推送规则;
在得到运行结果之后,所述方法还包括:
所述执行模块根据所述自定义推送规则,推送所述运行结果。
4.根据权利要求1所述的方法,所述执行模块解析当前的待执行节点,根据解析结果确定用于实现该节点功能的预设程序,包括:
所述执行模块解析当前的待执行节点,根据第一解析结果确定用于实现该节点功能的预设程序,并将该节点和所述预设程序标识添加到当前待执行节点队列的队尾;
所述执行模块还包括第一线程池;
所述方法还包括:
所述执行模块在所述第一线程池存在可调用线程的情况下,调用该线程从当前待执行节点队列的队头中,获取到节点和程序标识。
5.根据权利要求4所述的方法,所述获取实现该节点功能所需的程序参数,基于所获取的程序参数运行所述预设程序,得到运行结果,包括:
在所述执行模块调用所述第一线程池中的线程,从当前待执行节点队列的队头中,获取到该节点和所述预设程序标识的情况下,所调用的线程执行以下步骤:
解析该节点,根据第二解析结果获取实现该节点功能所需的程序参数,基于所获取的程序参数运行所述预设程序标识对应的程序,得到运行结果。
6.根据权利要求4所述的方法,所述执行模块还包括第二线程池,所述第二线程池用于管理所述第一线程池中的线程;
所述方法还包括:
所述执行模块在确定所述第一线程池中任一线程出现异常的情况下,调用所述第二线程池中的线程执行:根据该线程的异常类型,确定并执行对应的预设恢复策略;所述预设恢复策略包括:重启线程,或者暂停线程并在预设时长后重新唤醒该线程。
7.根据权利要求1所述的方法,所述执行模块对接预设数据库;所述预设数据库中不同数据表对应于不同维度;
在得到运行结果后,所述方法还包括:
所述执行模块确定所述运行结果对应的第一维度,将所述运行结果写入所述预设数据库中对应第一维度的数据表。
8.根据权利要求7所述的方法,在将所述运行结果写入所述预设数据库中对应维度的数据表后,所述方法还包括:
所述执行模块将所述运行结果通过发布订阅机制进行发布,以便于订阅所述运行结果的订阅方获取到所述运行结果;所述流程模块订阅所述运行结果。
9.根据权利要求7所述的方法,所述获取实现该节点功能所需的程序参数,包括:
从该节点内容,和/或所述预设数据库中其他节点的运行结果中,获取实现该节点功能所需的程序参数。
10.根据权利要求1所述的方法,所述执行模块对接多个数据库;不同数据库对应于不同维度;
在得到运行结果后,所述方法还包括:
所述执行模块确定所述运行结果对应的第一维度,将所述运行结果写入对应第一维度的数据库。
11.一种流程执行装置,包括:
确定模块,用于在接收到触发事件的情况下,确定用于处理所述触发事件的待执行流程;
流程模块,用于获取所述待执行流程,将其中的起始节点确定为待执行节点,并将该待执行节点发送到执行模块;
所述执行模块,用于解析接收到的当前的待执行节点,根据解析结果确定用于实现该节点功能的预设程序,并获取实现该节点功能所需的程序参数,基于所获取的程序参数运行所述预设程序,得到运行结果;
所述流程模块,用于获取所述运行结果,并根据所述运行结果,在所述待执行流程中确定新的待执行节点,并将新的待执行节点作为当前的待执行节点发送到所述执行模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210316348.6A CN114723397A (zh) | 2022-03-28 | 2022-03-28 | 一种流程执行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210316348.6A CN114723397A (zh) | 2022-03-28 | 2022-03-28 | 一种流程执行方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114723397A true CN114723397A (zh) | 2022-07-08 |
Family
ID=82240381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210316348.6A Pending CN114723397A (zh) | 2022-03-28 | 2022-03-28 | 一种流程执行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114723397A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115993916A (zh) * | 2023-02-27 | 2023-04-21 | 北京广联达天下科技有限公司 | 一种工作流建模控制方法、装置、介质及设备 |
-
2022
- 2022-03-28 CN CN202210316348.6A patent/CN114723397A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115993916A (zh) * | 2023-02-27 | 2023-04-21 | 北京广联达天下科技有限公司 | 一种工作流建模控制方法、装置、介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110321152B (zh) | 一种软件开发平台 | |
US11627053B2 (en) | Continuous data sensing of functional states of networked computing devices to determine efficiency metrics for servicing electronic messages asynchronously | |
CN107506451B (zh) | 用于数据交互的异常信息监控方法及装置 | |
Janiesch et al. | Beyond process monitoring: a proof‐of‐concept of event‐driven business activity management | |
CN110807067B (zh) | 关系型数据库和数据仓库的数据同步方法、装置及设备 | |
US20090327429A1 (en) | Collaborative alert management and monitoring | |
CN114925045B (zh) | 大数据集成和管理的PaaS平台 | |
CN107103064B (zh) | 数据统计方法及装置 | |
US20160247246A1 (en) | Plan visualization | |
US20080065400A1 (en) | System and Method for Producing Audit Trails | |
CN112260877A (zh) | 基于ai的rpa机器人管理方法、平台及存储介质 | |
Baumgrass et al. | BPMN extension for business process monitoring | |
CN112396397A (zh) | 运维事务归集和管理系统 | |
US20140006000A1 (en) | Built-in response time analytics for business applications | |
CN104616100A (zh) | 应急预案的管理系统 | |
CN116010494A (zh) | 一种支持异构数据源的数据交换系统 | |
CN114723397A (zh) | 一种流程执行方法及装置 | |
CN111311200A (zh) | 大客咨询工单平台的管理方法及装置 | |
CN117453799A (zh) | 一种仿真过程中的离散事件数据采集方法 | |
US9262549B2 (en) | Modeled associations for business object data structures | |
CN112511520A (zh) | 一种电力行业网络安全管理系统及方法 | |
CN112199403A (zh) | 待办事项提醒方法、装置、设备及存储介质 | |
CN111582833A (zh) | 基于生命周期的文档处理方法、装置及电子设备 | |
CN112286918B (zh) | 数据快速接入转换的方法、装置、电子设备及存储介质 | |
CN116136801A (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 |