CN103440128B - 数据处理方法和装置 - Google Patents
数据处理方法和装置 Download PDFInfo
- Publication number
- CN103440128B CN103440128B CN201310368103.9A CN201310368103A CN103440128B CN 103440128 B CN103440128 B CN 103440128B CN 201310368103 A CN201310368103 A CN 201310368103A CN 103440128 B CN103440128 B CN 103440128B
- Authority
- CN
- China
- Prior art keywords
- node
- rule
- compiled
- preserved
- data content
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据处理方法和装置,该方法包括:接收待处理的数据;根据待处理的数据的内容,确定规则流模型;按照预先定义的编译限制对规则流模型中各个节点所保存的数据内容进行编译,得到可执行脚本,其中,不同类型的数据内容对应不同的编译限制;调用可执行脚本对所述待处理的数据进行处理。在本发明中,通过上述方式解决了现有技术中基于规则的数据处理是通过预先设定好的可执行脚本进行而导致的数据处理的灵活性较低的技术问题,达到了有效提高利用规则进行数据处理的灵活性的技术效果。
Description
技术领域
本发明涉及计算机领域,特别涉及一种数据处理方法和装置。
背景技术
规则流,类似于工作流,是将大量的规则连接在一起,按照特定的顺序编排执行,规则执行的顺序构成了规则流。其中,规则一般是使用特定的规则语言或规则脚本描述的,例如可以采用类面向对象的技术化脚本描述规则。在一个规则流的规则文件中,可以定义多条规则,其中,单条规则可以按照如下的结构描述:
其中,LHS由多个条件元素子句构成,用于描述该规则需要满足的条件的集合,RHS由多条动作子句构成,用于描述在LHS中的条件满足的情况下,需要执行的动作。
将规则流应用到流程化操作中就形成了规则引擎,最早的规则引擎来源于人工智能领域中的专家系统,专家系统是使用知识库对业务数据进行处理并推断出相关的结论的一种方式。将规则引擎应用到生产中就是执行一组判断条件的逻辑(即一段规则流)来得到所需的结果的系统,规则引擎使得对复杂的判断的执行操作可以通过计算机来完成,从而使得人可以从繁杂的规则判断中解脱出来。进一步的,规则引擎是使用符合特定语法的规则语言进行规则定义的,通常规则和应用代码是相互分离的,并且采用申明的方式告诉计算机“需要做什么”,而不是“怎么做”。具体的,规则引擎接受数据输入,然后解释业务规则、并根据业务规则对输出的数据进行处理,以做出相应的决策。通过规则引擎的广泛应用实现了业务规则的编辑、管理和部署,从而适应了业务和市场快速变化的要求。
然而,目前可以灵活设置的规则流中一般都仅有一条单一的规则;对于包含多条规则的规则流,各个规则的内容以及各个规则之间的执行顺序都是预先设置好的,直接按照预先设置的内容和顺序执行即可,人为无法对规则的内容或者各个规则的执行顺序进行设置,从而严重限制了规则引擎的使用范围,使用的灵活性也很低。
目前,针对如何利用规则流对数据进行灵活有效的处理尚未提出有效的解决方案。
发明内容
本发明提供了一种数据处理方法和装置,解决了现有技术中基于规则的数据处理是通过预先设定好的可执行脚本进行而导致的数据处理的灵活性较低的技术问题。
本发明实施例提供了一种数据处理方法,包括:接收待处理的数据;根据待处理的数据的内容,确定规则流模型;按照预先定义的编译限制对规则流模型中各个节点所保存的数据内容进行编译,得到可执行脚本,其中,不同类型的数据内容对应不同的编译限制;调用可执行脚本对所述待处理的数据进行处理。
在一个实施例中,各个节点所保存的数据内容由一条或多条规则组成,其中,多条规则以树或者表的形式呈现。
在一个实施例中,根据节点中保存的数据内容的类型,规则流模型中的节点被划分为以下类型:用于表示规则流模型所表示的规则流开始执行的开始节点、用于表示规则流模型所表示的规则流执行结束的结束节点、用于执行规则流模型的规则匹配的规则集节点、用于执行规则流模型的规则执行分支的分支节点、用于由当前执行的规则跳转到另外一个规则执行的子流程节点。
在一个实施例中,所述编译限制包括以下至少之一:在被编译的节点为开始节点的情况下,确定该开始节点是否处于规则流模型的主流程中,如果是,则将该开始节点的规则名称编译为主流程的开始节点,如果不是,则将该开始节点的规则名称编译为子流程的开始节点;
或者,在被编译的节点为结束节点的情况下,如果该结束节点处于规则流模型的主流程中,且该结束节点的祖先节点中没有或者条件的选择节点,则将该结束节点所保存的数据内容编译为执行暂停操作;如果该结束节点处于规则流模型的主流程中,且该结束节点的祖先节点中存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行与该结束节点最近的祖先或者条件的选择节点所保存的数据内容,将该结束节点的规则名称编译为结束节点;如果该结束节点处于规则流模型的子流程中,且该结束节点的祖先节点中存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行与该结束节点最近的祖先或者条件的选择节点所保存的数据内容,将该结束节点的规则名称编译为该结束节点的上层父流程中子流程节点的结束节点;如果该结束节点处于规则流模型的子流程中,且该结束节点的祖先节点中不存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行该结束节点的上层父流程中子流程节点的规则集所保存的数据内容,将该结束节点的规则名称编译为该结束节点的上层父流程中子流程节点的结束节点;
或者,在被编译的节点为规则集节点的情况下,在所述规则集节点中的各个规则都编译完成后,增加一个最低优先级的跳转规则,该跳转规则的作用是跳转到该规则集节点的后继节点中所保存的数据内容进行编译;
或者,在被编译的节点为或者条件的分支节点,且该分支节点的所有分支上保存的数据内容都已经编译完的情况下,如果该分支节点的祖先节点中没有或者条件的选择节点且该分支节点处于主流程中,则将该分支节点所保存的数据内容编译为执行结束操作;如果该分支节点的祖先节点中存在或者条件的选择节点,则将该分支节点所保存的数据内容编译为执行与该分支节点最近的祖先或者条件的选择节点所保存的数据内容;如果该分支节点的祖先节点中不存在或者条件的选择节点,且该分支节点位于子流程中,则将该分支节点所保存的数据内容编译为跳转到对该分支节点的父流程的规则组中所保存的数据内容进行编译;
或者,在被编译的节点为子流程节点的情况下,将该子流程节点所保存的数据内容编译为跳转到执行该子流程节点的规则集节点所保存的数据内容,在该规则集节点中的各个规则都编译完成后,跳转至对该子流程节点的后继节点所保存的数据内容进行编译。
在一个实施例中,可执行脚本中包括:节点的节点名称、节点的判断条件、节点的执行动作、节点中规则的优先级。
本发明实施例还提供了一种数据处理装置,包括:接收模块,用于接收待处理的数据;确定模块,用于根据待处理的数据的内容,确定规则流模型;编译模块,用于按照预先定义的编译限制对规则流模型中各个节点所保存的数据内容进行编译,得到可执行脚本,其中,不同类型的数据内容对应不同的编译限制;处理模块,用于调用可执行脚本对所述待处理的数据进行处理。
在一个实施例中,各个节点所保存的数据内容由一条或多条规则组成,其中,多条规则以树或者表的形式呈现。
在一个实施例中,根据节点中保存的数据内容的类型,规则流模型中的节点被划分为以下类型:用于表示规则流模型所表示的规则流开始执行的开始节点、用于表示规则流模型所表示的规则流执行结束的结束节点、用于执行规则流模型的规则匹配的规则集节点、用于执行规则流模型的规则执行分支的分支节点、用于由当前执行的规则跳转到另外一个规则执行的子流程节点。
在一个实施例中,编译模块按照以下至少之一的编译限制对规则流模型中各个节点所保存的数据内容进行编译:在被编译的节点为开始节点的情况下,确定该开始节点是否处于规则流模型的主流程中,如果是,则将该开始节点的规则名称编译为主流程的开始节点,如果不是,则将该开始节点的规则名称编译为子流程的开始节点;
或者,在被编译的节点为结束节点的情况下,如果该结束节点处于规则流模型的主流程中,且该结束节点的祖先节点中没有或者条件的选择节点,则将该结束节点所保存的数据内容编译为执行暂停操作;如果该结束节点处于规则流模型的主流程中,且该结束节点的祖先节点中存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行与该结束节点最近的祖先或者条件的选择节点所保存的数据内容,将该结束节点的规则名称编译为结束节点;如果该结束节点处于规则流模型的子流程中,且该结束节点的祖先节点中存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行与该结束节点最近的祖先或者条件的选择节点所保存的数据内容,将该结束节点的规则名称编译为该结束节点的上层父流程中子流程节点的结束节点;如果该结束节点处于规则流模型的子流程中,且该结束节点的祖先节点中不存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行该结束节点的上层父流程中子流程节点的规则集所保存的数据内容,将该结束节点的规则名称编译为该结束节点的上层父流程中子流程节点的结束节点;
或者,在被编译的节点为规则集节点的情况下,在所述规则集节点中的各个规则都编译完成后,增加一个最低优先级的跳转规则,该跳转规则的作用是跳转到该规则集节点的后继节点中所保存的数据内容进行编译;
或者,在被编译的节点为或者条件的分支节点,且该分支节点的所有分支上保存的数据内容都已经编译完的情况下,如果该分支节点的祖先节点中没有或者条件的选择节点且该分支节点处于主流程中,则将该分支节点所保存的数据内容编译为执行结束操作;如果该分支节点的祖先节点中存在或者条件的选择节点,则将该分支节点所保存的数据内容编译为执行与该分支节点最近的祖先或者条件的选择节点所保存的数据内容;如果该分支节点的祖先节点中不存在或者条件的选择节点,且该分支节点位于子流程中,则将该分支节点所保存的数据内容编译为跳转到对该分支节点的父流程的规则组中所保存的数据内容进行编译;
或者,在被编译的节点为子流程节点的情况下,将该子流程节点所保存的数据内容编译为跳转到执行该子流程节点的规则集节点所保存的数据内容,在该规则集节点中的各个规则都编译完成后,跳转至对该子流程节点的后继节点所保存的数据内容进行编译。
在一个实施例中,可执行脚本中包括:节点的节点名称、节点的判断条件、节点的执行动作、节点中规则的优先级。
在上述实施例中,在接收到待处理的数据后,根据待处理的数据的内容确定规则流模型,然后按照规则流模型中各个节点中保存的数据内容类型的不同按照不同的编译限制进行编译,从而得到对应于接收到的待处理的数据的可执行脚本,然后通过该可执行脚本对待处理的数据进行处理,实现了基于规则的可执行脚本可以灵活设置的目的。通过上述方式解决了现有技术中基于规则的数据处理是通过预先设定好的可执行脚本进行而导致的数据处理的灵活性较低的技术问题,达到了有效提高利用规则进行数据处理的灵活性的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1是本发明实施例的数据处理方法的一种流程图;
图2是本发明实施例的对子流程节点进行转换的转换过程示意图;
图3是本发明实施例的数据处理方法的另一种流程图;
图4是本发明实施例的数据处理装置的一种结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
本发明实施例提供了一种数据处理方法,如图1所示,包括以下步骤:
步骤101:接收待处理的数据;
步骤102:根据待处理的数据的内容,确定规则流模型;
步骤103:按照预先定义的编译限制对规则流模型中各个节点所保存的数据内容进行编译,得到可执行脚本,其中,不同类型的数据内容对应不同的编译限制;
步骤104:调用可执行脚本对所述待处理的数据进行处理。
在上述实施例中,在接收到待处理的数据后,根据待处理的数据的内容确定规则流模型,然后按照规则流模型中各个节点中保存的数据内容类型的不同按照不同的编译限制进行编译,从而得到对应于接收到的待处理的数据的可执行脚本,然后通过该可执行脚本对待处理的数据进行处理,实现了基于规则的可执行脚本可以灵活设置的目的。通过上述方式解决了现有技术中基于规则的数据处理是通过预先设定好的可执行脚本进行而导致的数据处理的灵活性较低的技术问题,达到了有效提高利用规则进行数据处理的灵活性的技术效果。
节点中所保存的数据内容一般是一条或多条规则,如果是多条规则那么这些规则可以通过规则树或者规则表的形式进行呈现或存储。对于各个节点的作用而言,如果一个节点所保存的数据内容中仅包含一条规则,那么表明这个节点仅完成一个逻辑判断;如果一个节点所包含的数据内容中含有多条规则,那么这个节点就可以完成多个逻辑判断,每个逻辑判断对应一个后续的动作。
由上述记载的内容可知,规则可以由属性,LHS和RHS等几部分组成。其中,属性可以包括以下几个方面:
1)salience:表示优先级,可以integer整型表示,值越大表示优先级越高,当一个节点中包括多个规则时,规则引擎将优先匹配优先级高的规则,可以将salience的取值默认设置为0;
2)no-loop:用于表示该规则是否需要循环,可以通过boolean布尔型表示,如果取值为true则表明该条规则在本次规则流仅会被匹配一次,不需要循环;
3)agenda-group:表示议程组,可以通过string字符串型表示,用于表示规则所处的分组(或者说是该规则位于哪个节点中)的名称,不同规则可以有相同的分组,然而一条规则只能属于一个分组,如果该属性没有对应的值,则认为该规则属于MAIN组(即主组);规则引擎在处理规则匹配的时候总是从MAIN组开始匹配,某条规则的动作部分可以通过setFocus(the name of another agenda-group)来切换到另一套规则的匹配,这也称作规则分组执行的“跳转”;规则引擎在执行的过程中,只有一个议程组是被激活的,某条单规则被触发执行的条件除了LHS部分与事实对象匹配之外,当前激活的议程组也必须与该规则中agenda-group属性值一致。例如:
在上例中,rule-1在执行完匹配操作后(为了简化说明,规则的条件部分在本例中设置为永真条件:Always True Condition),通过调用setFocus跳转到rule-2执行,在rule-2规则的执行动作部分通过halt终止了整个规则流的执行流程。
根据在规则流模型中位置的不同,节点中保存的数据内容的类型也是不同的,根据节点中保存的数据内容类型的不同,可以将规则流模型中的节点划分为以下几种类型:开始节点、结束节点、规则集节点、分支节点、子流程节点。在整个规则流模型中,必须以开始节点(有且唯一)开始,并且以结束节点结束(即在规则流模型中的叶子节点都是结束节点)。下面对上述几种类型的节点进行具体描述:
开始节点(Start Node):用于表示规则流开始执行,开始节点本身不包含任何带有业务逻辑的规则,开始节点的入度为0,出度为1;
结束节点(End Node):用于表示规则流执行结束,结束节点本身也不包含任何带有业务逻辑的规则,结束节点的入度为1,出度为0;
规则集节点(Rule-Set Node):是执行规则匹配的节点,在规则集节点所保存的数据内容中可以有单规则、决策表、决策树等,规则集节点的入度为1,出度为1;
分支节点(Split Node):用于执行规则流模型的规则执行分支,该节点的入度为1,出度为N(大于1的整数),分支节点的每条边都对应着一组条件,相当于单规则的LHS部分,但是没有动作RHS部分,当LHS得到匹配时,执行的动作其实就是“跳转到”对应的节点(条件边的终止节点)进行匹配执行;在实际操作过程中,存在两种类型的分支节点XOR分支和OR分支,其中,XOR分支较为常见,在XOR分支中,分支节点的多条出边只有一条LHS部分会得到满足,规则的执行只会选择一条出边进行执行;OR分支指的是分支节点的多条出边存在多于一条出边的LHS部分得到满足,这时候需要从第一条满足的出边开始执行,当这条出边的对应的操作执行完毕后,重新回到该OR分支节点,进行其它可能的匹配;
子流程节点(Sub-Process Node):子规则流节点本身不包含任何带有业务逻辑的规则。子流程节点所指代的是单个规则流,通过子流程节点可以跳转到另外一个规则流进行匹配执行,当另外一个规则流匹配执行完毕后,跳转到该子流程流节点的后继节点进行匹配执行,子流程节点的入度为1,出度为1;
考虑到在规则流模型中的节点类型的多样性,在将规则流模型转换为可执行脚本的过程,需要针对每种类型的节点设定不同的编译限制,这样才能实现从规则流模型到可执行脚本的有效转换。在一个实施例中,定义了针对上述几种类型的节点的编译限制:
1)开始节点
在被编译的节点为开始节点的情况下,确定该开始节点是否处于规则流模型的主流程中,如果是,则将该开始节点的规则名称编译为主流程的开始节点,如果不是,则将该开始节点的规则名称编译为子流程的开始节点。具体的,在编译的时候,如果开始节点是处于子流程的节点,则可以将该开始节点的名称编译为从主流程进入子流程的子流程节点的名称和开始节点的拼接:
例如,对于某个开始节点可以编译为以下的执行脚本:
其中,agenda-group表示用户为该节点定义的名称,LHS部分为永真条件,RHS部分完成的逻辑则是跳转到下一分组,也就是规则流模型中开始节点的后继节点。其中,agenda-group name的取值规则可以是:如果开始节点处于主流程中(即该开始节点是主流程的开始节点),那么agenda-group name的取值可以设置为MAIN,否则可以设置为“${the agenda-group name of SubProcessNode in the parent process}_Start”(即从父流程中进入子流程的子流程节点的name与“Start”的拼接);
2)结束节点
在被编译的节点为结束节点的情况下,如果该结束节点处于规则流模型的主流程中,且该结束节点的祖先节点中没有或者条件的选择节点,则将该结束节点所保存的数据内容编译为执行暂停操作;如果该结束节点处于规则流模型的主流程中,且该结束节点的祖先节点中存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行与该结束节点最近的祖先或者条件的选择节点所保存的数据内容,将该结束节点的规则名称编译为结束节点;如果该结束节点处于规则流模型的子流程中,且该结束节点的祖先节点中存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行与该结束节点最近的祖先或者条件的选择节点所保存的数据内容,将该结束节点的规则名称编译为该结束节点的上层父流程中子流程节点的结束节点;如果该结束节点处于规则流模型的子流程中,且该结束节点的祖先节点中不存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行该结束节点的上层父流程中子流程节点的规则集所保存的数据内容,将该结束节点的规则名称编译为该结束节点的上层父流程中子流程节点的结束节点。
具体的,如果该结束节点处于主流程中,并且该结束节点的祖先中没有或者条件的选择节点(OR Split节点),在这种情况下就可以将该结束节点中保存的数据内容编译为暂停规则执行的单规则,例如可以编译为:
无论该结束节点是处于主流程中还是处于子流程中,如果该结束节点的祖先中存在OR Split节点,那么该结束节点的作用就是跳回到离该结束节点最近的祖先ORSplit节点执行,因此该结束节点中保存的数据内容可以被编译为:
其中,agenda-group的取值(即,结束节点的名称)根据是否处于子流程中会有所不同,如果是主流程,那么agenda-group可以取值为该节点本身的name,如果结束节点处于子流程中,则agenda-group可以取值可以由上层父流程中子流程节点的name和该结束节点本身name拼接而成(即,${the name of sub-process node in theparent process}_${name});
如果该结束节点处于规则流模型的子流程中,且该结束节点的祖先中不存在ORSplit节点,那么该结束节点的作用就是跳回到父流程中子流程节点所处的规则组中,因此该结束节点中保存的数据内容可以被编译为:
3)规则集节点
在被编译的节点为规则集节点的情况下,在所述规则集节点中的各个规则都编译完成后,增加一个最低优先级的跳转规则,该跳转规则的作用是跳转到该规则集节点的后继节点中所保存的数据内容进行编译。
在规则集节点中保存的数据内容主要包括:单规则、决策表、/决策树等。首先需要对规则集节点中保存的各个规则进行必要的转换,在各个规则被编译完成加入到规则组中后,还需要增加另外一条最低优先级的跳转规则,该跳转规则在其它规则编译完成后被编译,用于指示跳转到该规则集节点的后继节点执行。例如,可以将规则集节点中保存的数据内容编译为:
4)或者条件的分支节点(OR Split节点)
在被编译的节点为或者条件的分支节点,且该分支节点的所有分支上保存的数据内容都已经编译完的情况下,如果该分支节点的祖先节点中没有或者条件的选择节点且该分支节点处于主流程中,则将该分支节点所保存的数据内容编译为执行结束操作;如果该分支节点的祖先节点中存在或者条件的选择节点,则将该分支节点所保存的数据内容编译为执行与该分支节点最近的祖先或者条件的选择节点所保存的数据内容;如果该分支节点的祖先节点中不存在或者条件的选择节点,且该分支节点位于子流程中,则将该分支节点所保存的数据内容编译为跳转到对该分支节点的父流程的规则组中所保存的数据内容进行编译。
分支节点一般有多条附着LHS条件的路由边,这些路由边都需要被编译成为相应的规则,例如可以编译为:
如果分支节点OR Split节点,那么在该分支节点的所有路由边上的规则都被编译完的情况下,有以下三种不同的处理情况:
如果该分支节点的祖先节点中已经没有或者条件的分支节点,并且该分支节点处于主流程中,那么就表明当前的规则匹配已经结束;
如果该分支节点的节点祖先节点中存在或者条件的分支节点,那么无论该分支节点是否在子流程中,都跳转到与该分支节点最接近的祖先OR Split节点;
如果该分支节点的祖先节点中不存在OR Split节点,且该分支节点存在于子流程中,那么需要跳转到该分支节点的父流程的相应规则组中。
例如,可以按照以下方式编译:
其中,${the agenda-group name of the upper node}可能为与该分支节点最接近的OR Split祖先节点所对应规则组,也可能是该分支节点的父流程相应的规则组;
5)子流程节点
在被编译的节点为子流程节点的情况下,将该子流程节点所保存的数据内容编译为跳转到执行该子流程节点的规则集节点所保存的数据内容,在该规则集节点中的各个规则都编译完成后,跳转至对该子流程节点的后继节点所保存的数据内容进行编译。
通过上述方式对子流程节点中保存的数据内容进行转换的原因,主要是因为子流程节点本身是不包含规则的,它的作用就是跳转到另外一条规则(即子流程)执行,在子流程执行完成后,再重新跳回该子流程节点,然后继续向后继节点跳转,实际的跳转过程可以如图2所示,从子流程节点(SP_Alpha)跳转到子流程的开始节点(SP_Alpha_Start),执行完子流程中的一个或多个规则(即图2中的SP_Alpha_XXX和SP_Alpha_YYY)后,再跳回到该子流程节点(SP_Alpha_End),以便执行该子流程节点后继的规则集节点。从子流程节点SP_Alpha到子流程节点的后继节点RS_Beta依次执行的顺序为:
SP_Alpha->SP_Alpha_Start->…(子流程中的各个规则节点)->SP_Alpha_End->RS_Beta;
因此,对该子流程节点进行编译可以得到以下两条规则:
规则1:
规则2:
在一个实施例中,可执行脚本中包括:节点的节点名称、节点的判断条件、节点的执行动作、节点中规则的优先级。
考虑到现有技术中的规则流没有节点或是分组的概念,都是预先定义好的执行流程和处理步骤,然后按照这种预先定义的执行流程对数据进行处理。在本发明实施例中,在规则流中增加了节点的概念,节点由单条或者多条规则组成,节点中的规则可以人为灵活进行设定和更改。对应于不同类型的节点定义了不同的编译限制,从而使得规则流模型可以有效地被转换为可执行脚本。
本发明实施例还提供了一个具体的实施例对本发明的上述方法进行具体描述,如图3所示,可以按照以下步骤实现数据的处理,该方法主要包括:
步骤301:编辑规则资产。
用户使用规则脚本或者是向导式编辑器编辑好特定的原子规则资产(即规则),这种规则资产可以包括:单规则、决策表、决策树等。
步骤302:“规则流”资产编辑。
使用可视化的“规则流”编辑器编辑“规则流”,形成规则流模型。
步骤303:“规则流”编译转换及加载执行。
对规则流模型进行编译,得到按照分组编排执行的可执行脚本,该可执行脚本作为程序执行资产可被持久化到数据库中,在需要的时候被加载执行。
“规则流”编译转换的过程实际上是将由编辑器程序产生的内存对象转化为多条规则脚本,这一过程的输入相当于AbstractFlowNode的集合以及Node之间的Connection关系集合。然后,转换其中的每一个Node,并将每个Node中包含的各个规则资产加以转换,如果该“规则流”还包含了其它规则流,则需要将其它“规则流”也包含进来进行转换。遍历Node集合,设置每个Node的agenda-group name;遍历Node的连接Connection集合,根据连接关系设置相应Node的agenda-group name ofthe next node;针对子流程中的End Nodes以及所有的OR Split Node做设置agenda-group name of the next node的特殊处理,具体的转换规则(即,转换限制)在上文已经描述,在此不再赘述。再次遍历Node集合中的每个Node,调用其内部的转换过程;遍历Node集合中的子规则流的Node集合,针对每个子规则流获取其对应的Process对象,然后递归调用规则流编译转换过程。
在本例中,提供了一种数据处理的方法,该方法是基于规则引擎技术的“规则流”定义、编译、执行的处理方法,先定义规则流模型,以及模型中各个节点的种类,及每种节点编译限制条件。然后,对不同种类的节点,采用其对应的编译限制,基于相关技术中的规则引擎的执行脚本语法将定义的规则流编译为能够分组执行的规则执行脚本。通过这种方式可以将“规则流”应用于复杂的规则决策场景中,例如,可以用于金融领域的授信额度审批、欺诈检测、内部评级等,还可以当存在大量客体数据信息情况下,按照定义的规则进行快速决策。
基于同一发明构思,本发明实施例中还提供了一种数据处理装置,如下面的实施例所述。由于数据处理装置解决问题的原理与数据处理方法相似,因此数据处理装置的实施可以参见数据处理方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图4是本发明实施例的数据处理装置的一种结构框图,如图4所示,包括:接收模块401、确定模块402、编译模块403和处理模块404,下面对该结构进行说明。
接收模块401,用于接收待处理的数据;
确定模块402,用于根据待处理的数据的内容,确定规则流模型;
编译模块403,用于按照预先定义的编译限制对规则流模型中各个节点所保存的数据内容进行编译,得到可执行脚本,其中,不同类型的数据内容对应不同的编译限制;
处理模块404,用于调用可执行脚本对所述待处理的数据进行处理。
在一个实施例中,各个节点所保存的数据内容由一条或多条规则组成,其中,多条规则以树或者表的形式表现。。
在一个实施例中,根据节点中保存的数据内容的类型,规则流模型中的节点被划分为以下类型:用于表示规则流模型所表示的规则流开始执行的开始节点、用于表示规则流模型所表示的规则流执行结束的结束节点、用于执行规则流模型的规则匹配的规则集节点、用于执行规则流模型的规则执行分支的分支节点、用于由当前执行的规则跳转到另外一个规则执行的子流程节点。
在一个实施例中,所述编译模块按照以下至少之一的编译限制对规则流模型中各个节点所保存的数据内容进行编译:
在被编译的节点为开始节点的情况下,确定该开始节点是否处于规则流模型的主流程中,如果是,则将该开始节点的规则名称编译为主流程的开始节点,如果不是,则将该开始节点的规则名称编译为子流程的开始节点;
或者,在被编译的节点为结束节点的情况下,如果该结束节点处于规则流模型的主流程中,且该结束节点的祖先节点中没有或者条件的选择节点,则将该结束节点所保存的数据内容编译为执行暂停操作;如果该结束节点处于规则流模型的主流程中,且该结束节点的祖先节点中存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行与该结束节点最近的祖先或者条件的选择节点所保存的数据内容,将该结束节点的规则名称编译为结束节点;如果该结束节点处于规则流模型的子流程中,且该结束节点的祖先节点中存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行与该结束节点最近的祖先或者条件的选择节点所保存的数据内容,将该结束节点的规则名称编译为该结束节点的上层父流程中子流程节点的结束节点;如果该结束节点处于规则流模型的子流程中,且该结束节点的祖先节点中不存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行该结束节点的上层父流程中子流程节点的规则集所保存的数据内容,将该结束节点的规则名称编译为该结束节点的上层父流程中子流程节点的结束节点;
或者,在被编译的节点为规则集节点的情况下,在所述规则集节点中的各个规则都编译完成后,增加一个最低优先级的跳转规则,该跳转规则的作用是跳转到该规则集节点的后继节点中所保存的数据内容进行编译;
或者,在被编译的节点为或者条件的分支节点,且该分支节点的所有分支上保存的数据内容都已经编译完的情况下,如果该分支节点的祖先节点中没有或者条件的选择节点且该分支节点处于主流程中,则将该分支节点所保存的数据内容编译为执行结束操作;如果该分支节点的祖先节点中存在或者条件的选择节点,则将该分支节点所保存的数据内容编译为执行与该分支节点最近的祖先或者条件的选择节点所保存的数据内容;如果该分支节点的祖先节点中不存在或者条件的选择节点,且该分支节点位于子流程中,则将该分支节点所保存的数据内容编译为跳转到对该分支节点的父流程的规则组中所保存的数据内容进行编译;
或者,在被编译的节点为子流程节点的情况下,将该子流程节点所保存的数据内容编译为跳转到执行该子流程节点的规则集节点所保存的数据内容,在该规则集节点中的各个规则都编译完成后,跳转至对该子流程节点的后继节点所保存的数据内容进行编译。
在一个实施例中,可执行脚本中包括:节点的节点名称、节点的判断条件、节点的执行动作、节点中规则的优先级。
在另外一个实施例中,还提供了一种软件,该软件用于执行上述实施例及优选实施方式中描述的技术方案。
在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。
从以上的描述中,可以看出,本发明实施例实现了如下技术效果:在接收到待处理的数据后,根据待处理的数据的内容确定规则流模型,然后按照规则流模型中各个节点中保存的数据内容类型的不同按照不同的编译限制进行编译,从而得到对应于接收到的待处理的数据的可执行脚本,然后通过该可执行脚本对待处理的数据进行处理,实现了基于规则的可执行脚本可以灵活设置的目的。通过上述方式解决了现有技术中,基于规则的数据处理都是通过预先设定好的可执行脚本进行的,从而导致的利用规则进行数据处理的灵活性较低的技术问题,达到了有效提高利用规则进行数据处理的灵活性的技术效果。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种数据处理方法,其特征在于,包括:
接收待处理的数据;
根据待处理的数据的内容,确定规则流模型;
按照预先定义的编译限制对规则流模型中各个节点所保存的数据内容进行编译,得到可执行脚本,其中,不同类型的数据内容对应不同的编译限制;
调用可执行脚本对所述待处理的数据进行处理;
其中,所述根据节点中保存的数据内容的类型,规则流模型中的节点被划分为以下类型:用于表示规则流模型所表示的规则流开始执行的开始节点、用于表示规则流模型所表示的规则流执行结束的结束节点、用于执行规则流模型的规则匹配的规则集节点、用于执行规则流模型的规则执行分支的分支节点、用于由当前执行的规则跳转到另外一个规则执行的子流程节点;
其中,所述编译限制包括以下至少之一:
在被编译的节点为开始节点的情况下,确定该开始节点是否处于规则流模型的主流程中,如果是,则将该开始节点的规则名称编译为主流程的开始节点,如果不是,则将该开始节点的规则名称编译为子流程的开始节点;
或者,在被编译的节点为结束节点的情况下,如果该结束节点处于规则流模型的主流程中,且该结束节点的祖先节点中没有或者条件的选择节点,则将该结束节点所保存的数据内容编译为执行暂停操作;如果该结束节点处于规则流模型的主流程中,且该结束节点的祖先节点中存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行与该结束节点最近的祖先或者条件的选择节点所保存的数据内容,将该结束节点的规则名称编译为结束节点;如果该结束节点处于规则流模型的子流程中,且该结束节点的祖先节点中存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行与该结束节点最近的祖先或者条件的选择节点所保存的数据内容,将该结束节点的规则名称编译为该结束节点的上层父流程中子流程节点的结束节点;如果该结束节点处于规则流模型的子流程中,且该结束节点的祖先节点中不存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行该结束节点的上层父流程中子流程节点的规则集所保存的数据内容,将该结束节点的规则名称编译为该结束节点的上层父流程中子流程节点的结束节点;
或者,在被编译的节点为规则集节点的情况下,在所述规则集节点中的各个规则都编译完成后,增加一个最低优先级的跳转规则,该跳转规则的作用是跳转到该规则集节点的后继节点中所保存的数据内容进行编译;
或者,在被编译的节点为或者条件的分支节点,且该分支节点的所有分支上保存的数据内容都已经编译完的情况下,如果该分支节点的祖先节点中没有或者条件的选择节点且该分支节点处于主流程中,则将该分支节点所保存的数据内容编译为执行结束操作;如果该分支节点的祖先节点中存在或者条件的选择节点,则将该分支节点所保存的数据内容编译为执行与该分支节点最近的祖先或者条件的选择节点所保存的数据内容;如果该分支节点的祖先节点中不存在或者条件的选择节点,且该分支节点位于子流程中,则将该分支节点所保存的数据内容编译为跳转到对该分支节点的父流程的规则组中所保存的数据内容进行编译;
或者,在被编译的节点为子流程节点的情况下,将该子流程节点所保存的数据内容编译为跳转到执行该子流程节点的规则集节点所保存的数据内容,在该规则集节点中的各个规则都编译完成后,跳转至对该子流程节点的后继节点所保存的数据内容进行编译。
2.如权利要求1所述的方法,其特征在于,各个节点所保存的数据内容由一条或多条规则组成,其中,多条规则以树或者表的形式呈现。
3.如权利要求1或2所述的方法,其特征在于,可执行脚本中包括:节点的节点名称、节点的判断条件、节点的执行动作、节点中规则的优先级。
4.一种数据处理装置,其特征在于,包括:
接收模块,用于接收待处理的数据;
确定模块,用于根据待处理的数据的内容,确定规则流模型;
编译模块,用于按照预先定义的编译限制对规则流模型中各个节点所保存的数据内容进行编译,得到可执行脚本,其中,不同类型的数据内容对应不同的编译限制;
处理模块,用于调用可执行脚本对所述待处理的数据进行处理;
其中,根据节点中保存的数据内容的类型,规则流模型中的节点被划分为以下类型:用于表示规则流模型所表示的规则流开始执行的开始节点、用于表示规则流模型所表示的规则流执行结束的结束节点、用于执行规则流模型的规则匹配的规则集节点、用于执行规则流模型的规则执行分支的分支节点、用于由当前执行的规则跳转到另外一个规则执行的子流程节点;
其中,所述编译模块按照以下至少之一的编译限制对规则流模型中各个节点所保存的数据内容进行编译:
在被编译的节点为开始节点的情况下,确定该开始节点是否处于规则流模型的主流程中,如果是,则将该开始节点的规则名称编译为主流程的开始节点,如果不是,则将该开始节点的规则名称编译为子流程的开始节点;
或者,在被编译的节点为结束节点的情况下,如果该结束节点处于规则流模型的主流程中,且该结束节点的祖先节点中没有或者条件的选择节点,则将该结束节点所保存的数据内容编译为执行暂停操作;如果该结束节点处于规则流模型的主流程中,且该结束节点的祖先节点中存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行与该结束节点最近的祖先或者条件的选择节点所保存的数据内容,将该结束节点的规则名称编译为结束节点;如果该结束节点处于规则流模型的子流程中,且该结束节点的祖先节点中存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行与该结束节点最近的祖先或者条件的选择节点所保存的数据内容,将该结束节点的规则名称编译为该结束节点的上层父流程中子流程节点的结束节点;如果该结束节点处于规则流模型的子流程中,且该结束节点的祖先节点中不存在或者条件的选择节点,则将该结束节点所保存的数据内容编译为跳转到执行该结束节点的上层父流程中子流程节点的规则集所保存的数据内容,将该结束节点的规则名称编译为该结束节点的上层父流程中子流程节点的结束节点;
或者,在被编译的节点为规则集节点的情况下,在所述规则集节点中的各个规则都编译完成后,增加一个最低优先级的跳转规则,该跳转规则的作用是跳转到该规则集节点的后继节点中所保存的数据内容进行编译;
或者,在被编译的节点为或者条件的分支节点,且该分支节点的所有分支上保存的数据内容都已经编译完的情况下,如果该分支节点的祖先节点中没有或者条件的选择节点且该分支节点处于主流程中,则将该分支节点所保存的数据内容编译为执行结束操作;如果该分支节点的祖先节点中存在或者条件的选择节点,则将该分支节点所保存的数据内容编译为执行与该分支节点最近的祖先或者条件的选择节点所保存的数据内容;如果该分支节点的祖先节点中不存在或者条件的选择节点,且该分支节点位于子流程中,则将该分支节点所保存的数据内容编译为跳转到对该分支节点的父流程的规则组中所保存的数据内容进行编译;
或者,在被编译的节点为子流程节点的情况下,将该子流程节点所保存的数据内容编译为跳转到执行该子流程节点的规则集节点所保存的数据内容,在该规则集节点中的各个规则都编译完成后,跳转至对该子流程节点的后继节点所保存的数据内容进行编译。
5.如权利要求4所述的装置,其特征在于,各个节点所保存的数据内容由一条或多条规则组成,其中,多条规则以树或者表的形式呈现。
6.如权利要求4或5所述的装置,其特征在于,可执行脚本中包括:节点的节点名称、节点的判断条件、节点的执行动作、节点中规则的优先级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310368103.9A CN103440128B (zh) | 2013-08-21 | 2013-08-21 | 数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310368103.9A CN103440128B (zh) | 2013-08-21 | 2013-08-21 | 数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103440128A CN103440128A (zh) | 2013-12-11 |
CN103440128B true CN103440128B (zh) | 2016-08-10 |
Family
ID=49693819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310368103.9A Active CN103440128B (zh) | 2013-08-21 | 2013-08-21 | 数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103440128B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301603A (zh) * | 2017-06-15 | 2017-10-27 | 搜易贷(北京)金融信息服务有限公司 | 一种基于工作流的风控方法及系统 |
CN110502483B (zh) * | 2019-07-09 | 2022-06-17 | 招联消费金融有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN112446394A (zh) * | 2019-08-28 | 2021-03-05 | 北京中关村科金技术有限公司 | 基于图形的决策方法、装置以及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000615A (zh) * | 2006-12-31 | 2007-07-18 | 华为技术有限公司 | 一种基于数据库的业务处理方法及装置 |
CN101159730A (zh) * | 2007-09-19 | 2008-04-09 | 华为技术有限公司 | 多媒体联络中心处理信息的方法、系统及装置 |
CN102509171A (zh) * | 2011-10-24 | 2012-06-20 | 浙江大学 | 一种面向规则执行日志的流程挖掘方法 |
-
2013
- 2013-08-21 CN CN201310368103.9A patent/CN103440128B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000615A (zh) * | 2006-12-31 | 2007-07-18 | 华为技术有限公司 | 一种基于数据库的业务处理方法及装置 |
CN101159730A (zh) * | 2007-09-19 | 2008-04-09 | 华为技术有限公司 | 多媒体联络中心处理信息的方法、系统及装置 |
CN102509171A (zh) * | 2011-10-24 | 2012-06-20 | 浙江大学 | 一种面向规则执行日志的流程挖掘方法 |
Non-Patent Citations (2)
Title |
---|
基于RBAC和ECA规则构建的工作流系统;胡强 等;《计算机工程与设计》;20050428;第26卷(第4期);第918页第2.1.1节-第919页第5行 * |
规则引擎在业务逻辑层中应用的研究;刘际;《中国优秀硕士学位论文全文数据库信息科技辑》;20070715;第16页第2.3节第1-3段,第21页第3.3节-第25页,第27页倒数1-2段 * |
Also Published As
Publication number | Publication date |
---|---|
CN103440128A (zh) | 2013-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Rospocher et al. | An ontology for the Business Process Modelling Notation. | |
CN112579797B (zh) | 针对知识图谱的业务处理方法及装置 | |
US7177852B2 (en) | Method and apparatus for extracting knowledge from software code or other structured data | |
Eberle et al. | Process fragments | |
US20150170088A1 (en) | Logic flow generator system and method | |
CN102314638A (zh) | 用于管理会议历史的方法和系统 | |
CN103440128B (zh) | 数据处理方法和装置 | |
Lassen et al. | WorkflowNet2BPEL4WS: A tool for translating unstructured workflow processes to readable BPEL | |
US8103535B2 (en) | Evaluation of fitness for a contractual agreement related to provisioning information technology services | |
Grabowski et al. | The standardization of message sequence charts | |
Van der Aalst et al. | Specifying, discovering, and monitoring service flows: Making web services process-aware | |
Holzmann | Early fault detection tools | |
CN104516734B (zh) | 业务流程配置方法及装置 | |
van der Aalst et al. | A tour in process mining: From practice to algorithmic challenges | |
CN109165102A (zh) | 一种基于智能合约的约束求解器分布式调度方法 | |
Zhou et al. | Assessment of service protocol adaptability based on novel walk computation | |
Telea et al. | Visualisation of RDF (S)-based Information | |
Karagiannis et al. | Model driven design for e-applications: The meta model approach | |
Kritikos et al. | Towards semantic KPI measurement | |
CN103823875B (zh) | 服务组合的检索方法 | |
US20100050132A1 (en) | System and GUI for specifying composite predicates and dynamic systems | |
Kuznets et al. | Interpolation for intermediate logics via injective nested sequents | |
Abdelaziz et al. | MASD: Multi-agent systems development methodology | |
Huysmans et al. | Aligning the constructs of enterprise ontology and normalized systems | |
Maaradji | End-user service composition from a social networks analysis perspective |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |