CN114610285A - 一种资源获取方法、装置、电子设备及计算机可读介质 - Google Patents

一种资源获取方法、装置、电子设备及计算机可读介质 Download PDF

Info

Publication number
CN114610285A
CN114610285A CN202210223401.8A CN202210223401A CN114610285A CN 114610285 A CN114610285 A CN 114610285A CN 202210223401 A CN202210223401 A CN 202210223401A CN 114610285 A CN114610285 A CN 114610285A
Authority
CN
China
Prior art keywords
rule
resource
resource acquisition
expression
determining
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
Application number
CN202210223401.8A
Other languages
English (en)
Inventor
韩晓飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jingdong City Beijing Digital Technology Co Ltd
Original Assignee
Jingdong City Beijing Digital Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jingdong City Beijing Digital Technology Co Ltd filed Critical Jingdong City Beijing Digital Technology Co Ltd
Priority to CN202210223401.8A priority Critical patent/CN114610285A/zh
Publication of CN114610285A publication Critical patent/CN114610285A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了资源获取方法、装置、电子设备及计算机可读介质,涉及计算机技术领域,该方法包括:接收资源获取请求,进而获取对应的用户信息;将用户信息封装为规则触发对象,将资源获取请求对应的资源封装为规则对象;确定规则执行方式,以基于规则执行方式生成规则表达式,进而基于规则表达式、规则触发对象和规则对象确定对应的布尔结果;基于布尔结果进行资源获取请求对应的资源的获取。通过将用户信息封装为规则触发对象,将资源获取请求对应的资源封装为规则对象以及基于规则执行方式生成规则表达式。以通过基于规则执行方式生成规则表达式的方式预先约定执行方式,不依赖自动解析判断规则执行优先级,降低规则解析和冲突的耗时。

Description

一种资源获取方法、装置、电子设备及计算机可读介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种资源获取方法、装置、电子设备及计算机可读介质。
背景技术
目前,现有的基于规则配置进行资源获取的方法需要为规则开发编写规则脚本,依赖自动解析判断优先级,规则解析和冲突的耗时较长,资源获取的执行效率低。
在实现本申请过程中,发明人发现现有技术中至少存在如下问题:
基于规则配置进行资源获取时,解析规则和解决冲突的耗时长,资源获取的执行效率低。
发明内容
有鉴于此,本申请实施例提供一种资源获取方法、装置、电子设备及计算机可读介质,能够解决现有的基于规则配置进行资源获取时,解析规则和解决冲突的耗时长,资源获取的执行效率低的问题。
为实现上述目的,根据本申请实施例的一个方面,提供了一种资源获取方法,包括:
接收资源获取请求,进而获取对应的用户信息;
将用户信息封装为规则触发对象,将资源获取请求对应的资源封装为规则对象;
确定规则执行方式,以基于规则执行方式生成规则表达式,进而基于规则表达式、规则触发对象和规则对象确定对应的布尔结果;
基于布尔结果进行资源获取请求对应的资源的获取。
可选地,将用户信息封装为规则触发对象,包括:
获取预设对象基类,继承预设对象基类,以基于用户信息改写继承的预设对象基类,进而生成规则触发对象。
可选地,将资源获取请求对应的资源封装为规则对象,包括:
确定规则对象类型和规则执行顺序,继承基础对象以扩展规则执行顺序,进而基于弱二叉堆数据结构和规则执行顺序将资源获取请求对应的资源装载为规则对象。
可选地,确定规则执行方式,包括:
确定资源获取请求对应的规则标识;
基于规则标识确定规则执行方式。
可选地,基于规则表达式、规则触发对象和规则对象确定对应的布尔结果,包括:
对规则表达式进行拆解和映射,以获取规则表达式对应的运算函数和函数执行条件;
响应于确定满足函数执行条件,将规则触发对象和规则对象代入运算函数中,进而得到布尔结果。
可选地,响应于确定满足函数执行条件,将规则触发对象和规则对象代入运算函数中,进而得到布尔结果,包括:
响应于确定规则执行方式为条件优先,执行装载规则对象后的二叉堆数据结构的堆顶规则,若满足优先条件,删除装载规则对象后的二叉堆数据结构的右侧节点,若不满足优先条件,删除装载规则对象后的二叉堆数据结构的左侧节点,进而基于条件优先的预设规则执行顺序将规则触发对象和规则对象代入二叉堆数据结构未被删除的各节点对应的运算函数中,以得到对应的布尔结果。
可选地,基于规则执行方式生成规则表达式,包括:
调用规则配置模板,以获取用户基于规则配置模板的配置参数;
响应于确定规则执行方式为条件优先,生成条件表达式;
映射配置参数,得到对应的逻辑运算符,进而基于条件表达式和对应的逻辑运算符生成规则表达式。
可选地,基于条件表达式生成规则表达式,包括:
确定映射后配置参数的种类;
基于种类合并对应的逻辑运算符;
基于预设的结合规则将合并的对应的逻辑运算符与条件表达式结合,生成规则表达式。
可选地,基于布尔结果进行资源获取请求对应的资源的获取,包括:
响应于确定布尔结果为通过,确定布尔结果对应的规则所对应的资源获取地址;
根据资源获取地址获取对应的资源。
另外,本申请还提供了一种资源获取装置,包括:
接收单元,被配置成接收资源获取请求,进而获取对应的用户信息;
封装单元,被配置成将用户信息封装为规则触发对象,将资源获取请求对应的资源封装为规则对象;
布尔结果确定单元,被配置成确定规则执行方式,以基于规则执行方式生成规则表达式,进而基于规则表达式、规则触发对象和规则对象确定对应的布尔结果;
资源获取单元,被配置成基于布尔结果进行资源获取请求对应的资源的获取。
可选地,封装单元进一步被配置成:
获取预设对象基类,继承预设对象基类,以基于用户信息改写继承的预设对象基类,进而生成规则触发对象。
可选地,封装单元进一步被配置成:
确定规则对象类型和规则执行顺序,继承基础对象以扩展规则执行顺序,进而基于弱二叉堆数据结构和规则执行顺序将资源获取请求对应的资源装载为规则对象。
可选地,布尔结果确定单元进一步被配置成:
确定资源获取请求对应的规则标识;
基于规则标识确定规则执行方式。
可选地,布尔结果确定单元进一步被配置成:
对规则表达式进行拆解和映射,以获取规则表达式对应的运算函数和函数执行条件;
响应于确定满足函数执行条件,将规则触发对象和规则对象代入运算函数中,进而得到布尔结果。
可选地,布尔结果确定单元进一步被配置成:
响应于确定规则执行方式为条件优先,执行装载规则对象后的二叉堆数据结构的堆顶规则,若满足优先条件,删除装载规则对象后的二叉堆数据结构的右侧节点,若不满足优先条件,删除装载规则对象后的二叉堆数据结构的左侧节点,进而基于条件优先的预设规则执行顺序将规则触发对象和规则对象代入二叉堆数据结构未被删除的各节点对应的运算函数中,以得到对应的布尔结果。
可选地,布尔结果确定单元进一步被配置成:
调用规则配置模板,以获取用户基于规则配置模板的配置参数;
响应于确定规则执行方式为条件优先,生成条件表达式;
映射配置参数,得到对应的逻辑运算符,进而基于条件表达式和对应的逻辑运算符生成规则表达式。
可选地,布尔结果确定单元进一步被配置成:
确定映射后配置参数的种类;
基于种类合并对应的逻辑运算符;
基于预设的结合规则将合并的对应的逻辑运算符与条件表达式结合,生成规则表达式。
可选地,资源获取单元进一步被配置成:
响应于确定布尔结果为通过,确定布尔结果对应的规则所对应的资源获取地址;
根据资源获取地址获取对应的资源。
另外,本申请还提供了一种资源获取电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上述的资源获取方法。
另外,本申请还提供了一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现如上述的资源获取方法。
上述发明中的一个实施例具有如下优点或有益效果:本申请通过接收资源获取请求,进而获取对应的用户信息;将用户信息封装为规则触发对象,将资源获取请求对应的资源封装为规则对象;确定规则执行方式,以基于规则执行方式生成规则表达式,进而基于规则表达式、规则触发对象和规则对象确定对应的布尔结果;基于布尔结果进行资源获取请求对应的资源的获取。通过将用户信息封装为规则触发对象,将资源获取请求对应的资源封装为规则对象以及基于规则执行方式生成规则表达式。以通过基于规则执行方式生成规则表达式的方式预先约定执行方式,不依赖自动解析判断规则执行优先级,降低规则解析和冲突的耗时。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本申请,不构成对本申请的不当限定。其中:
图1是根据本申请第一实施例的资源获取方法的主要流程的示意图;
图2是根据本申请第二实施例的资源获取方法的主要流程的示意图;
图3是根据本申请第三实施例的资源获取方法的应用场景示意图;
图4是根据本申请实施例的资源获取装置的主要单元的示意图;
图5是本申请实施例可以应用于其中的示例性系统架构图;
图6是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本申请第一实施例的资源获取方法的主要流程的示意图,如图1所示,资源获取方法包括:
步骤S101,接收资源获取请求,进而获取对应的用户信息。
本实施例中,资源获取方法的执行主体(例如,可以是服务器)可以通过有线连接或无线连接的方式,接收用户通过终端发送的资源获取请求。执行主体在接收到资源获取请求后,可以获取请求中携带的用户信息。用户信息,具体可以包括:姓名、角色、性别、年龄等。示例的,姓名:张三,角色:部门A领导,性别:男,年龄:23。本申请实施例对用户信息的具体内容不做限定。
步骤S102,将用户信息封装为规则触发对象,将资源获取请求对应的资源封装为规则对象。
规则触发对象即规则表达式的左右部分数据对象,装置提供对象基类,执行主体可继承基类,进而基于用户信息自行拓展属性,以得到对应用户信息的规则触发对象。类属性为参与规则计算的最小集合,即规则执行时会根据逻辑运算符的类型逐个对比所有属性。示例的,规则触发对象:People(姓名:张三,角色:部门A领导,性别:男,年龄:23)。规则对象:Resource(ori:部门A,Type:手机号)。规则表达式:部门员工手机号只有部门领导可以看。
在执行主体将资源获取请求对应的资源封装为规则对象时,可以首先确定构建的规则对象的类型。示例的,规则对象的类型可以包括:默认规则对象、优先级规则对象、条件优先规则对象。默认规则对象:左右泛型对象。优先级规则对象:继承基础对象扩展优先级属性,若属性为自定义需要构建自定义comparator(比较器),自定义逻辑运算函数(xxx.xxx.class#udfExcute())。条件优先规则对象:继承基础对象扩展指定执行顺序、原执行顺序、自定义逻辑运算函数(xxx.xxx.class#udfExcute())。
为了使规则对象的装载具备通用性,执行主体可以调用自定义的弱二叉堆数据结构来实现松散的优先队列。相比较传统的二叉树或者链表的实现,二叉堆没有严格的顺序性(堆序性),所以在执行插入时性能较优,且能满足对有序、无序和条件有序的装载。
具体地,堆的数据结构,分为堆顶和树形堆节点,当装载的规则为普通规则或有序规则时,二叉堆就是一棵普通的二叉树,其排序与遍历和二叉树一样;当装载的是条件优先规则时,会将堆顶初始化为默认值(size*2+1,规则集长度二倍+1),使其对堆顶进行占位,然后按照指定的条件优先级对规则进行剩余的优先级重置,使其都分布在二叉堆左节点并保持有序,将原顺序规则分布在二叉堆右节点并保持有序。具体地,装载过程如下:利用资源获取请求对应的资源初始装载二叉堆树,初始装载后,将堆顶节点与堆尾节点进行互换,并重新从堆顶执行下滤;遍历二叉堆树,堆顶替换为条件规则,所有左节点按照自上而下替换为条件满足后执行的顺序对应规则,所有右节点替换为条件不满足时执行的顺序对应的规则。示例的,在进行下滤的过程中,执行主体可以判断二叉堆树的有节点坐标是否大于总长,若大于,则只比较双亲与左节点大小,双亲小则交换。示例的,二叉堆树从上至下,第一行的节点的下标为1;第二行以第一行下标为1的节点为双亲节点,对应的子节点的下标依次为2、3;第三行以第二行下标为2的节点为双亲节点,对应的子节点的下标依次为4、5;第四行以第三行下标为4的节点为双亲节点,对应的子节点的下标依次为6、7,以第三行下标为5的节点为双亲节点,对应的子节点的下标依次为8、9。如果二叉堆树的右节点坐标大于总长,则表明存在右节点,取出下标为3的当前节点、下标为7的左节点和下标为8的右节点,若左节点大于有节点,则比较左节点和双亲节点,双亲大,则跳出,下滤,否则交换左节点与双亲位置;若左节点小于右节点,则比较右节点与双亲,双亲大,则跳出,否则交换右节点与双亲位置。示例的,最大层级:size>>>1=4;下滤节点下标:c_index:(size/2)-1=3;左节点:c_index*2+1=7;右节点:(c_index+1)*2=8;下滤条件:非叶子节点。下滤一般应用于删除了堆顶后的堆序重整过程中。通过下滤,使堆在删除堆顶后把新的堆顶放置在满足堆序的正确的位置上。同时,亦可应用于对一个无序数组的堆排序的算法中。把数组视为一个无序的堆,通过下滤,使堆重新满足一定的堆序,装载完成后即将资源获取请求对应的资源封装为了规则对象。
示例的,下滤:针对堆中的某一个位置进行,传入的参数一般为三个:数组的引用&v、下滤的位置i、数组的大小n(也可以重载为4个参数,添加一个比较器来确定下滤为最大堆还是最小堆。)。假设下滤为最小堆,首先寻找该节点的左右两个子节点中最小的子节点,然后比较该节点和最小的子节点,如果子节点比较小,就交换二者的位置。迭代进行这个过程,直到该节点为叶子节点为止。从宏观上看,节点会在以该节点为根的堆中,自上而下地到达其满足整个堆序的正确位置,称为下滤(percolate down)。
在删除堆顶后的堆序重整过程中,堆末的元素会放入堆顶,而其他元素位置不变,从而保证了所有真子堆满足堆序,所以只需对堆顶执行下滤即可。
在堆排序的过程中,由于不是所有元素都按照堆序排列,因此需要对每一个非叶子节点进行下滤。节点进行下滤的顺序是,从堆中最后一个非叶子节点开始,到堆顶结束。这样可以保证对于每个即将进行下滤的节点,以它们为根的子堆都是满足堆序的,因此对该节点下滤后以该节点为根的堆可以得到正确的堆序。下滤过程不会对叶子节点进行,所以无需从叶子节点开始,只需从n/2的位置开始即可。
步骤S103,确定规则执行方式,以基于规则执行方式生成规则表达式,进而基于规则表达式、规则触发对象和规则对象确定对应的布尔结果。
示例的,操作:L exp R,即把规则触发对象作为表达式左输入对象,规则对象作为右输入对象代入表达式。示例的,2+3=5,规则触发对象就是2,规则对象就是5,表达式是+3,运算过程:左输入2,表达式+3,规则对象5判断是否相等。
具体地,确定规则执行方式,包括:
确定资源获取请求对应的规则标识。规则标识,可以是SX、YXJ、TJ、MR,本申请实施例对规则标识的具体内容不做限定。其中,规则标识SX可以表征顺序执行方式,YXJ可以表征按优先级执行方式,TJ可以表征条件优先执行方式,MR可以表征默认执行方式。执行主体可以根据资源获取请求中携带的规则标识来确定对应的规则执行方式。
具体地,基于规则执行方式生成规则表达式,包括:
调用规则配置模板,以获取用户基于规则配置模板的配置参数。
具体地,规则配置模板包含的字段可以包括:触发对象、规则表达式、参照对象。规则配置模板的触发对象字段、规则表达式字段以及参照对象字段的旁边设置有下拉选择框,执行主体可以通过下拉选择来动态地构建规则。其中,触发对象与参照对象同样是动态可配置的。用户可以通过下拉框来配置规则的参数,该参数,例如可以是部门、同级部门、二级部门、大于、小于、等于等。当执行主体检测到用户点击规则保存时,左边的触发对象构件会被映射为规则触发对象,右边的参照对象构件会被映射为规则对象,规则表达式会被映射为逻辑运算符。逻辑运算符包括:>、<、>=、==、!=。逻辑运算符用户可自定义配置,自定义的运算符会被关联到一个具体Comparator实体类全路径上。示例的,当触发对象后的下拉框选择“部门”,规则表达式后的下拉框选择“等于”,参照对象后的下拉框选择“同级部门”,则该条规则会被映射为:==O。表达式==O会被系统翻译成左边输入对象的部门等于右边输入对象的部门。示例的,==age,左输入张三,右输入李四,判断张三的年龄和李四是否一样。跨类型对象不支持规则运算,例如,不可以配置“角色不等于性别”。
响应于确定规则执行方式为条件优先,生成条件表达式;映射配置参数,得到对应的逻辑运算符,进而基于条件表达式和对应的逻辑运算符生成规则表达式。
具体地,基于条件表达式和对应的逻辑运算符生成规则表达式,包括:
确定映射后配置参数的种类;基于种类合并对应的逻辑运算符;基于预设的结合规则将合并的对应的逻辑运算符与条件表达式结合,生成规则表达式。
示例的,当匹配多条规则的时候,执行主体会将左右对象ID合并,将相同的表达式合并,逻辑运算符通过括号分别装置并合并。示例的,当执行主体检测到用户添加规则:
触发对象:部门,规则表达式:等于,参照对象:同级部门;
触发对象:部门,规则表达式:大于,参照对象:二级部门。
将被映射为:(==O)&&(>O)。实现规则和实例对象的动态映射。“映射为”的意思是把字面逻辑翻译为可执行的机器命令,比如支付按钮,点击支付系统需要把这个按钮解释成扣除下单人账户余额增加商户账户余额。符号的含义就是正常通用的逻辑运算符含义:>大于,<小于,==等于,!=不等于。同时,用户可选规则的执行方式。当用户选择顺序执行时,规则即按照配置的顺序执行,当用户选择按优先级时,规则条目后会出现优先级输入框,用户可自行决定排序方式,默认是升序执行,自定义优先级需要配合自定义comparator使用。用户选择条件优先时会提示用户根据已配置规则选择指定条目的优先条件。
具体地,当执行主体检测到用户勾选了条件优先选项时,会获取用户输入的规则、条件、指定顺序。示例的,执行主体可以获取用户添加的一个规则,例如:触发对象:部门,规则表达式:等于,参照对象:同级部门;以及添加的另一个规则,触发对象:部门,规则表达式:大于,参照对象:二级部门;以及条件优先对应的规则,例如,规则:1,条件:满足,指定顺序:21。如在指定顺序中没有出现已配置的规则,则认为满足条件时未配置规则不执行。基于条件表达式{condition}[=n]以及对应的逻辑运算符>、<、>=、==、&或!=,执行主体获取的上述规则会被映射为规则表达式:{condition}[=1](>O)&&(==O)。其中,&&表示与逻辑。示例的,age>3&&age<5;表示需要同时满足年龄大于3和小于5;{condition}表示这个规则是条件优先的规则,需要优先执行的是[=1]第一条规则,第一条规则是(>O)&&(==O)表示左边输入是右边的平级或上级。
具体地,装置支持的条件表达为:满足(=)、互斥(!)、不成立(/)。
作为本申请实施例的另一种实现方式,执行主体在创建复杂规则和批量规则时,可以通过导入脚本的形式上传。示例的,对应的脚本格式如下所示:
Id:1,L_Obj:Org,Determiner:>,R_Obj:Org,Type:INNER,L_Class:com.jd.cityos.dright.OrgVo,R_Class:com.jd.cityos.dright.OrgVo,M_Class:空,Combine:FALSE,Expression:空;
Id:2,L_Obj:Premission,Determiner:Contain,R_Obj:Admin,Type:UDF,L_Class:com.jd.cityos.dright.Permission,R_Class:com.jd.cityos.dright.Role,M_Class:com.jd.cityos.dright.UDFCompare#containR,Combine:FALSE,Expression:空
Id:#,L_Obj:#,Determiner:#,R_Obj:#,Type:#,L_Class:#,R_Class:#,M_Class:#,Combine:FALSE,Expression:{condition}[=1](1||2):(=2)
其中,Id标识规则编号,L_Obj与R_Obj分别表示规则的左右输入项,Determiner为修饰词即逻辑限定词,Type为规则类型,可选择内置或用户自定义;L_Class为左输入对应的类路径,R_Class为右输入对应的类路径;Combine为合并选项,表示是否为合并配置行,Expression为合并表达式,如果是含有条件规则则用:关联出条件不满足时的关联逻辑,小括号内为单条规则执行逻辑,若有多条用{}进行包括,例:{(1!=2)&&(1>2)}。
上述脚本的规则解析:规则1为内置规则,如果装置识别出内置规则不会再解析M_Class,规则表示判断左边输入规则是否是右边输入规则的上级部门;规则2为自定义限定词规则,自定义限定词规则需要用户自己实现限定词逻辑方法,即表格中的M_Class项会在规则执行时被装置以反射的形式加载并调用用于判断规则是否满足;合并配置行:一个脚本文件支持多个合并配置行,id以#表示且Combine列值为TRUE则装置会解析Expression表达式并按照其配置执行规则。图中含义为,该批量规则脚本为一个条件优先规则脚本,优先执行条件规则1,若规则1满足,在规则1和2中有一满足即整个集合规则满足,若条件规则1不满足,则必须满足规则2,集合规则才满足。整体规则脚本含义为:判断校验对象是否满足是请求对象的上级部门或属于管理岗。
步骤S104,基于布尔结果进行资源获取请求对应的资源的获取。
具体地,基于布尔结果进行资源获取请求对应的资源的获取,包括:
响应于确定布尔结果为通过,确定布尔结果对应的规则所对应的资源获取地址;根据资源获取地址获取对应的资源。
本实施例通过接收资源获取请求,进而获取对应的用户信息;将用户信息封装为规则触发对象,将资源获取请求对应的资源封装为规则对象;确定规则执行方式,以基于规则执行方式生成规则表达式,进而基于规则表达式、规则触发对象和规则对象确定对应的布尔结果;基于布尔结果进行资源获取请求对应的资源的获取。通过将用户信息封装为规则触发对象,将资源获取请求对应的资源封装为规则对象以及基于规则执行方式生成规则表达式。以通过基于规则执行方式生成规则表达式的方式预先约定执行方式,不依赖自动解析判断规则执行优先级,降低规则解析和冲突的耗时。
图2是根据本申请第二实施例的资源获取方法的主要流程示意图,如图2所示,资源获取方法包括:
步骤S201,接收资源获取请求,进而获取对应的用户信息。
步骤S201的原理与步骤S101的原理类似,此处不再赘述。
步骤S202,获取预设对象基类,继承预设对象基类,以基于用户信息改写继承的预设对象基类,进而生成规则触发对象。
具体地,规则触发对象即规则表达式的左右部分数据对象,业务系统的装置提供对象基类,执行主体可以继承基类,进而基于用户信息自行拓展属性,从而生成规则触发对象。
步骤S203,确定规则对象类型和规则执行顺序,继承基础对象以扩展规则执行顺序,进而基于弱二叉堆数据结构和规则执行顺序将资源获取请求对应的资源装载为规则对象。
规则对象类型,例如,可以包括默认规则对象、优先级规则对象、条件规则对象。为了使规则对象的装载具备通用性,装置自定义了一种弱二叉堆数据结构来实现松散的优先队列,相比较传统的二叉树或者链表的实现,二叉堆没有严格的顺序性(堆序性),所以在执行插入时性能较优,且能满足对有序、无序和条件有序的装载。在基于资源获取请求对应的资源初始装载二叉堆树后,执行主体可以将堆顶节点与堆尾节点进行互换,并重新从堆顶执行下滤;遍历二叉堆树,堆顶替换为条件规则,所有左节点按照自上而下替换为条件满足后执行的顺序对应规则,所有右节点替换为条件不满足时执行的顺序对应的规则。通过下滤,使堆重新满足一定的堆序,装载完成后即将资源获取请求对应的资源封装为了规则对象。从而实现通用的支持默认、优先级树、条件局部优先的二叉堆数据结构。
步骤S204,确定规则执行方式,以基于规则执行方式生成规则表达式,进而基于规则表达式、规则触发对象和规则对象确定对应的布尔结果。
具体地,基于规则表达式、规则触发对象和规则对象确定对应的布尔结果,包括:
对规则表达式进行拆解和映射,以获取规则表达式对应的运算函数和函数执行条件。
具体地,在执行规则时,首先对规则逻辑表达式进行拆解和映射,装置内置的逻辑运算符通过枚举可以匹配到运算函数,通过反射获取运算算子实体即获取了表达式对应的函数执行条件,同理用户自定义的逻辑运算会在扩展属性中指定好函数路径。
然后,执行主体需要对逻辑表达式的运算属性进行还原,所有的属性需要维护到属性类型枚举中,指定逻辑运算时根据运算符左侧的符号去枚举中获取对应的属性名称,例==O,O即被解释为org即机构属性名称。
响应于确定满足函数执行条件,将规则触发对象和规则对象代入运算函数中,进而得到布尔结果。
布尔结果,可以是通过或拒绝,true或false。
具体地,响应于确定满足函数执行条件,将规则触发对象和规则对象代入运算函数中,进而得到布尔结果,包括:
响应于确定规则执行方式为条件优先,执行装载规则对象后的二叉堆数据结构的堆顶规则,若满足优先条件,删除装载规则对象后的二叉堆数据结构的右侧节点,若不满足优先条件,删除装载规则对象后的二叉堆数据结构的左侧节点,进而基于条件优先的预设规则执行顺序将规则触发对象和规则对象代入二叉堆数据结构未被删除的各节点对应的运算函数中,以得到对应的布尔结果。
示例的,在当前条件满足函数执行条件时,按照表达式集合顺序,将规则触发对象和规则对象(即左、右属性)代入到对应的反射获取的算子对象的对应方法中,根据返回结果决定继续执行还是终止执行。针对条件优先的规则类型,先执行堆顶规则,若满足优先条件则删除二叉堆右侧节点,同理不满足优先条件时,则清空左侧二叉堆节点,然后按顺序执行规则集合。
步骤S205,基于布尔结果进行资源获取请求对应的资源的获取。
本申请实施例中,议程,指的是一组有序的规则组集合。下滤,指的是把当前节点向下寻找其应该在的位置。二叉堆,指的是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树)。叶子节点:一棵树当中没有子节点(即度为0)的节点,称为叶子节点。规则引擎,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。
步骤S204~步骤S205的原理与步骤S103~步骤S104的原理类似,此处不再赘述。
图3是根据本申请第三实施例的资源获取方法的应用场景示意图。本申请实施例的资源获取方法,可以应用于基于规则配置进行资源获取的场景中。如图3所示,服务器302接收用户301发送的资源获取请求304,进而获取对应的用户信息305。服务器302将用户信息305封装为规则触发对象306,将资源获取请求304对应的资源封装为规则对象307。服务器302确定规则执行方式308,以基于规则执行方式308生成规则表达式309,进而基于规则表达式309、规则触发对象306和规则对象307确定对应的布尔结果310。具体地,服务器(也即执行主体)可以调用规则引擎303,以解析规则表达式309,将规则触发对象306和规则对象307代入规则表达式309,进而按照规则的顺序执行,直至确定布尔结果310。当布尔结果310指示规则通过时,服务器302基于布尔结果310进行资源获取请求304对应的资源的获取,并返回获取的用户请求的资源。
图4是根据本申请实施例的资源获取装置的主要单元的示意图。如图4所示,资源获取装置包括接收单元401、封装单元402、布尔结果确定单元403和资源获取单元404。
接收单元401,被配置成接收资源获取请求,进而获取对应的用户信息。
封装单元402,被配置成将用户信息封装为规则触发对象,将资源获取请求对应的资源封装为规则对象。
布尔结果确定单元403,被配置成确定规则执行方式,以基于规则执行方式生成规则表达式,进而基于规则表达式、规则触发对象和规则对象确定对应的布尔结果。
资源获取单元404,被配置成基于布尔结果进行资源获取请求对应的资源的获取。
在一些实施例中,封装单元402进一步被配置成:获取预设对象基类,继承预设对象基类,以基于用户信息改写继承的预设对象基类,进而生成规则触发对象。
在一些实施例中,封装单元402进一步被配置成:确定规则对象类型和规则执行顺序,继承基础对象以扩展规则执行顺序,进而基于弱二叉堆数据结构和规则执行顺序将资源获取请求对应的资源装载为规则对象。
在一些实施例中,布尔结果确定单元403进一步被配置成:确定资源获取请求对应的规则标识;基于规则标识确定规则执行方式。
在一些实施例中,布尔结果确定单元403进一步被配置成:对规则表达式进行拆解和映射,以获取规则表达式对应的运算函数和函数执行条件;响应于确定满足函数执行条件,将规则触发对象和规则对象代入运算函数中,进而得到布尔结果。
在一些实施例中,布尔结果确定单元403进一步被配置成:响应于确定规则执行方式为条件优先,执行装载规则对象后的二叉堆数据结构的堆顶规则,若满足优先条件,删除装载规则对象后的二叉堆数据结构的右侧节点,若不满足优先条件,删除装载规则对象后的二叉堆数据结构的左侧节点,进而基于条件优先的预设规则执行顺序将规则触发对象和规则对象代入二叉堆数据结构未被删除的各节点对应的运算函数中,以得到对应的布尔结果。
在一些实施例中,布尔结果确定单元403进一步被配置成:调用规则配置模板,以获取用户基于规则配置模板的配置参数;响应于确定规则执行方式为条件优先,生成条件表达式;映射配置参数,得到对应的逻辑运算符,进而基于条件表达式和对应的逻辑运算符生成规则表达式。
在一些实施例中,布尔结果确定单元403进一步被配置成:确定映射后配置参数的种类;基于种类合并对应的逻辑运算符;基于预设的结合规则将合并的对应的逻辑运算符与条件表达式结合,生成规则表达式。
在一些实施例中,资源获取单元404进一步被配置成:响应于确定布尔结果为通过,确定布尔结果对应的规则所对应的资源获取地址;根据资源获取地址获取对应的资源。
需要说明的是,在本申请资源获取方法和资源获取装置在具体实施内容上具有相应关系,故重复内容不再说明。
图5示出了可以应用本申请实施例的资源获取方法或资源获取装置的示例性系统架构500。
如图5所示,系统架构500可以包括终端设备501、502、503,网络504和服务器505。网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。终端设备501、502、503上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备501、502、503可以是具有资源获取处理屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器505可以是提供各种服务的服务器,例如对用户利用终端设备501、502、503所提交的资源获取请求提供支持的后台管理服务器(仅为示例)。后台管理服务器可以接收资源获取请求,进而获取对应的用户信息;将用户信息封装为规则触发对象,将资源获取请求对应的资源封装为规则对象;确定规则执行方式,以基于规则执行方式生成规则表达式,进而基于规则表达式、规则触发对象和规则对象确定对应的布尔结果;基于布尔结果进行资源获取请求对应的资源的获取。通过将用户信息封装为规则触发对象,将资源获取请求对应的资源封装为规则对象以及基于规则执行方式生成规则表达式。以通过基于规则执行方式生成规则表达式的方式预先约定执行方式,不依赖自动解析判断规则执行优先级,降低规则解析和冲突的耗时。
需要说明的是,本申请实施例所提供的资源获取方法一般由服务器505执行,相应地,资源获取装置一般设置于服务器505中。
应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图6,其示出了适于用来实现本申请实施例的终端设备的计算机系统600的结构示意图。图6示出的终端设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM603中,还存储有计算机系统600操作所需的各种程序和数据。CPU601、ROM602以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶征信授权查询处理器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本申请公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括接收单元、封装单元、布尔结果确定单元和资源获取单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括接收资源获取请求,进而获取对应的用户信息;将用户信息封装为规则触发对象,将资源获取请求对应的资源封装为规则对象;确定规则执行方式,以基于规则执行方式生成规则表达式,进而基于规则表达式、规则触发对象和规则对象确定对应的布尔结果;基于布尔结果进行资源获取请求对应的资源的获取。
根据本申请实施例的技术方案,通过将用户信息封装为规则触发对象,将资源获取请求对应的资源封装为规则对象以及基于规则执行方式生成规则表达式。以通过基于规则执行方式生成规则表达式的方式预先约定执行方式,不依赖自动解析判断规则执行优先级,降低规则解析和冲突的耗时。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (12)

1.一种资源获取方法,其特征在于,包括:
接收资源获取请求,进而获取对应的用户信息;
将所述用户信息封装为规则触发对象,将所述资源获取请求对应的资源封装为规则对象;
确定规则执行方式,以基于所述规则执行方式生成规则表达式,进而基于所述规则表达式、所述规则触发对象和所述规则对象确定对应的布尔结果;
基于所述布尔结果进行所述资源获取请求对应的资源的获取。
2.根据权利要求1所述的方法,其特征在于,所述将所述用户信息封装为规则触发对象,包括:
获取预设对象基类,继承所述预设对象基类,以基于所述用户信息改写继承的所述预设对象基类,进而生成规则触发对象。
3.根据权利要求1所述的方法,其特征在于,所述将所述资源获取请求对应的资源封装为规则对象,包括:
确定规则对象类型和规则执行顺序,继承基础对象以扩展所述规则执行顺序,进而基于弱二叉堆数据结构和所述规则执行顺序将所述资源获取请求对应的资源装载为规则对象。
4.根据权利要求1所述的方法,其特征在于,所述确定规则执行方式,包括:
确定所述资源获取请求对应的规则标识;
基于所述规则标识确定规则执行方式。
5.根据权利要求3所述的方法,其特征在于,所述基于所述规则表达式、所述规则触发对象和所述规则对象确定对应的布尔结果,包括:
对所述规则表达式进行拆解和映射,以获取所述规则表达式对应的运算函数和函数执行条件;
响应于确定满足函数执行条件,将所述规则触发对象和所述规则对象代入所述运算函数中,进而得到布尔结果。
6.根据权利要求5所述的方法,其特征在于,所述响应于确定满足函数执行条件,将所述规则触发对象和所述规则对象代入所述运算函数中,进而得到布尔结果,包括:
响应于确定所述规则执行方式为条件优先,执行装载规则对象后的二叉堆数据结构的堆顶规则,若满足优先条件,删除装载规则对象后的二叉堆数据结构的右侧节点,若不满足优先条件,删除装载规则对象后的二叉堆数据结构的左侧节点,进而基于条件优先的预设规则执行顺序将所述规则触发对象和所述规则对象代入二叉堆数据结构未被删除的各节点对应的运算函数中,以得到对应的布尔结果。
7.根据权利要求1所述的方法,其特征在于,所述基于所述规则执行方式生成规则表达式,包括:
调用规则配置模板,以获取用户基于所述规则配置模板的配置参数;
响应于确定所述规则执行方式为条件优先,生成条件表达式;
映射所述配置参数,得到对应的逻辑运算符,进而基于所述条件表达式和所述对应的逻辑运算符生成规则表达式。
8.根据权利要求7所述的方法,其特征在于,所述基于所述条件表达式和所述对应的逻辑运算符生成规则表达式,包括:
确定映射后配置参数的种类;
基于所述种类合并所述对应的逻辑运算符;
基于预设的结合规则将合并的所述对应的逻辑运算符与所述条件表达式结合,生成规则表达式。
9.根据权利要求1所述的方法,其特征在于,所述基于所述布尔结果进行所述资源获取请求对应的资源的获取,包括:
响应于确定所述布尔结果为通过,确定所述布尔结果对应的规则所对应的资源获取地址;
根据所述资源获取地址获取对应的资源。
10.一种资源获取装置,其特征在于,包括:
接收单元,被配置成接收资源获取请求,进而获取对应的用户信息;
封装单元,被配置成将所述用户信息封装为规则触发对象,将所述资源获取请求对应的资源封装为规则对象;
布尔结果确定单元,被配置成确定规则执行方式,以基于所述规则执行方式生成规则表达式,进而基于所述规则表达式、所述规则触发对象和所述规则对象确定对应的布尔结果;
资源获取单元,被配置成基于所述布尔结果进行所述资源获取请求对应的资源的获取。
11.一种资源获取电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-9中任一所述的方法。
CN202210223401.8A 2022-03-07 2022-03-07 一种资源获取方法、装置、电子设备及计算机可读介质 Pending CN114610285A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210223401.8A CN114610285A (zh) 2022-03-07 2022-03-07 一种资源获取方法、装置、电子设备及计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210223401.8A CN114610285A (zh) 2022-03-07 2022-03-07 一种资源获取方法、装置、电子设备及计算机可读介质

Publications (1)

Publication Number Publication Date
CN114610285A true CN114610285A (zh) 2022-06-10

Family

ID=81861174

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210223401.8A Pending CN114610285A (zh) 2022-03-07 2022-03-07 一种资源获取方法、装置、电子设备及计算机可读介质

Country Status (1)

Country Link
CN (1) CN114610285A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104346383A (zh) * 2013-07-31 2015-02-11 上海云端广告有限公司 一种数据权限控制方法和系统
CN106845990A (zh) * 2015-12-03 2017-06-13 阿里巴巴集团控股有限公司 一种规则处理方法和设备
CN110362594A (zh) * 2019-07-15 2019-10-22 阿里巴巴集团控股有限公司 一种信息处理方法和系统
CN110688403A (zh) * 2019-09-23 2020-01-14 中国船舶重工集团公司第七一六研究所 Activiti流程人工节点办理人筛选引擎
CN111832847A (zh) * 2019-03-26 2020-10-27 阿里巴巴集团控股有限公司 仿真处理、补货确定方法、装置、设备和存储介质
CN113384899A (zh) * 2021-07-05 2021-09-14 在线途游(北京)科技有限公司 基于规则的运营方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104346383A (zh) * 2013-07-31 2015-02-11 上海云端广告有限公司 一种数据权限控制方法和系统
CN106845990A (zh) * 2015-12-03 2017-06-13 阿里巴巴集团控股有限公司 一种规则处理方法和设备
CN111832847A (zh) * 2019-03-26 2020-10-27 阿里巴巴集团控股有限公司 仿真处理、补货确定方法、装置、设备和存储介质
CN110362594A (zh) * 2019-07-15 2019-10-22 阿里巴巴集团控股有限公司 一种信息处理方法和系统
CN110688403A (zh) * 2019-09-23 2020-01-14 中国船舶重工集团公司第七一六研究所 Activiti流程人工节点办理人筛选引擎
CN113384899A (zh) * 2021-07-05 2021-09-14 在线途游(北京)科技有限公司 基于规则的运营方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
吴让仲编著: "《数据结构及算法分析实践指导》", vol. 1, 30 June 2014, 中国地质大学出版社, pages: 150 - 151 *

Similar Documents

Publication Publication Date Title
US10942708B2 (en) Generating web API specification from online documentation
US10042746B2 (en) Callpath finder
CN110019080B (zh) 数据访问方法和装置
US20160188391A1 (en) Sophisticated run-time system for graph processing
US9304835B1 (en) Optimized system for analytics (graphs and sparse matrices) operations
US11075991B2 (en) Partitioning data according to relative differences indicated by a cover tree
US9043757B2 (en) Identifying differences between source codes of different versions of a software when each source code is organized using incorporated files
US10262155B1 (en) Disabling features using feature toggle
CN113238740B (zh) 代码生成方法、代码生成装置、存储介质及电子设备
CN109981719A (zh) 信息处理方法及其系统、计算机系统和计算机可读介质
CN113626223A (zh) 一种接口调用方法和装置
CN110647322A (zh) 列表渲染方法、装置、电子设备和计算机可读介质
CN111338716A (zh) 基于规则引擎的数据处理方法、装置及终端设备
CN109634569B (zh) 基于注解的流程实现方法、装置、设备及可读存储介质
CN110851343A (zh) 一种基于决策树的测试方法和装置
CN108959294B (zh) 一种访问搜索引擎的方法和装置
CN104378393A (zh) 一种资源分享方法和相应的装置
US20200334034A1 (en) Federated extensibility workbench
CN114610285A (zh) 一种资源获取方法、装置、电子设备及计算机可读介质
CN112052152A (zh) 一种模拟测试的方法和装置
US8468159B2 (en) Data element categorization in a service-oriented architecture
CN113760969A (zh) 一种基于ElasticSearch的数据查询方法和装置
CN109388619B (zh) 共享数据系统及共享数据方法
CN113190730A (zh) 一种区块链地址的分类方法及装置
CN113448960A (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