CN115185502A - 基于规则的数据处理工作流定义方法、装置、终端及介质 - Google Patents
基于规则的数据处理工作流定义方法、装置、终端及介质 Download PDFInfo
- Publication number
- CN115185502A CN115185502A CN202211112740.5A CN202211112740A CN115185502A CN 115185502 A CN115185502 A CN 115185502A CN 202211112740 A CN202211112740 A CN 202211112740A CN 115185502 A CN115185502 A CN 115185502A
- Authority
- CN
- China
- Prior art keywords
- action
- unit
- rule
- context information
- dependency
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Entrepreneurship & Innovation (AREA)
- Operations Research (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Quality & Reliability (AREA)
- Marketing (AREA)
- Economics (AREA)
- Data Mining & Analysis (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种基于规则的数据处理工作流定义方法、装置、终端及介质,以文本代码的方式基于规则编写工作流,将工作流编译成易于匹配和执行的数据单元,以规则作为工作流描述的基础单元,集成了目标、依赖以及动作,可以表述任务之间的复杂依赖关系。使工作流定义可以直接进入版本管理,更新工作流定义无需重新计算所有步骤,具有良好的可重复性。本发明支持的依赖动态解析、模式匹配、动作协议等功能,可以对不同输入采用不同的运行方式,大大增强装置的表达能力与集成能力,可以根据需要进行多语言调用。本发明在大数据分析处理、可重复研究等领域具有较好的应用前景。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种基于规则的数据处理工作流定义方法、装置、终端及介质。
背景技术
随着大数据时代的到来,构建有效的数据处理装置对学术研究和工程实现都提出了巨大挑战。组合各类现有模块来构建复杂工具是解决复杂数据处理问题的必要途径,但是由于现有模块技术路线驳杂,对模块组合工具的能力提出了挑战。另一方面,数据处理是一种迭代演进的能力,需要不断集成新的工具或优化流程,为此需要工具能够利用之前运行的结果进行渐进处理。这些因素都制约了构建有效数据处理工具的开发效率。
现有的工作流处理工具多数采用图模型作为底层逻辑。用户通过可视化的拖拽,将装置提供的功能按照所需逻辑组合成一个大型数据处理装置。这种方法的主要缺点是图模型难以通过易于读写的文本表达,描述工作流的数据包只能通过单一软件进行处理,这使得工作流本身无法进行良好的版本管理,模块组合能力也受到一定限制,部分工具如Kepler等支持开发插件扩展生态,但是处理工具和生态一起是一个技术路线单一的巨型装置,如果要引入当前插件尚不支持的功能仍需开发转换组件。另一类工作流处理工具是基于工作流处理语言的装置,如Jupyter Notebook,Makefile,Knitr等,这些工具或者不是为了数据处理开发,或者主要面向的是交互式展示,对数据处理依赖关系的表达能力不足,装置层面不支持渐进执行等工作流装置的必要功能。
发明内容
基于此,有必要针对上述技术问题,提供一种能够增强数据处理工作流逻辑的表达能力,实现模块快速调用的基于规则的数据处理工作流定义方法、装置、终端及介质。
一种基于规则数据处理工作流定义的方法,所述方法包括:
基于规则定义工作流结构,所述工作流结构包括依序执行的一系列动作,所述动作以及所述动作与其它动作的关系由一条规则定义;所述规则包括:目标单元、依赖单元以及动作单元;根据所述目标单元中的正则表达式,构建文本匹配与提取的相关例程;
基于相关例程,将用户给定的输出与所述目标单元进行匹配,提取执行上下文信息;根据所述执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖,将所述具体的依赖加入所述执行上下文信息中,得到新的上下文信息;
根据所述具体的依赖,判断输出要求的依赖是否均已存在;若否,将所述具体的依赖作为输出进行解析,递归寻找生成依赖的规则;
将所述新的上下文信息提供给动作单元,对所述动作单元中的代码进行编译,得到动作代码;将所述动作代码提供给所述动作单元,根据所述动作单元中指明的协议执行相应的动作。
在一个实施例中,所述正则表达式用于对可匹配的用户给定输出进行限制,并设置捕获组提取输出中的部分文本。
在一个实施例中,基于相关例程,将用户给定的输出与所述目标单元进行匹配,提取执行上下文信息,包括:
基于相关例程,将用户给定的输出与目标的正则表达式进行匹配运算,匹配后形成结构化的执行上下文信息;正则表达式中的捕获组提取到的信息作为额外的上下文信息。
在一个实施例中,根据所述执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖,包括:
根据所述执行上下文信息以及额外的上下文信息对所述依赖单元进行编译,得到前序输出;
根据所述前序输出,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖。
在一个实施例中,在根据所述具体的依赖,判断输出要求的依赖是否均已存在之前,还包括:
判断用户定义的输出是否存在且为最新,若是,则不需要执行该规则定义的动作;
若否,则根据所述具体的依赖,判断输出要求的依赖是否均已存在。
一种基于规则数据处理工作流定义的装置,所述装置包括:
规则编译模块;用于基于规则定义工作流结构,所述工作流结构包括依序执行的一系列动作,所述动作以及所述动作与其它动作的关系由一条规则定义;所述规则包括:目标单元、依赖单元以及动作单元;根据所述目标单元中的正则表达式,构建文本匹配与提取的相关例程;
依赖解析模块;基于相关例程,将用户给定的输出与所述目标单元进行匹配,提取执行上下文信息;根据所述执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖,将所述具体的依赖加入所述执行上下文信息中,得到新的上下文信息;
规则执行模块;根据所述具体的依赖,判断输出要求的依赖是否均已存在;若否,将所述具体的依赖作为输出进行解析,递归寻找生成依赖的规则;
动作协议模块,用于获取所述新的上下文信息,对所述动作单元中的代码进行编译,得到动作代码;将所述动作代码提供给所述动作单元,根据所述动作单元中指明的协议执行相应的动作。
在一个实施例中,所述目标单元包括目标类型以及一个及以上的节;所述节包含至少一个正则表达式;
所述依赖单元包括主要依赖以及次要依赖;所述主要依赖由包含多个节的目标自动用除最后一个节的所有节构建的,所述次要依赖为装置中已经显式指明的部分依赖;
所述动作单元包括一个及以上的动作协议以及直接嵌入的多种语言的代码;所述动作协议支持动态配置,在规则脚本中进行统一配置,或在单个规则内覆写配置。
在一个实施例中,所述动作协议模块采用插件式结构,模块实现脚本生成、脚本执行基础功能即可在规则定义中进行调用。
一种计算机终端设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
步骤A,基于规则定义工作流结构,所述工作流结构包括依序执行的一系列动作,所述动作以及所述动作与其它动作的关系由一条规则定义;所述规则包括:目标单元、依赖单元以及动作单元;根据所述目标单元中的正则表达式,构建文本匹配与提取的相关例程;
步骤B,基于相关例程,将用户给定的输出与所述目标单元进行匹配,提取执行上下文信息;根据所述执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖,将所述具体的依赖加入所述执行上下文信息中,得到新的上下文信息;
步骤C,根据所述具体的依赖,判断输出要求的依赖是否均已存在;若否,将所述具体的依赖作为输出进行解析,递归寻找生成依赖的规则;
步骤D,将所述新的上下文信息提供给动作单元,对所述动作单元中的代码进行编译,得到动作代码;将所述动作代码提供给所述动作单元,根据所述动作单元中指明的协议执行相应的动作。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
步骤A,基于规则定义工作流结构,所述工作流结构包括:目标单元、依赖单元以及动作单元;根据所述目标单元中的正则表达式,构建文本匹配与提取的相关例程;
步骤B,基于相关例程,将用户给定的输出与所述目标单元进行匹配,提取执行上下文信息;根据所述执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖,将所述具体的依赖加入所述执行上下文信息中,得到新的上下文信息;
步骤C,根据所述具体的依赖,判断输出要求的依赖是否均已存在;若否,将所述具体的依赖作为输出进行解析,递归寻找生成依赖的规则;
步骤D,将所述新的上下文信息提供给动作单元,对所述动作单元中的代码进行编译,得到动作代码;将所述动作代码提供给所述动作单元,根据所述动作单元中指明的协议执行相应的动作。
上述基于规则的数据处理工作流定义方法、装置、终端及介质,基于规则定义工作流结构,根据目标单元中的正则表达式,构建文本匹配与提取的相关例程;基于相关例程,将用户给定的输出与目标单元进行匹配,提取执行上下文信息;根据执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖,增加了装置对于复杂依赖的表达能力,增强了数据处理工作流逻辑的表达能力。根据具体的依赖,判断输出要求的依赖是否均已存在;若否,将具体的依赖作为输出进行解析,递归寻找生成依赖的规则,完成依赖的编译;当依赖编译完成,将编译完成的依赖加入执行上下文信息中,得到新的上下文信息;将新的上下文信息提供给动作单元,对动作单元中的代码进行编译,得到动作代码;将动作代码提供给所述动作单元,根据所述动作单元中指明的协议执行相应的动作,保证对不同的用户定义输出生成不同的执行代码,进一步增强了装置的动态执行能力,实现协议的快速调用。
附图说明
图1为一个实施例中基于规则的逻辑定义图;其中(a)表示基于规则的数据处理的方法,(b)表示规则中各单元的组成。
图2为一个实施例中基于规则的数据处理工作流定义方法流程图;
图3为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本发明的目的是为数据处理应用开发人员或数据分析研究人员提供一个高效、易用的数据处理工作流定义方法与装置。用户可以通过编写脚本构建常见支持数据处理任务的工具,在装置中运行。通过嵌入多种程序语言,用户可以直接调用不同语言的常见数据处理工具,如SQL语言,python语言中的pandas、numpy等。
为了便于理解本发明,首先对规则的逻辑定义进行解释,如图1所示,规则由目标、依赖与一串动作构成,(a)图中,当欲获取的输出匹配规则中定义的目标,则考虑如何通过该规则生成制定的输出。这时首先确认所有依赖是否均已满足,如均满足,则按顺序执行动作串,如不满足,将依赖作为输出进行解析,递归寻找可以生成依赖的规则。(b)图中,目标由类型与若干节组成,类型指明了最终生成的目标是什么类型的,比如csv、txt、pdf等,节指明了生成该目标的主体流程;除了在部分显式指明的次要依赖,包含多个节的目标还会自动用除最后一个节的所有节构建一个目标作为主要依赖(输入),主要依赖在后续处理时与次要依赖并无区别,但是可以简化单输入条件下的规则定义,依赖由若干目标组成;动作由协议与代码组成,代码中可以引用将输出匹配到规则时产生的自动变量,如输出、输入、依赖项等。
目标单元、依赖单元、动作单元均支持模式匹配,以表达更为抽象的规则,而不是每个规则只针对单一输出,这可以极大提升本定义方法的表达能力。目标的每一个节至少包含一个正则表达式,该表达式可以对可匹配的输出进行限制,也可以通过在定义正则表达式时设置捕获组提取输出中的部分文本。这些提取的文本与匹配时生成的结构化信息(如输入、输出等)一起构成任务的上下文信息,可以在依赖或动作代码中使用。依赖中的目标不可以包含正则表达式,但是可以包含模板字符串,指示装置填入目标匹配时抽取的文本;动作代码中可以填入特殊字符串,指示装置填入任务的上下文信息,从而实现对嵌入的多语言代码进行定制。
在一个实施例中,如图2所示,提供了一种基于规则的数据处理工作流定义方法,包括以下步骤:
S1,基于规则定义工作流结构,工作流结构包括依序执行的一系列动作,所述动作以及所述动作与其它动作的关系由一条规则定义;所述规则包括:目标单元、依赖单元以及动作单元;根据目标单元中的正则表达式,构建文本匹配与提取的相关例程。
具体的,将已定义的工作流基于规则编译成易于匹配和执行的数据结构,即目标单元、依赖单元、动作单元等。解析目标单元中定义的正则表达式,构建文本匹配与提取的相关例程,供规则执行时调用。
值得说明的是,将已定义的工作流基于规则编译成易于匹配和执行的数据结构,相当于将工作流进行了单元划分。以规则作为工作流描述的基础单元,集成了目标、依赖以及动作,可以表述任务之间的复杂依赖关系。具体做法为,对单个目标或一类目标,识别其直接依赖的其它目标,编写规则描述该目标如何从这些依赖生成;对被依赖的目标进行同样的操作,编写规则说明这些目标如何由它们各自的直接依赖生成,递归进行此动作,直到考察的目标是已经存在的资源。在执行工作流时,根据所要生成的最终目标,规则被递归地匹配形成相互依赖的任务。与只能表达静态依赖关系的通常工作流定义不同,这些任务之间的依赖关系是动态生成的,这使得基于规则的数据处理工作流定义可以表达更为复杂的依赖逻辑。其中,动作可以包含不同的协议,直接嵌入多种语言的代码,实现模块的快速调用。
S2,基于相关例程,将用户给定的输出与目标单元进行匹配,提取执行上下文信息;根据执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖,将所述具体的依赖加入所述执行上下文信息中,得到新的上下文信息;
具体的,当用户给定输出时,根据目标匹配结果和目标单元提取的输出中的信息,对依赖模版进行编译,形成该目标的前序输出,动态搜寻要调用的规则,确定规则动作的依赖关系,构建执行的顺序。其中,目标匹配通过将用户指定的输出与目标的正则表达式进行匹配运算完成。匹配后可以形成结构化的执行上下文信息(如输入、输出等),目标正则表达式定义中的捕获组提取到的信息也可作为额外的上下文信息。基于这些上下文信息装置将依赖单元编译成具体的依赖,并且把这些依赖也加入执行上下文信息,供规则执行时编译动作代码使用。
值得说明的是,动态搜寻调用的过程,就是将抽象的规则具体化为工作流任务的过程,由于依赖是在运行时进行解析而不是像传统工作流装置一样构建静态的运行图,装置可以根据规则匹配的情况对不同的输出调用不同的动作,增加了装置对于复杂依赖的表达能力。
S3,根据具体的依赖,判断输出要求的依赖是否均已存在;若否,将具体的依赖作为输出进行解析,递归寻找生成依赖的规则。
具体的,首先判定输出要求的文件是否已存在且为最新,如果是,则不需执行当前规则。如果不是,则判断是否所有依赖要求的文件均已存在,对于尚不存在的,以该依赖作为目标搜寻和执行可以生成该依赖的规则,如所有均存在,根据步骤B提供的执行上下文信息,对本规则的动作代码进行编译,提供给协议执行。如此可以保证对不同输出生成不同的执行代码,进一步增加装置的动态执行能力。
S4,将新的上下文信息提供给动作单元,对动作单元中的代码进行编译,得到动作代码;将动作代码提供给动作单元,根据所述动作单元中指明的协议执行相应的动作。
值得说明的是,动作单元由协议与代码组成,可以提供何种代码与协议有关,如shell协议可以提供bash脚本,python协议可以提供python代码等。动作单元根据动作代码,增加必要的周边代码形成可执行脚本,调用脚本并收集运行结果。
上述基于规则的数据处理工作流定义方法,基于规则定义工作流结构,根据目标单元中的正则表达式,构建文本匹配与提取的相关例程;基于相关例程,将用户给定的输出与目标单元进行匹配,提取执行上下文信息;根据执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖,增加了装置对于复杂依赖的表达能力,增强了数据处理工作流逻辑的表达能力。根据具体的依赖,判断输出要求的依赖是否均已存在;若否,将具体的依赖作为输出进行解析,递归寻找可以生成依赖的规则,完成依赖的编译;当依赖编译完成,将编译完成的依赖加入执行上下文信息中,得到新的上下文信息;将新的上下文信息提供给动作单元,对动作单元中的代码进行编译,得到动作代码;将动作代码提供给所述动作单元,根据所述动作单元中指明的协议执行相应的动作,保证对不同的用户定义输出生成不同的执行代码,进一步增强了装置的动态执行能力,实现协议的快速调用。
本发明以文本代码的方式基于规则编写工作流,工作流定义可以直接进入版本管理,更新工作流定义无需重新计算所有步骤,具有良好的可重复性。本发明支持的依赖动态解析、模式匹配、动作协议等功能,可以对不同输入采用不同的运行方式,大大增强装置的表达能力与集成能力,可以根据需要进行多语言调用。本发明在大数据分析处理、可重复研究等领域具有较好的应用前景。
为了使本发明便于理解,提供一个具体示例说明如何使用本方法编写工作流:
例如,定义一个工作流来计算某个国家内地震的点位,假设已有全球所有地震点位数据earthquake.json。又假设已有程序脚本util.py定义了生成指定国家的边界轮廓文件(china.poly和germany.poly)的功能和根据轮廓筛选点位的功能。此时可将工作流基于规则进行定义,其中:
规则1目标为poly china,动作为调用生成该文件的相关功能;
规则2目标为poly germany,动作为调用生成该文件的相关功能;
规则3目标为json ‘\w+’ earthquake,额外依赖为json earthquake,动作为对地震点位进行筛选;
当用户要求输出json china earthquake,执行流程如下:
1)输出可匹配规则3的目标,此时确定两个依赖(输入poly china,额外依赖jsonearthquake),其中对json earthquake找到了已有文件earthquake.json,对poly china,暂不存在对应文件。
2)以poly china为输出,匹配到规则1的目标,此规则无依赖,用输出等上下文对动作代码中的占位符进行替换,生成可运行的代码,执行代码。
3)此时回到规则3,依赖均已满足,用输出等上下文对动作代码中的占位符进行替换,生成代码并执行相应协议,生成用户要求的输出json earthquake。
当用户要求输出json germany earthquake,执行与上述相似的流程,但是在2)时匹配到规则2,执行的也是规则2的动作,在3)时,替换占位符的上下文也不同(如输入是poly germany而不是poly china)。
在一个实施例中,正则表达式用于对可匹配的用户给定输出进行限制,并设置捕获组提取输出中的部分文本。
在一个实施例中,基于相关例程,将用户给定的输出与目标单元进行匹配,提取执行上下文信息,包括:基于相关例程,将用户给定的输出与目标的正则表达式进行匹配运算,匹配后形成结构化的执行上下文信息;正则表达式中的捕获组提取到的信息作为额外的上下文信息。
在一个实施例中,根据执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖,包括:根据执行上下文信息以及额外的上下文信息对依赖单元进行编译,得到前序输出;根据前序输出,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖。
在一个实施例中,在根据具体的依赖,判断输出要求的依赖是否均已存在之前,还包括:判断用户定义的输出是否存在且为最新,若是,则不需要执行该规则定义的动作;若否,则根据具体的依赖,判断输出要求的依赖是否均已存在。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,提供了一种基于规则数据处理工作流定义的装置,包括:
规则编译模块;用于基于规则定义工作流结构,工作流结构包括依序执行的一系列动作,所述动作以及所述动作与其它动作的关系由一条规则定义;所述规则包括:目标单元、依赖单元以及动作单元;根据目标单元中的正则表达式,构建文本匹配与提取的相关例程;
依赖解析模块;基于相关例程,将用户给定的输出与目标单元进行匹配,提取执行上下文信息;根据执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖,将所述具体的依赖加入所述执行上下文信息中,得到新的上下文信息;
规则执行模块;根据具体的依赖,判断输出要求的依赖是否均已存在;若否,将具体的依赖作为输出进行解析,递归寻找生成依赖的规则;
动作协议模块,用于获取新的上下文信息,对动作单元中的代码进行编译,得到动作代码;将动作代码提供给动作单元,根据所述动作单元中指明的协议执行相应的动作。
值得说明的是,动作协议模块采用插件式结构,模块只要实现脚本生成、脚本执行等基础功能即可在规则定义中进行调用。动作协议模块根据规则执行模块生成的动作代码,增加必要的周边代码形成可执行脚本,调用脚本并收集运行结果。动作协议支持动态配置,可以在规则脚本中进行统一配置,也可以在单个规则内覆写配置。本装置预先实现了shell、python与SQL协议,将来可根据需要插入更多协议。
在一个实施例中,目标单元包括目标类型以及一个及以上的节;节包含至少一个正则表达式;依赖单元包括主要依赖以及次要依赖;主要依赖由包含多个节的目标自动用除最后一个节的所有节构建的,次要依赖为装置中已经显式指明的部分依赖;动作单元包括一个及以上的动作协议以及直接嵌入的多种语言的代码;动作协议支持动态配置,在规则脚本中进行统一配置,或在单个规则内覆写配置。
在一个实施例中,动作协议模块采用插件式结构,模块实现脚本生成、脚本执行等基础功能即可在规则定义中进行调用。
关于基于规则数据处理工作流定义的装置的具体限定可以参见上文中对于基于规则数据处理工作流定义的方法的限定,在此不再赘述。上述基于规则数据处理工作流定义的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图3所示。该计算机设备包括通过装置总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置和计算机程序。该内存储器为非易失性存储介质中的操作装置和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于规则的数据处理工作流定义方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
步骤A,基于规则定义工作流结构,所述工作流结构包括依序执行的一系列动作,每个动作及其与其它动作的关系由一条规则定义;所述规则包括:目标单元、依赖单元以及动作单元;根据所述目标单元中的正则表达式,构建文本匹配与提取的相关例程;
步骤B,基于相关例程,将用户给定的输出与所述目标单元进行匹配,提取执行上下文信息;根据所述执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖,将所述具体的依赖加入所述执行上下文信息中,得到新的上下文信息;
步骤C,根据所述具体的依赖,判断输出要求的依赖是否均已存在;若否,将所述具体的依赖作为输出进行解析,递归寻找生成依赖的规则;
步骤D,将所述新的上下文信息提供给动作单元,对所述动作单元中的代码进行编译,得到动作代码;将所述动作代码提供给所述动作单元,根据所述动作单元中指明的协议执行相应的动作。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
步骤A,基于规则定义工作流结构,所述工作流结构包括依序执行的一系列动作,所述动作以及所述动作与其它动作的关系由一条规则定义;所述规则包括:目标单元、依赖单元以及动作单元;根据所述目标单元中的正则表达式,构建文本匹配与提取的相关例程;
步骤B,基于相关例程,将用户给定的输出与所述目标单元进行匹配,提取执行上下文信息;根据所述执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖,将所述具体的依赖加入所述执行上下文信息中,得到新的上下文信息;
步骤C,根据所述具体的依赖,判断输出要求的依赖是否均已存在;若否,将所述具体的依赖作为输出进行解析,递归寻找生成依赖的规则;
步骤D,将所述新的上下文信息提供给动作单元,对所述动作单元中的代码进行编译,得到动作代码;将所述动作代码提供给所述动作单元,根据所述动作单元中指明的协议执行相应的动作。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于规则数据处理工作流定义的方法,其特征在于,所述方法包括:
基于规则定义工作流结构,所述工作流结构包括依序执行的一系列动作,所述动作以及所述动作与其它动作的关系由一条规则定义;所述规则包括:目标单元、依赖单元以及动作单元;根据所述目标单元中的正则表达式,构建文本匹配与提取的相关例程;
基于相关例程,将用户给定的输出与所述目标单元进行匹配,提取执行上下文信息;根据所述执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖;将所述具体的依赖加入所述执行上下文信息中,得到新的上下文信息;
根据所述具体的依赖,判断输出要求的依赖是否均已存在;若否,将所述具体的依赖作为输出进行解析,递归寻找生成依赖的规则;
将所述新的上下文信息提供给动作单元,对所述动作单元中的代码进行编译,得到动作代码;将所述动作代码提供给所述动作单元,根据所述动作单元中指明的协议执行相应的动作。
2.根据权利要求1所述的方法,其特征在于,所述正则表达式用于对可匹配的用户给定输出进行限制,并设置捕获组提取输出中的部分文本。
3.根据权利要求1或2所述的方法,其特征在于,基于相关例程,将用户给定的输出与所述目标单元进行匹配,提取执行上下文信息,包括:
基于相关例程,将用户给定的输出与目标的正则表达式进行匹配运算,匹配后形成结构化的执行上下文信息;正则表达式中的捕获组提取到的信息作为额外的上下文信息。
4.根据权利要求3所述的方法,其特征在于,根据所述执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖,包括:
根据所述执行上下文信息以及额外的上下文信息对所述依赖单元进行编译,得到前序输出;
根据所述前序输出,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖。
5.根据权利要求4所述的方法,其特征在于,在根据所述具体的依赖,判断输出要求的依赖是否均已存在之前,还包括:
判断用户定义的输出是否存在且为最新,若是,则不需要执行该规则定义的动作;
若否,则根据所述具体的依赖,判断输出要求的依赖是否均已存在。
6.一种基于规则数据处理工作流定义的装置,其特征在于,所述装置包括:
规则编译模块;用于基于规则定义工作流结构,所述工作流结构包括依序执行的一系列动作,所述动作以及所述动作与其它动作的关系由一条规则定义;所述规则包括:目标单元、依赖单元以及动作单元;根据所述目标单元中的正则表达式,构建文本匹配与提取的相关例程;
依赖解析模块;基于相关例程,将用户给定的输出与所述目标单元进行匹配,提取执行上下文信息;根据所述执行上下文信息,动态搜寻需要调用的依赖单元,将相应的依赖单元编译成具体的依赖,将所述具体的依赖加入所述执行上下文信息中,得到新的上下文信息;
规则执行模块;根据所述具体的依赖,判断输出要求的依赖是否均已存在;若否,将所述具体的依赖作为输出进行解析,递归寻找生成依赖的规则;
动作协议模块,用于获取所述新的上下文信息,对所述动作单元中的代码进行编译,得到动作代码;将所述动作代码提供给所述动作单元,根据所述动作单元中指明的协议执行相应的动作。
7.根据权利要求6所述的装置,其特征在于:
所述目标单元包括目标类型以及一个及以上的节;所述节包含至少一个正则表达式;
所述依赖单元包括主要依赖以及次要依赖;所述主要依赖由包含多个节的目标自动用除最后一个节的所有节构建的,所述次要依赖为装置中已经显式指明的部分依赖;
所述动作单元包括一个及以上的动作协议以及直接嵌入的多种语言的代码;所述动作协议支持动态配置,在规则脚本中进行统一配置,或在单个规则内覆写配置。
8.根据权利要求7所述的装置,其特征在于,所述动作协议模块采用插件式结构,模块实现脚本生成、脚本执行基础功能即可在规则定义中进行调用。
9.一种计算机终端,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211112740.5A CN115185502B (zh) | 2022-09-14 | 2022-09-14 | 基于规则的数据处理工作流定义方法、装置、终端及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211112740.5A CN115185502B (zh) | 2022-09-14 | 2022-09-14 | 基于规则的数据处理工作流定义方法、装置、终端及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115185502A true CN115185502A (zh) | 2022-10-14 |
CN115185502B CN115185502B (zh) | 2022-11-15 |
Family
ID=83524648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211112740.5A Active CN115185502B (zh) | 2022-09-14 | 2022-09-14 | 基于规则的数据处理工作流定义方法、装置、终端及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115185502B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290297A1 (en) * | 2012-04-26 | 2013-10-31 | Sap Ag | Rule-Based Extendable Query Optimizer |
US20170372442A1 (en) * | 2016-06-23 | 2017-12-28 | Radicalogic Technologies, Inc. | Healthcare workflow system |
CN110059176A (zh) * | 2019-02-28 | 2019-07-26 | 南京大学 | 一种基于规则的通用文本信息抽取和信息生成方法 |
US20190361686A1 (en) * | 2018-05-24 | 2019-11-28 | Find it EZ Software Corp. | Methods, systems, apparatuses and devices for facilitating change impact analysis (cia) using modular program dependency graphs |
WO2020083050A1 (zh) * | 2018-10-23 | 2020-04-30 | 华为技术有限公司 | 一种数据流处理方法及相关设备 |
CN113826070A (zh) * | 2019-02-25 | 2021-12-21 | 微软技术许可有限责任公司 | 工作流引擎工具 |
-
2022
- 2022-09-14 CN CN202211112740.5A patent/CN115185502B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290297A1 (en) * | 2012-04-26 | 2013-10-31 | Sap Ag | Rule-Based Extendable Query Optimizer |
US20170372442A1 (en) * | 2016-06-23 | 2017-12-28 | Radicalogic Technologies, Inc. | Healthcare workflow system |
US20190361686A1 (en) * | 2018-05-24 | 2019-11-28 | Find it EZ Software Corp. | Methods, systems, apparatuses and devices for facilitating change impact analysis (cia) using modular program dependency graphs |
WO2020083050A1 (zh) * | 2018-10-23 | 2020-04-30 | 华为技术有限公司 | 一种数据流处理方法及相关设备 |
CN113826070A (zh) * | 2019-02-25 | 2021-12-21 | 微软技术许可有限责任公司 | 工作流引擎工具 |
CN110059176A (zh) * | 2019-02-28 | 2019-07-26 | 南京大学 | 一种基于规则的通用文本信息抽取和信息生成方法 |
Non-Patent Citations (3)
Title |
---|
U/INSUFFICIENT_FUNDS: "RegEx in a SPD workflow?", 《HTTPS://WWW.REDDIT.COM/R/SHAREPOINT/COMMENTS/15U7N5/REGEX_IN_A_SPD_WORKFLOW/》 * |
双鬼带单: "Java|在Java中执行动态表达式语句:前中后缀、Ognl、SpEL、Groovy、Jexl3", 《HTTPS://WWW.JIANSHU.COM/P/A37D5F412C54》 * |
黄凯锋: "基于工作流的高校外事管理系统的研究与设计", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN115185502B (zh) | 2022-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109901834B (zh) | 文档页面生成方法、装置、计算机设备和存储介质 | |
Catal et al. | Practical development of an Eclipse-based software fault prediction tool using Naive Bayes algorithm | |
Nguyen et al. | Graph-based pattern-oriented, context-sensitive source code completion | |
CN103577168A (zh) | 测试用例创建系统及方法 | |
CN105683924A (zh) | 通过从在本机模式中执行转变为在经解释的模式中执行来调试本机代码 | |
CN104115120A (zh) | 将程序执行从编译代码变换到解释代码 | |
US8621429B2 (en) | Software development support apparatus, function extension method and storage medium for storing function extension program | |
CN111507086A (zh) | 本地化应用程序中翻译文本位置的自动发现 | |
Langhammer et al. | Automated extraction of rich software models from limited system information | |
CN111581271A (zh) | 接口参数确定方法、装置、计算机设备和存储介质 | |
Kuschke et al. | Recommending auto-completions for software modeling activities | |
CN111324716A (zh) | 指标数据获取方法、装置、计算机设备和存储介质 | |
D’Souza et al. | Collective intelligence for smarter API recommendations in python | |
Celik et al. | iCoq: Regression proof selection for large-scale verification projects | |
CN110955608A (zh) | 测试数据处理方法、装置、计算机设备和存储介质 | |
Wu et al. | CoDocent: Support API usage with code example and API documentation | |
CN115185502B (zh) | 基于规则的数据处理工作流定义方法、装置、终端及介质 | |
Saumya et al. | Xstressor: Automatic generation of large-scale worst-case test inputs by inferring path conditions | |
CN110413284B (zh) | 词法分析方法、装置、计算机设备和存储介质 | |
CN114816971A (zh) | 一种数据处理方法、相关设备及存储介质 | |
Falleri et al. | The harmony platform | |
Alshraideh | A complete automation of unit testing for JavaScript programs | |
Mesnard et al. | Towards a framework for algorithm recognition in binary code | |
CN110286894B (zh) | 脚本生成方法、装置、计算机设备和存储介质 | |
Silva et al. | Model driven engineering for performance testing in mobile applications |
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 |