CN105607942B - 一种投票判定的方法和装置 - Google Patents
一种投票判定的方法和装置 Download PDFInfo
- Publication number
- CN105607942B CN105607942B CN201510974173.8A CN201510974173A CN105607942B CN 105607942 B CN105607942 B CN 105607942B CN 201510974173 A CN201510974173 A CN 201510974173A CN 105607942 B CN105607942 B CN 105607942B
- Authority
- CN
- China
- Prior art keywords
- parameter
- decision
- determine object
- ballot
- critical
- 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
Classifications
-
- 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
- G06F8/44—Encoding
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种投票判定的方法和装置,可以灵活配置判断逻辑,并将判断逻辑生成相应的二进制位运算逻辑表达式,通过与业务请求对应生成的二进制数字串进行位运算来达到投票判定的目的。能够实现判定逻辑灵活配置可扩展,判定效率高且支持单次判定多次传值的功能,使用方便。本发明的投票判定的方法包括:接收并保存客户端发来的判定规则;接收业务系统发送的投票判定请求,并获取所述投票判定请求的参数;将获取的所述参数封装成判定对象;根据所述判定规则执行所述判定对象的判定过程,以得到判定结果。
Description
技术领域
本发明涉及计算机技术领域,特别地涉及一种投票判定的方法和装置。
背景技术
分布式系统由多个能独立运行的计算机(称为节点)组成。各个节点利用计算机网络进行信息传递,从而实现共同的目标或者任务。在分布式系统中,经常会使用到多条件的判断。所谓多条件判断是针对当前已有的条件,进行判定是否可以进行下一步。当一个系统的某个功能的触发条件是上游的几个系统都进行调用的时候,就需要代码中进行硬编码以完成相应的判断逻辑的编写。
现有的进行判定的方案一般是由程序编写人员通过硬编码的方式在代码中使用大量的if语句和逻辑运算符来实现相应的判断逻辑,但是如果判断逻辑发生了改变,此时解决问题的唯一方式就是通过重新发布新版本的程序以实现新的判断逻辑。
采用这种方式将会带来以下问题:第一,在代码中硬编码if判定语句,无法动态改变if语句中的判定内容,故而灵活性很差,可扩展性很弱;第二,大量使用if判定语句,代码的执行效率和可读性太低;第三,判断逻辑全在代码中,非编程人员基本无法理解,增大了编码人员错误理解而出现的风险。
综上所述,现有的技术方案不够灵活、可扩展性差,且代码执行效率低下,故障查找困难。
发明内容
有鉴于此,本发明提供一种投票判定的方法和装置,可以灵活配置判断逻辑,并将判断逻辑生成相应的二进制位运算逻辑表达式,通过与业务请求对应生成的二进制数字串进行位运算来达到投票判定的目的。能够实现判定逻辑灵活配置可扩展,判定效率高且支持单次判定多次传值的功能,使用方便。
为实现上述目的,根据本发明的一个方面,提供了一种投票判定的方法。
一种投票判定的方法,包括:接收并保存客户端发来的判定规则;接收业务系统发送的投票判定请求,并获取所述投票判定请求的参数;将获取的所述参数封装成判定对象;根据所述判定规则执行所述判定对象的判定过程,以得到判定结果。
可选地,接收并保存客户端发来的判定规则的步骤包括:接收客户端发来的判定规则,并按照预定的逻辑生成判定表达式;将所述判定表达式保存到zookeeper服务器的节点上,并利用zookeeper服务器的监听回调机制实现配置更新。
可选地,所述判定表达式包括预设的参数字段、第一判定参数和第二判定参数。
可选地,执行所述判定对象的判定过程的步骤包括:将所述判定对象的参数字段与所述预设的参数字段进行比较,生成所述判定对象的判定参数;将生成的所述判定对象的判定参数与所述第一判定参数进行逻辑运算,以生成第一判定结果;将生成的第一判定结果组成流程判定参数;将所述流程判定参数与所述第二判定参数进行逻辑运算,以得到所述判定结果。
可选地,所述判定对象的判定参数、所述第一判定参数和所述第二判定参数是二进制的数字串,且所述运算为二进制的位运算。
可选地,得到判定结果之后,还包括:将所述判定过程的明细信息保存在数据库中,其中,所述明细信息包括判定标识符和判定结果。
可选地,将获取的所述参数封装成判定对象的步骤包括:根据获取的所述参数判断此次判定是否依赖于之前的判定过程;如果依赖于之前的判定过程,则根据所述参数中包括的判定标识符从所述数据库中获取所述之前的判定过程的明细信息,并与所述参数一起封装成判定对象;如果不依赖于之前的判定过程,则直接将获取的所述参数封装成判定对象。
根据本发明的另一个方面,提供了一种投票判定的装置。
一种投票判定的装置,包括:判定设置模块,用于接收并保存客户端发来的判定规则;参数获取模块,用于接收业务系统发送的投票判定请求,并获取所述投票判定请求的参数;参数封装模块,用于将获取的所述参数封装成判定对象;投票判定模块,用于根据所述判定规则执行所述判定对象的判定过程,以得到判定结果。
可选地,所述判定设置模块还用于:接收客户端发来的判定规则,并按照预定的逻辑生成判定表达式;将所述判定表达式保存到zookeeper服务器的节点上,并利用zookeeper服务器的监听回调机制实现配置更新。
可选地,所述判定表达式包括预设的参数字段、第一判定参数和第二判定参数。
可选地,所述投票判定模块还用于:将所述判定对象的参数字段与所述预设的参数字段进行比较,生成所述判定对象的判定参数;将生成的所述判定对象的判定参数与所述第一判定参数进行逻辑运算,以生成第一判定结果;将生成的第一判定结果组成流程判定参数;将所述流程判定参数与所述第二判定参数进行逻辑运算,以得到所述判定结果。
可选地,所述判定对象的判定参数、所述第一判定参数和所述第二判定参数是二进制的数字串,且所述运算为二进制的位运算。
可选地,还包括:明细保存模块,用于在得到判定结果之后,将所述判定过程的明细信息保存在数据库中,其中,所述明细信息包括判定标识符和判定结果。
可选地,所述参数封装模块还用于:根据获取的所述参数判断此次判定是否依赖于之前的判定过程;如果依赖于之前的判定过程,则根据所述参数中包括的判定标识符从所述数据库中获取所述之前的判定过程的明细信息,并与所述参数一起封装成判定对象;如果不依赖于之前的判定过程,则直接将获取的所述参数封装成判定对象。
根据本发明的技术方案,通过可视化界面可以灵活配置判断逻辑,并将判断逻辑生成相应的二进制位运算逻辑表达式,再与业务请求参数对应生成的二进制数字串进行位运算来达到投票判定的目的。通过在可视化的界面上配置不同的判定规则,可动态配置不同的判定逻辑,且判定逻辑与代码解耦,修改后无需重启业务服务或者重新上线,从而实现了判定逻辑灵活配置可扩展;同时,判定逻辑基于位运算、布尔运算等逻辑运算方式实现,判定效率高且支持单次判定多次传值的功能,使用方便。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种投票判定的方法的主要步骤示意图;
图2是根据本发明实施例的一种投票判定的装置的主要模块示意图;
图3是根据本发明实施例的投票判定系统的整体架构图;
图4是根据本发明实施例的判定规则设置界面示意图;
图5是根据本发明实施例的投票判定过程的流程图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的一种投票判定的方法的主要步骤示意图。如图1所示,本发明的投票判定的方法主要包括如下的步骤S11至步骤S14。
步骤S11:接收并保存客户端发来的判定规则;
步骤S12:接收业务系统发送的投票判定请求,并获取该投票判定请求的参数;
步骤S13:将获取的参数封装成判定对象;
步骤S14:根据判定规则执行判定对象的判定过程,以得到判定结果。
根据本发明的实施例,上述步骤S11中接收并保存客户端发来的判定规则的步骤具体可以包括:
步骤S111:接收客户端发来的判定规则,并按照预定的逻辑生成判定表达式;
步骤S112:将判定表达式保存到zookeeper服务器的节点上,并利用zookeeper服务器的监听回调机制实现配置更新。
其中,判定表达式包括预设的参数字段、第一判定参数和第二判定参数。
步骤S14中执行所述判定对象的判定过程具体可以按照以下方式执行:
步骤S141:将判定对象的参数字段与预设的参数字段进行比较,生成判定对象的判定参数;
步骤S142:将生成的判定对象的判定参数与第一判定参数进行逻辑运算,以生成第一判定结果;
步骤S143:将生成的第一判定结果组成流程判定参数;
步骤S144:将该流程判定参数与第二判定参数进行逻辑运算,以得到判定结果。
其中,上述步骤S141至步骤S144中所述的判定对象的判定参数、第一判定参数和第二判定参数是二进制的数字串,且所述运算为二进制的位运算。
另外,在根据步骤S14得到判定结果之后,还可以将判定过程的明细信息保存在数据库中,其中,该明细信息包括判定标识符和判定结果。
并且,步骤S13中将获取的参数封装成判定对象的具体执行过程可以包括:
步骤S131:根据获取的参数判断此次判定是否依赖于之前的判定过程;
步骤S132:如果依赖于之前的判定过程,则根据该参数中包括的判定标识符从数据库中获取之前的判定过程的明细信息,并与该参数一起封装成判定对象;
步骤S133:如果不依赖于之前的判定过程,则直接将获取的该参数封装成判定对象。
图2是根据本发明实施例的一种投票判定的装置的主要模块示意图。如图2所示,本发明的投票判定装置20主要包括判定设置模块21、参数获取模块22、参数封装模块23和投票判定模块24。
判定设置模块21用于接收并保存客户端发来的判定规则;参数获取模块22用于接收业务系统发送的投票判定请求,并获取投票判定请求的参数;参数封装模块23用于将获取的该参数封装成判定对象;投票判定模块24用于根据判定规则执行判定对象的判定过程,以得到判定结果。
根据本发明的实施例,判定设置模块21还可以用于接收客户端发来的判定规则,并按照预定的逻辑生成判定表达式;将该判定表达式保存到zookeeper服务器的节点上,并利用zookeeper服务器的监听回调机制实现配置更新。
其中,判定表达式包括预设的参数字段、第一判定参数和第二判定参数。
投票判定模块24还可以用于将判定对象的参数字段与预设的参数字段进行比较,生成该判定对象的判定参数;将生成的该判定对象的判定参数与第一判定参数进行逻辑运算,以生成第一判定结果;将生成的第一判定结果组成流程判定参数;将该流程判定参数与第二判定参数进行逻辑运算,以得到判定结果。
其中,判定对象的判定参数、第一判定参数和第二判定参数是二进制的数字串,且该运算为二进制的位运算。
另外,本发明的投票判定装置20还可以包括明细保存模块,用于在得到判定结果之后,将该判定过程的明细信息保存在数据库中,其中,明细信息包括判定标识符和判定结果。
并且,参数封装模块23还可以用于根据获取的参数判断此次判定是否依赖于之前的判定过程;如果依赖于之前的判定过程,则根据该参数中包括的判定标识符从数据库中获取之前的判定过程的明细信息,并与该参数一起封装成判定对象;如果不依赖于之前的判定过程,则直接将获取的该参数封装成判定对象。
根据本发明的实施例,通过在可视化的客户端界面上配置对应的条件判断逻辑,然后生成相应的二进制位运算逻辑表达式,之后与业务系统发来的参数生成的二进制数字串进行位运算,从而实现动态投票判定的过程。其中,本发明的投票判定装置中的投票判定模块可以包含至少一个投票判定单元,每个投票判定单元都有自己的判定表达式,且当每个投票判定单元都投票完成后,对投票结果进行汇总及进一步的逻辑运算处理以得到最终的投票判定结果。本发明通过动态配置投票判定装置中不同投票判定单元的排列组合,来实现不同的判断逻辑,使用灵活方便。
图3是根据本发明实施例的投票判定系统的整体架构图。如图3所示,本发明将实现投票判定的装置封装成一个组件,可以单独部署或者与上层业务系统进行依赖部署。本实施例中的投票判定系统主要包括:客户端、投票判定装置、业务服务器、Zookeeper服务器和数据库集群等几个部分。其中,业务服务器是指上级业务系统所在的服务器,业务系统通过提交判定请求的方式调用指定的投票判定装置来实现业务逻辑判断,最终得到判定结果。
客户端通过发送http请求等方式,可以访问用于设定判定规则的显示界面。其中所述客户端为终端设备,可以是固定终端或者移动终端设备,如个人计算机、安装有APP(应用程序)的智能电话等均可实现本实施例的功能。如图4所示,是根据本发明实施例的判定规则设置界面示意图,在该设置界面上用户可以自定义投票判定单元、判定参数和参数设置选项等内容。该可视化判定规则设置界面中,投票判定单元的参数设置选项可以通过例如下拉框的形式来实现,下拉框中可以包括必要参数、可选参数、非空参数等几个项目,其中,必要参数是指传入的参数列表中必须有的参数;可选参数是指传入的参数列表中至少有可选参数中的一个;非空参数是指指定参数必须有传值。如果需要用到多个投票判定单元分别进行判定,则分别定义该多个投票判定单元判定通过的标准。另外,当该多个投票判定单元判定完成后,还需要定义该多个投票判定单元的初步判定结果的进一步判定逻辑,如图4中所示的两个投票判定单元之间的“与/或”等运算逻辑。所有用户在该设置界面上定义的判定规则,都会通过投票判定装置自动生成相应的二进制数字串及判定表达式,并保存在配置管理服务器zookeeper中。
Zookeeper服务器是一个远程集中配置管理的服务器,用于存储用户在设置界面定义判定规则后投票判定装置自动生成的判定表达式。同时,由于zookeeper具有监听回调的功能,当将判定表达式保存到zookeeper服务器的相应节点后,zookeeper服务器会通知发生变化节点对应的投票判定单元来进行配置更新。
投票判定装置是该投票判定系统的核心,根据功能实现,主要可包括如图3中所示的判定表达式生成单元、RMI服务器和投票判定单元。其中,判定表达式生成单元主要用于根据接收到的客户端发来的判定规则生成相应的判定表达式。RMI服务器提供了业务系统和投票判定装置交互的接口,当接收到业务系统的判定请求后,负责解析请求参数并封装成判定对象,然后调用投票判定模块进行逻辑判定;并且在得到判定结果后,将判定结果返回给上层业务系统。投票判定模块用于执行逻辑判定,在一次判定过程中,可能会有多个投票判定单元,每个投票判定单元根据预先设置的判定逻辑进行判断,最后再将所有投票判定单元的初步判定结果进行进一步的逻辑判定以得到最终的判定结果。
在得到判定结果后,会将此次判定过程的明细信息存储在数据库集群中,以便查找记录。本发明的实施例中数据库集群为Hbase集群,每次执行判定的判定明细都是存储在Hbase集群中,Hbase是一个高可靠性、高性能的分布式存储系统,它是面向列的、分布式的开源数据库,其仅需要普通的硬件配置就能够处理成千上万的行和列所组成的大型数据,Hbase数据库中除了存储判定过程明细信息外,还冗余存储了本次判定的投票配置的信息。本发明实施例的数据库系统也可以采用基于NO-SQL的mongoDB集群、基于传统数据库的oracle数据库集群、sqlserver集群、mysql集群等。对每个判定过程的明细信息,一般保存的主要字段包括:判定标识符、每个投票判定单元的当前判定表达式、判定状态、判定结果、是否有效、更新时间、创建时间等。由于有时会出现此次判定需要依赖于之前的判定过程的情况,因此,在进行明细信息的保存时,会记录字段“判定状态”。并根据不同的情况,“判定状态”可以是“判定完成”或“持续判定”。其中,“判定完成”是指当前判定明细表示的判定流程完成,返回的判定结果是基于真实的位运算结果;“持续判定”是指当前判定支持业务系统多次调用这次判定明细,且每次增量提交条件参数,返回的判定结果也是基于真实的位运算结果。
以下将介绍本发明实施例的投票判定系统的实现过程。如图5所示,是根据本发明实施例的投票判定过程的流程图。本实施例中以实时同步实时判定的过程为例。其中,在投票判定单元进行投票判定时,是以二进制码的位运算为例进行介绍。
用户在客户端输入判定规则的配置信息后,投票判定装置将根据用户输入的判定规则生成判定表达式,并对判定表达式进行基本语法格式校验,包括:是否使用了非英文字符、是否满足对称封闭、是否能json解析等,以保证该判定表达式是可用的。其中,生成判定表达式的过程介绍如下:
假设用户在判定规则设置界面定义了以数组表示的n个参数:[参数1,参数2,参数3,…,参数n],其中,n=7,以及定义了3个投票判定单元:[voter1,voter2,voter3]来参与执行本次判定。根据每个投票判定单元的参数设置选项可以得到相应的二进制数字串,例如:假设voter1的二进制数字串为1010101,其表示在参数数组的1、3、5、7的位置为1,其他位置为0,也就是说voter1中的参数1、参数3、参数5和参数7有赋值,而其他参数未赋值。
用户在判定规则设置界面还可以配置投票判定装置的标识符id例如为voteJstify1,并且采用“与(&)”运算的方式进行二进制数字串的位运算。故而假设投票判定装置自动生成的判定表达式为如下形式:
{id:voteJstify1,parmers:[参数1,参数2,参数3,…,参数7],voters:[{id:voter1,voutePass:1010101},{id:voter2,voutePass:1010111},{id:voter3,voutePass:1010010}],
passJustify:{${voters}&111>0}
}
其中,
{id:voter1,voutePass:1010101}、{id:voter2,voutePass:1010111}、{id:voter3,voutePass:1010010}分别以表达式形式定义了三个投票判定单元voter1、voter2、voter3判定通过的标准,二进制数字串1010101、1010111、1010010分别为每个投票判定单元判“真”的判定参数(即第一判定参数),其为一种二进制形式的判真串;passJustify:{${voters}&111>0}以表达式的形式定义了二次判定通过的标准,即:将所有投票判定单元的第一判定结果组成的二进制数字串(流程判定参数)进行进一步判定,其中,数字串“111”给出了整个判定过程的判定通过标准(即第二判定参数),其也为一种二进制形式的判真串。至此,判定表达式已根据用户输入的判定规则自动生成,且经校验,符合语法规则。
之后,投票判定装置向zookeeper服务器获取投票判定装置的配置状态,并判定投票判定装置是否被锁定,若投票判定装置被锁定,则通知客户端投票判定装置被锁定,表示此时无法对投票判定装置进行配置,配置失败;若投票判定装置未被锁定,则表示此时可以对投票判定装置进行配置,将结果提交到zookeeper服务器,开始进入投票判定装置的配置更新阶段。
Zookeeper服务器根据投票判定装置的标识符id更新投票判定装置状态为锁定状态,之后,将触发zookeeper服务器的监听回调,实现对投票判定装置的配置更新。
配置更新完成后,业务系统向投票判定装置提交判定请求,投票判定装置将获取该判定请求的参数,并根据所获取的参数中是否包含之前判定过程的判定标识符,来判断此次判定过程是否依赖之前的判定过程。判定请求的参数包括判定标识符、参数的名称和参数的值。如果参数中包含有之前判定过程的判定标识符,则说明此次判定过程依赖于之前的判定过程,需要增量提交参数并根据判定标识符从数据库中获取之前判定过程的明细信息,之后封装成判定对象;否则,说明此次判定过程不依赖于之前的判定过程,直接将获取的参数封装成判定对象。
当判定对象封装完成后,将执行该判定对象的判定过程。首先是根据参数字段生成判定参数,即:根据判定对象中的参数字段,通过将判定对象的参数字段与预设的参数字段进行比较,将判定对象中的参数字段转换成二进制数字串,具体的转换方式:将业务系统传入的所有参数存入一个数组A中,构成参数字段,将判定对象的参数字段与判定表达式中包括的预设的参数字段(该预设的参数字段是根据用户自定义的参数构成的)进行比对,在本实施例中,将用户自定义的n个参数(n=7)存储在另一个数组B中,构成预设的参数字段,判定对象包含的参数字段与预设的参数字段进行比对的方法为:将数组B和数组A进行比对,以确定数组B的哪几个参数所在的数组位置上有参数传入,并得出有参数传入的位置的数组下标,从而得到一个二进制串。例如,本实施例中,假设业务系统传入3个参数,通过比对,得出该3个参数分别对应数组B中数组下标为1、3、6的位置,则参数数组A中1、3、6的位置为1,其他位置为0,从而将该判定对象的参数字段转换成二进制数字串形式的判定参数(记为P):1010010。
生成二进制数字串形式的判定参数后,通过顺序链表的方式遍历所有投票判定单元分别对生成的判定参数进行判定。每个投票判定单元的判定过程例如:投票判定单元1,将判定参数P(1010010)与该投票判定单元(voter1)的第一判定参数1010101进行“与(&)”逻辑位运算,即投票判定单元voter1的运算过程是:1010010&1010101==1010000,得到二进制形式的当前投票判定单元的第一判定结果1010000,其与voter1的第一判定参数1010101不同,则当前投票判定单元voter1判定为“假”,从而voter1=0。
同理,将所述二进制串P依次与投票判定单元2、投票判定单元3的第一判定参数进行“与(&)”逻辑位运算,得到voter2的判定结果:1010010&1010111==1010010,对照投票判定单元voter2的第一判定参数,可得voter2=0;voter3的判定结果:1010010&1010010==1010010,对照投票判定单元voter3的第一判定参数,可得voter3=1。如果已遍历完所有参与判定的投票判定单元,则遍历结束。
将所有投票判定单元判定的结果组成流程判定参数—001(一个二进制数字串),将该流程判定参数与设定的第二判定参数111进行“与(&)”逻辑位运算:001&111=001,符合判定表达式passJustify:{${voters}&111>0}为“真”的标准,从而得到整个判定过程的判定结果。之后,更新数据库中的判定明细。此处,在进行判定明细的更新时,如果此次判定不依赖于之前的判定过程,则直接新增一条判定明细记录;如果此次判定依赖于之前的判定过程,则根据判定标识符更新之前的判定明细。最后,将判定结果回传给上层业务系统。
以上所述仅是本发明一个实施例的实施过程,该实施例是以同步实时判定为例,同样地,本发明的投票判定装置还可以用于异步判定。在进行异步判定时,业务系统提交的请求参数可以被解析后直接以消息队列的形式保存在数据库中,每次从数据库中读取一条消息后根据该消息保存时的判定标识符id来判断此次判定过程是否依赖于之前的判定过程,并根据如前述实施例中所介绍的方法封装成判定对象。另外,由于数据库中保存的每条判定明细中都冗余存储了投票判定装置的配置信息,所以在根据用户输入的判定规则更新配置时,需要同步更新数据库中所有未执行的判定明细记录,以及判定明细记录中的冗余信息,如图5中虚线框内所示。
另外,上述实施例中在投票判定单元进行投票判定时,是以二进制码的位运算为例进行介绍的。同样地,所有的逻辑判断还可以是通过布尔运算等逻辑运算方式来实现。
根据本发明实施例的技术方案,通过可视化界面可以灵活配置判断逻辑,并将判断逻辑生成相应的二进制位运算逻辑表达式,再与业务请求参数对应生成的二进制数字串进行位运算来达到投票判定的目的。通过在可视化的界面上配置不同的判定规则,可动态配置不同的判定逻辑,且判定逻辑与代码解耦,修改后无需重启业务服务或者重新上线,从而实现了判定逻辑灵活配置可扩展;同时,判定逻辑基于位运算、布尔运算等逻辑运算方式实现,判定效率高且支持单次判定多次传值的功能,使用方便。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (18)
1.一种投票判定的方法,其特征在于,包括:
接收并保存客户端发来的通过可视化界面配置的判定规则;
接收业务系统发送的投票判定请求,并获取所述投票判定请求的参数;
将获取的所述参数封装成判定对象;
根据所述判定规则执行所述判定对象的判定过程,以得到判定结果,其中,根据所述判定规则执行所述判定对象的判定过程包括:将所述判定规则按照预定的逻辑生成判定表达式,再与所述判定对象进行逻辑运算。
2.根据权利要求1所述的方法,其特征在于,接收并保存客户端发来的判定规则的步骤包括:
接收客户端发来的判定规则,并按照预定的逻辑生成判定表达式;
将所述判定表达式保存到zookeeper服务器的节点上,并利用zookeeper服务器的监听回调机制实现配置更新。
3.根据权利要求2所述的方法,其特征在于,所述判定表达式包括预设的参数字段、第一判定参数和第二判定参数。
4.根据权利要求3所述的方法,其特征在于,执行所述判定对象的判定过程的步骤包括:
将所述判定对象的参数字段与所述预设的参数字段进行比较,生成所述判定对象的判定参数;
将生成的所述判定对象的判定参数与所述第一判定参数进行逻辑运算,以生成第一判定结果;
将生成的第一判定结果组成流程判定参数;
将所述流程判定参数与所述第二判定参数进行逻辑运算,以得到所述判定结果。
5.根据权利要求1所述的方法,其特征在于,执行所述判定对象的判定过程的步骤包括:
接收客户端发来的判定规则,并按照预定的逻辑生成判定表达式,所述判定表达式包括预设的参数字段、第一判定参数和第二判定参数;
将所述判定对象的参数字段与所述预设的参数字段进行比较,生成所述判定对象的判定参数;
将生成的所述判定对象的判定参数与所述第一判定参数进行逻辑运算,以生成第一判定结果;
将生成的第一判定结果组成流程判定参数;
将所述流程判定参数与所述第二判定参数进行逻辑运算,以得到所述判定结果。
6.根据权利要求4或5所述的方法,其特征在于,所述判定对象的判定参数、所述第一判定参数和所述第二判定参数是二进制的数字串,且所述运算为二进制的位运算。
7.根据权利要求1所述的方法,其特征在于,得到判定结果之后,还包括:
将所述判定过程的明细信息保存在数据库中,其中,所述明细信息包括判定标识符和判定结果。
8.根据权利要求7所述的方法,其特征在于,将获取的所述参数封装成判定对象的步骤包括:
根据获取的所述参数判断此次判定是否依赖于之前的判定过程;
如果依赖于之前的判定过程,则根据所述参数中包括的判定标识符从所述数据库中获取所述之前的判定过程的明细信息,并与所述参数一起封装成判定对象;
如果不依赖于之前的判定过程,则直接将获取的所述参数封装成判定对象。
9.一种投票判定的装置,其特征在于,包括:
判定设置模块,用于接收并保存客户端发来的通过可视化界面配置的判定规则;
参数获取模块,用于接收业务系统发送的投票判定请求,并获取所述投票判定请求的参数;
参数封装模块,用于将获取的所述参数封装成判定对象;
投票判定模块,用于根据所述判定规则执行所述判定对象的判定过程,以得到判定结果,其中,根据所述判定规则执行所述判定对象的判定过程包括:将所述判定规则按照预定的逻辑生成判定表达式,再与所述判定对象进行逻辑运算。
10.根据权利要求9所述的装置,其特征在于,所述判定设置模块还用于:
接收客户端发来的判定规则,并按照预定的逻辑生成判定表达式;
将所述判定表达式保存到zookeeper服务器的节点上,并利用zookeeper服务器的监听回调机制实现配置更新。
11.根据权利要求10所述的装置,其特征在于,所述判定表达式包括预设的参数字段、第一判定参数和第二判定参数。
12.根据权利要求11所述的装置,其特征在于,所述投票判定模块还用于:
将所述判定对象的参数字段与所述预设的参数字段进行比较,生成所述判定对象的判定参数;
将生成的所述判定对象的判定参数与所述第一判定参数进行逻辑运算,以生成第一判定结果;
将生成的第一判定结果组成流程判定参数;
将所述流程判定参数与所述第二判定参数进行逻辑运算,以得到所述判定结果。
13.根据权利要求9所述的装置,其特征在于,执行所述判定对象的判定过程的步骤包括:
接收客户端发来的判定规则,并按照预定的逻辑生成判定表达式,所述判定表达式包括预设的参数字段、第一判定参数和第二判定参数;
将所述判定对象的参数字段与所述预设的参数字段进行比较,生成所述判定对象的判定参数;
将生成的所述判定对象的判定参数与所述第一判定参数进行逻辑运算,以生成第一判定结果;
将生成的第一判定结果组成流程判定参数;
将所述流程判定参数与所述第二判定参数进行逻辑运算,以得到所述判定结果。
14.根据权利要求12或13所述的装置,其特征在于,所述判定对象的判定参数、所述第一判定参数和所述第二判定参数是二进制的数字串,且所述运算为二进制的位运算。
15.根据权利要求9所述的装置,其特征在于,还包括:
明细保存模块,用于在得到判定结果之后,将所述判定过程的明细信息保存在数据库中,其中,所述明细信息包括判定标识符和判定结果。
16.根据权利要求15所述的装置,其特征在于,所述参数封装模块还用于:
根据获取的所述参数判断此次判定是否依赖于之前的判定过程;
如果依赖于之前的判定过程,则根据所述参数中包括的判定标识符从所述数据库中获取所述之前的判定过程的明细信息,并与所述参数一起封装成判定对象;
如果不依赖于之前的判定过程,则直接将获取的所述参数封装成判定对象。
17.一种投票判定的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的方法。
18.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510974173.8A CN105607942B (zh) | 2015-12-23 | 2015-12-23 | 一种投票判定的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510974173.8A CN105607942B (zh) | 2015-12-23 | 2015-12-23 | 一种投票判定的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105607942A CN105607942A (zh) | 2016-05-25 |
CN105607942B true CN105607942B (zh) | 2019-01-08 |
Family
ID=55987896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510974173.8A Active CN105607942B (zh) | 2015-12-23 | 2015-12-23 | 一种投票判定的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105607942B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111046067A (zh) * | 2018-10-11 | 2020-04-21 | 北京京东尚科信息技术有限公司 | 一种数据判定的方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101500040A (zh) * | 2009-03-02 | 2009-08-05 | 南京联创科技股份有限公司 | 基于任意扩展属性规格的可配置流程调度和环节选取方法 |
CN102117200A (zh) * | 2011-02-15 | 2011-07-06 | 浪潮通信信息系统有限公司 | 用Oracle的dual表实现java代码中动态条件判断的方法 |
CN102446167A (zh) * | 2011-08-31 | 2012-05-09 | 中博信息技术研究院有限公司 | 一种基于逻辑模板对复杂字符串逻辑处理的方法和装置 |
CN103870285A (zh) * | 2014-04-02 | 2014-06-18 | 成都西山居互动娱乐科技有限公司 | 进行逻辑流程控制的链式状态转换方法 |
CN104383684A (zh) * | 2014-11-21 | 2015-03-04 | 珠海金山网络游戏科技有限公司 | 一种通用的游戏状态控制系统和方法 |
-
2015
- 2015-12-23 CN CN201510974173.8A patent/CN105607942B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101500040A (zh) * | 2009-03-02 | 2009-08-05 | 南京联创科技股份有限公司 | 基于任意扩展属性规格的可配置流程调度和环节选取方法 |
CN102117200A (zh) * | 2011-02-15 | 2011-07-06 | 浪潮通信信息系统有限公司 | 用Oracle的dual表实现java代码中动态条件判断的方法 |
CN102446167A (zh) * | 2011-08-31 | 2012-05-09 | 中博信息技术研究院有限公司 | 一种基于逻辑模板对复杂字符串逻辑处理的方法和装置 |
CN103870285A (zh) * | 2014-04-02 | 2014-06-18 | 成都西山居互动娱乐科技有限公司 | 进行逻辑流程控制的链式状态转换方法 |
CN104383684A (zh) * | 2014-11-21 | 2015-03-04 | 珠海金山网络游戏科技有限公司 | 一种通用的游戏状态控制系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105607942A (zh) | 2016-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677404B (zh) | 一种基于Zookeeper的配置更新方法及装置 | |
CN111382456B (zh) | 提案消息处理方法、装置、设备以及存储介质 | |
US20180307551A1 (en) | Log Events for Root Cause Error Diagnosis | |
Stoelinga | An introduction to probabilistic automata | |
US9246777B2 (en) | Computer program and monitoring apparatus | |
CN112134762B (zh) | 针对区块链网络结构的测试方法、装置、终端和存储介质 | |
CA3137748C (en) | Method and apparatus for determining configuration knob of database | |
CN110752969B (zh) | 一种性能检测方法、装置、设备及介质 | |
CN110166276A (zh) | 一种帧同步异常的定位方法、装置、终端设备和介质 | |
CN110930254A (zh) | 基于区块链的数据处理方法、装置、终端及介质 | |
CN112131002A (zh) | 数据管理方法及装置 | |
CN112799782B (zh) | 模型生成系统、方法、电子设备及存储介质 | |
CN112948275A (zh) | 测试数据生成方法、装置、设备及存储介质 | |
CN105607942B (zh) | 一种投票判定的方法和装置 | |
CN105229610B (zh) | 管理以及实现web应用数据快照 | |
CN111090401B (zh) | 存储设备性能预测方法及装置 | |
Arias et al. | Strategic (timed) computation tree logic | |
CN116150273A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN113469377A (zh) | 联邦学习审计方法和装置 | |
FI20215764A1 (en) | Control and terminal device for charging electric vehicles | |
CN111553990A (zh) | 存储验票记录的方法、验票终端及系统 | |
CN113779776B (zh) | 电网调度应用的测试剖面建模方法、系统、设备及介质 | |
CN112491589B (zh) | 一种对象存储网络预警方法、系统、终端及存储介质 | |
EP4075348A1 (en) | Quality control of a machine learning model | |
WO2023089356A1 (en) | Network attribute analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
CB03 | Change of inventor or designer information |
Inventor after: Wei Yawen Inventor after: Sun Zheng Inventor before: Wei Yawen |
|
COR | Change of bibliographic data | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |