CN102779032A - 基于复合组件的请求处理方法及系统 - Google Patents

基于复合组件的请求处理方法及系统 Download PDF

Info

Publication number
CN102779032A
CN102779032A CN2011101213957A CN201110121395A CN102779032A CN 102779032 A CN102779032 A CN 102779032A CN 2011101213957 A CN2011101213957 A CN 2011101213957A CN 201110121395 A CN201110121395 A CN 201110121395A CN 102779032 A CN102779032 A CN 102779032A
Authority
CN
China
Prior art keywords
component
composite component
sub
property value
page
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
Application number
CN2011101213957A
Other languages
English (en)
Other versions
CN102779032B (zh
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.)
Shenzhen Kingdee Tianyanyun Computing Co Ltd
Original Assignee
Shenzhen Kingdee Middleware 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 Shenzhen Kingdee Middleware Co ltd filed Critical Shenzhen Kingdee Middleware Co ltd
Priority to CN201110121395.7A priority Critical patent/CN102779032B/zh
Publication of CN102779032A publication Critical patent/CN102779032A/zh
Application granted granted Critical
Publication of CN102779032B publication Critical patent/CN102779032B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

一种基于复合组件的请求处理方法,包括以下步骤:接收页面请求;遍历页面中的组件,并判断页面中的组件是否为复合组件,若是,则遍历复合组件中的子组件;将子组件的属性值与复合组件的属性值相关联得到命名空间值;获取与子组件生命周期阶段对应的调用方法;根据页面请求以及命名空间值执行调用方法。上述基于复合组件的请求处理方法及系统,将复合组件的属性值与子组件的属性值相关联得到命名空间值,并根据命名空间值进行调用方法的执行,极大地避免了同一页面多个复合组件互相干扰的状况发生,在命名空间值作用下,执行了调用方法后仅对与该命名空间值对应的复合组件进行响应,在提高代码复合率、降低开发成本的同时保证了复合组件之间的抗干扰性。

Description

基于复合组件的请求处理方法及系统
【技术领域】
本发明涉及计算机应用技术,特别是涉及一种基于复合组件的请求处理方法及系统。
【背景技术】
在使用JSF(Java Server Faces)开发的Web应用中,常常通过使用复合组件来提高代码的可重用性。然而,在实际的使用过程中,一个复合组件在同一个页面里经常需要使用多次。例如,在一个页面中有多张照片,每张照片下方都设置了一个打分复合组件,浏览照片的用户使用打分复合组件对每张照片打分。当用户激活任一打分复合组件进行打分时,后台通过调用相应的方法,如托管Bean(managed-bean)来改变页面中打分复合组件的显示样式,使打分复合组件由原来的0颗星变为3颗星。
但是,由于页面中的所有打分复合组件都绑定到了同一个托管bean,使得托管bean在对激活的打分复合组件产生响应改变其显示样式时,产生了多个打分复合组件使用同一个托管bean时互相干扰的情况,页面上所有的打分复合组件都显示为3颗星,所有的打分组件都会变成一样的,全部是显示为3颗星。
【发明内容】
基于此,有必要提供一种可避免页面中多个复合组件互相干扰的基于复合组件的请求处理方法。
此外,还有必要提供一个可避免页面中多个复合组件互相干扰的基于复合组件的请求处理系统。
一种基于复合组件的请求处理方法,包括以下步骤:
接收页面请求;
遍历页面中的组件,并判断所述页面中的组件是否为复合组件,若是,则
遍历所述复合组件中的子组件;
将子组件的属性值与复合组件的属性值相关联得到命名空间值;
获取与子组件所处生命周期阶段对应的调用方法;
根据所述页面请求以及命名空间值执行调用方法。
优选地,当所述页面中的组件为复合组件时,所述方法还包括:
获取所述复合组件的属性值,并设置于请求作用域中;
将子组件的属性值与复合组件的属性值相关联得到命名空间值的步骤为:
获取所述子组件的属性值,将所述子组件的属性值设置于请求作用域中,与复合组件的属性值相关联得到命名空间值。
优选地,还包括:
根据所述子组件的命名空间值返回调用方法的执行结果。
优选地,还包括:
当复合组件中的子组件遍历完毕时,删除所述请求作用域中复合组件的属性值。
优选地,还包括:
当页面中的组件遍历完毕后判断生命周期的阶段是否运行完毕,若是,则返回执行结果,若否,则返回遍历页面中的组件的步骤。
一种基于复合组件的请求处理系统,至少包括:
接收模块,用于接收页面请求;
遍历模块,用于遍历页面中的组件;
判断模块,用于判断页面中的组件是否为复合组件,若是,则通知所述遍历模块;
所述遍历模块还用于遍历所述复合组件中的子组件;
处理模块,用于将子组件的属性值与复合组件的属性值相关联得到命名空间值,并获取与子组件所处生命周期阶段对应的调用方法;
执行模块,用于根据所述页面请求以及命名空间值执行调用方法。
优选地,所述处理模块包括:
获取单元,用于获取复合组件的属性值、子组件的属性值以及与子组件生命周期阶段对应的调用方法;
属性值设置单元,用于将复合组件的属性值以及子组件的属性值设置于请求使用域中,并将所述复合组件的属性值以及子组件的属性值相关联得到命名空间值。
优选地,所述执行模块还用于根据所述子组件的命名空间值返回调用方法的执行结果。
优选地,当复合组件中的子组件遍历完毕时,所述属性值设置单元还用于删除所述请求使用域中复合组件的属性值。
优选地,当页面中的组件遍历完毕后,所述判断模块判断生命周期的阶段是否运行完毕,若是,则返回执行结果,若否,则继续遍历页面中的组件。
上述基于复合组件的请求处理方法及系统,将复合组件的属性值与子组件的属性值相关联得到命名空间值,并根据命名空间值进行了调用方法的执行,极大地避免了同一页面中多个复合组件互相干扰的状况发生,在命名空间值的作用下,执行了调用方法后仅对与该命名空间值对应的复合组件进行响应,在提高代码复用率、降低开发成本的同时保证了复合组件之间的抗干扰性,也有效地降低了浏览器的资源消耗。
【附图说明】
图1为一个实施例中基于复合组件的请求处理方法的流程图;
图2为一个实施例中遍历复合组件的子组件,并将子组件的属性值与复合组件属性值相关联得到命名空间值的流程图;
图3为另一个实施例中基于复合组件的请求处理方法的流程图;
图4为一个实施例中基于复合组件的请求处理系统的结构示意图;
图5为一个实施例中处理模块的结构示意图。
【具体实施方式】
图1示出了一个实施例中基于复合组件的请求处理的方法流程图,包括以下步骤:
在步骤S101中,接收页面请求。本实施例中,用户在浏览器中所显示的页面上激活任一组件,发起页面请求。例如,在一个页面中有多张照片,每张照片下方都设置了一个打分复合组件,浏览照片的用户为使用打分复合组件对每张照片打分,通过鼠标点击页面上的打分复合组件,触发了页面请求向后台发送。
在步骤S102中,遍历页面中的组件。本实施例中,整个页面是由一系列组件构成的组件树,从组件树的根结点开始遍历,逐一访问组件树中的每一个组件。
在步骤S103中,判断页面中的组件是否为复合组件,若是,则进入步骤S104中,若否,则进入步骤S105。本实施例中,如果访问的组件不是复合组件,则根据页面请求、当前所处的生命周期阶段进行查找得到访问的组件所需的调用方法,并执行该调用方法。
在JSF(Java Server Faces)开发的过程中,常常会遇到一个原生组件无法满足所有需求的情况,需要使用多个原生组件来满足所有需求。但是如果这些需求是很常见的,将会导致在多次重复地写入一样的代码。为减少代码量,将多个原生组件封装成一个组件,这一封装了多个原生组件的组件称为复合组件。
根据JSF标准规范,每一个组件都应当经过六个阶段而完成生命周期。生命周期的六个阶段包括:恢复视图、应用请求、执行验证、更新模型值、调用应用程序以及渲染响应。在接收到用户发起的页面请求后,页面中的组件树进入生命周期的恢复视图阶段,待页面中的组件树遍历完毕后将进入生命周期的下一阶段,直到生命周期的全过程结束。
在步骤S104中,遍历复合组件中的子组件。
在步骤S106中,将子组件的属性值与复合组件的属性值相关联得到命名空间值。本实施例中,命名空间值是由属性值构成的,属性值是每一组件的唯一标识,例如,该属性值可以是组件的ID。例如,若复合组件的的属性值为parent,子组件的属性值为children,则将子组件的属性值与复合组件的属性值相关联得到的命名空间值为parent_children。
如图2所示,将子组件的属性值与复合组件属性值相关联得到命名空间值的步骤为:
步骤S116,获取子组件的属性值。
步骤S136,将子组件的属性值设置于请求作用域中,与请求作用域中复合组件的属性值相关联得到命名空间值。本实施例中,请求作用域仅仅在请求开始到结束这一段时间内有效。当复合组件中的子组件遍历完毕时,删除请求作用域中复合组件的属性值。
在步骤S107中,获取与子组件所处生命周期阶段对应的调用方法。本实施例中,根据页面请求、当前所处的生命周期阶段进行查找得到访问的组件所需的调用方法。子组件所处的生命周期阶段不同,组件执行的调用方法也各不相同。例如,在套用申请值阶段,组件将调用processDecodes方法,若处理执行验证阶段,则调用processValidators方法。根据组件所处的生命周期阶段得到对应的调用方法名称,再根据页面请求、调用方法名称以及命名空间值执行调用方法,从而保证了调用方法作用于与命名空间值对应的子组件上。
在步骤S108中,根据页面请求以及命名空间值执行调用方法。
在步骤S105中,根据页面请求、组件所处的生命周期阶段对应的调用方法名称执行调用方法。
在一个具体的实施例中,当页面中的组件为复合组件时,基于复合组件的请求处理方法还包括获取复合组件的属性值,并设置于请求作用域中的步骤。
另一实施例中,上述基于复合组件的请求处理方法还包括了根据子组件的命名空间值返回调用方法的执行结果。本实施例中,在执行了调用方法后,根据命名空间值向对应的子组件返回执行结果。
在优选的实施例中,如图3所示,上述基于复合组件的请求处理方法包括以下步骤:
步骤S301,接收页面请求。
步骤S302,遍历页面中的组件。
步骤S303,判断页面中的组件是否为复合组件,若是,则进入步骤S304中,若否,则进入步骤S312。
步骤S304,获取复合组件的属性值,并设置于请求作用域中。
步骤S305,遍历复合组件中的子组件,并获取子组件的属性值。
步骤S306,将子组件的属性值设置于请求作用域中,与复合组件的属性值相关联得到命名空间值。
步骤S307,获取与子组件所处生命周期阶段对应的调用方法。
步骤S308,根据页面请求及命名空间值执行调用方法。
步骤S309,根据子组件的命名空间值返回调用方法的执行结果。
步骤S310,当复合组件中的子组件遍历完毕时,删除请求作用域中复合组件的属性值。本实施例中,在复合组件中的子组件已经遍历完毕时,删除该复合组件设置在请求作用域中的属性值。
步骤S311,当页面中的组件遍历完毕后判断生命周期的阶段是否运行完毕,若是,则进入步骤S313,若否,则返回步骤S302。本实施例中,当页面中的组件树上的组件均被遍历完毕之后,当前生命周期的阶段已经结束,若此时还有生命周期中的下一阶段需要运行,则进入下一阶段,返回步骤S302;若当前生命周期的阶段是生命周期中的最后一个阶段,则说明页面中的组件树的生命周期结束。
步骤S312,根据页面请求、组件所处的生命周期阶段对应的调用方法名称执行调用方法,并响应。
步骤S313,返回调用方法的执行结果。
图4示出了一个实施例中基于复合组件的请求处理系统的结构,该系统至少包括接收模块10、遍历模块20、判断模块30、处理模块40以及执行模块50。
接收模块10,用于接收页面请求。本实施例中,用户在浏览器中所显示的页面上激活任一组件,发起页面请求。例如,在一个页面中有多张照片,每张照片下方都设置了一个打分复合组件,浏览照片的用户为使用打分复合组件对每张照片打分,通过鼠标点击页面上的打分复合组件,触发了页面请求向后台发送,接收模块10接收用户所发起的页面请求,以便于对用户进行响应。
遍历模块20,用于遍历页面中的组件。本实施例中,整个页面是由一系列组件构成的组件树,遍历模块20从组件树的根结点开始遍历,逐一访问组件树中的每一个组件。
判断模块30,用于判断页面中的组件是否为复合组件,若是,则通知遍历模块20遍历复合组件中的子组件,若否,则通知执行模块50根据页面请求、组件所处的生命周期阶段对应的调用方法名称执行调用方法。本实施例中,如果访问的组件不是复合组件,则根据页面请求、当前所处的生命周期阶段进行查找得到访问的组件所需要的调用方法,并执行该方法。
在JSF(Java Server Faces)开发的过程中,常常会遇到一个原生组件无法满足所有需求的情况,需要使用多个原生组件来满足所有需求。但是如果这些需求是很常见的,将会导致在多次重复地写入一样的代码。为减少代码量,将多个原生组件封装成一个组件,这一封装了多个原生组件的组件称为复合组件。
根据JSF标准规范,每一个组件都应当经过六个阶段而完成生命周期。生命周期的六个阶段包括:恢复视图、应用请求、执行验证、更新模型值、调用应用程序以及渲染响应。在接收到用户发起的页面请求后,页面中的组件树进入生命周期的恢复视图阶段,待页面中的组件树遍历完毕后将进入生命周期的下一阶段。
在其它实施例中,当页面中的组件遍历完毕后,判断模块30判断生命周期的阶段是否运行完毕,若是,则返回执行结果,若否,则继续遍历页面中的组件。
处理模块40,用于子组件的属性值与复合组件的属性值相关联得到命名空间值,并获取与子组件所处生命周期阶段对应的调用方法。本实施例中,属性值是每一组件的唯一标识,该属性值可以是组件的ID。命名空间值是由属性值构成的,例如,若复合组件的的属性值为parent,子组件的属性值为children,则处理模块30将子组件的属性值与复合组件的属性值相关联得到的命名空间值为parent_children。
执行模块50,用于根据页面请求以及命名空间值执行调用方法。本实施例中,所处的生命周期阶段的不同,执行模块50执行的调用方法也各不相同。若处理执行验证阶段,则执行模块50调用processValidators方法。执行模块50根据组件所处的生命周期阶段得到对应的调用方法名称,再根据页面请求、调用方法名称以及命名空间值执行调用方法,从而保证了调用方法作用于与命名空间值对应的子组件上。
在一个具体的实施例中,如图5所示,处理模块40包括获取单元401以及属性值设置单元403。
获取单元401,用于获取复合组件的属性值、子组件的属性值以及与子组件生命周期阶段对应的调用方法。
属性设置单元403,用于将复合组件的属性值以及子组件的属性值相关联得到命名空间值,并将复合组件的属性值以及子组件的属性值相关联得到命名空间值。本实施例中,请求作用域仅仅在请求开始到结束这一段时间内有效。
另一实施例中,当复合组件中的子组件遍历完毕时,属性设置单元403删除请求作用域中复合组件的属性值。本实施例中,在复合组件中的子组件已经遍历完毕时,属性设置单元403删除请求作用域中该复合组件设置在请求作用域中的属性值。
上述基于复合组件的请求处理方法及系统将复合组件的属性值与子组件的属性值相关联得到命名空间值,并根据命名空间值进行了调用方法的执行,极大地避免了同一页面中多个复合组件互相干扰的状况发生,在命名空间值的作用下,执行了调用方法后仅对与该命名空间值对应的复合组件进行响应,在提高代码复用率、降低开发成本的同时保证了复合组件之间的抗干扰性,也有效地降低了浏览器的资源消耗。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种基于复合组件的请求处理方法,包括以下步骤:
接收页面请求;
遍历页面中的组件,并判断所述页面中的组件是否为复合组件,若是,则
遍历所述复合组件中的子组件;
将子组件的属性值与复合组件的属性值相关联得到命名空间值;
获取与子组件所处生命周期阶段对应的调用方法;
根据所述页面请求以及命名空间值执行调用方法。
2.根据权利要求1所述的基于复合组件的请求处理方法,其特征在于,当所述页面中的组件为复合组件时,所述方法还包括:
获取所述复合组件的属性值,并设置于请求作用域中;
将子组件的属性值与复合组件的属性值相关联得到命名空间值的步骤为:
获取所述子组件的属性值,将所述子组件的属性值设置于请求作用域中,与复合组件的属性值相关联得到命名空间值。
3.根据权利要求1所述的基于复合组件的请求处理方法,其特征在于,还包括:
根据所述子组件的命名空间值返回调用方法的执行结果。
4.根据权利要求2所述的基于复合组件的请求处理方法,其特征在于,还包括:
当复合组件中的子组件遍历完毕时,删除所述请求作用域中复合组件的属性值。
5.根据权利要求1所述的基于复合组件的请求处理方法,其特征在于,还包括:
当页面中的组件遍历完毕后判断生命周期的阶段是否运行完毕,若是,则返回执行结果,若否,则返回遍历页面中的组件的步骤。
6.一种基于复合组件的请求处理系统,其特征在于,至少包括:
接收模块,用于接收页面请求;
遍历模块,用于遍历页面中的组件;
判断模块,用于判断页面中的组件是否为复合组件,若是,则通知所述遍历模块;
所述遍历模块还用于遍历所述复合组件中的子组件;
处理模块,用于将子组件的属性值与复合组件的属性值相关联得到命名空间值,并获取与子组件所处生命周期阶段对应的调用方法;
执行模块,用于根据所述页面请求以及命名空间值执行调用方法。
7.根据权利要求6所述的基于复合组件的请求处理系统,其特征在于,所述处理模块包括:
获取单元,用于获取复合组件的属性值、子组件的属性值以及与子组件生命周期阶段对应的调用方法;
属性值设置单元,用于将复合组件的属性值以及子组件的属性值设置于请求使用域中,并将所述复合组件的属性值以及子组件的属性值相关联得到命名空间值。
8.根据权利要求6所述的基于复合组件的请求处理方法,其特征在于,所述执行模块还用于根据所述子组件的命名空间值返回调用方法的执行结果。
9.根据权利要求7所述的基于复合组件的请求处理方法,其特征在于,当复合组件中的子组件遍历完毕时,所述属性值设置单元还用于删除所述请求作用域中复合组件的属性值。
10.根据权利要求6所述的基于复合组件的请求处理方法,其特征在于,当页面中的组件遍历完毕后,所述判断模块判断生命周期的阶段是否运行完毕,若是,则返回执行结果,若否,则继续遍历页面中的组件。
CN201110121395.7A 2011-05-11 2011-05-11 基于复合组件的请求处理方法及系统 Active CN102779032B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110121395.7A CN102779032B (zh) 2011-05-11 2011-05-11 基于复合组件的请求处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110121395.7A CN102779032B (zh) 2011-05-11 2011-05-11 基于复合组件的请求处理方法及系统

Publications (2)

Publication Number Publication Date
CN102779032A true CN102779032A (zh) 2012-11-14
CN102779032B CN102779032B (zh) 2016-02-03

Family

ID=47123954

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110121395.7A Active CN102779032B (zh) 2011-05-11 2011-05-11 基于复合组件的请求处理方法及系统

Country Status (1)

Country Link
CN (1) CN102779032B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106681770A (zh) * 2016-12-29 2017-05-17 金蝶软件(中国)有限公司 一种复合组件中子组件属性的动态修改方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1609794A (zh) * 2003-10-24 2005-04-27 微软公司 用于计算机平台的编程接口
US20060036570A1 (en) * 2004-08-03 2006-02-16 Softricity, Inc. System and method for controlling inter-application association through contextual policy control
CN101689181A (zh) * 2007-06-29 2010-03-31 微软公司 对命名空间灵活地区分优先级

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1609794A (zh) * 2003-10-24 2005-04-27 微软公司 用于计算机平台的编程接口
US20060036570A1 (en) * 2004-08-03 2006-02-16 Softricity, Inc. System and method for controlling inter-application association through contextual policy control
CN101689181A (zh) * 2007-06-29 2010-03-31 微软公司 对命名空间灵活地区分优先级

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
陈刚: "《C++高级进阶教程》", 31 October 2008, article "关于名字空间", pages: 40-42 *
龚玲等: "3.2 URI和XML命名空间", 《HTTP://BOOK.51CTO.COM/ART/200911/164394.HTM》, 23 November 2009 (2009-11-23), pages 1 - 5 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106681770A (zh) * 2016-12-29 2017-05-17 金蝶软件(中国)有限公司 一种复合组件中子组件属性的动态修改方法及装置
CN106681770B (zh) * 2016-12-29 2020-10-13 金蝶软件(中国)有限公司 一种复合组件中子组件属性的动态修改方法及装置

Also Published As

Publication number Publication date
CN102779032B (zh) 2016-02-03

Similar Documents

Publication Publication Date Title
CN103475687B (zh) 用于下载网站数据的分布式方法和系统
CN102939583B (zh) 创建任务会话
CN102591954B (zh) 一种浏览器用数据加载方法及装置
CN102789382B (zh) 用于表单生成和运行的系统及方法
CN102194003A (zh) 一种网页弹窗方法及装置
CN101071375A (zh) 一种界面开发系统及组合控件的方法
CN105068815A (zh) 页面编辑器交互装置和方法
CN103092866B (zh) 数据监控方法及监控装置
CN101887367A (zh) 一种多级并行化编程方法
CN104809068A (zh) 一种基于selenium的web自动化测试框架构建方法
CN102467488A (zh) 一种文字处理文档异步加载的方法
CN103064717A (zh) 一种集群系统并行安装软件的装置和方法
CN107122175A (zh) 界面生成方法及装置
CN102932694A (zh) 智能网络电视界面显示方法和装置
CN103942050A (zh) 一种Android平台应用动画实现方法及系统
CN104573110B (zh) 一种浏览器中图形的动态展示方法及装置
CN103870280B (zh) 基于flex与jsp的网页无缝结合处理方法
CN102779032A (zh) 基于复合组件的请求处理方法及系统
CN106484435A (zh) 一种基于Flex的集成化软件研发管理系统
CN103257855B (zh) 一种基于mvc的处理系统、处理方法及在美容软件中的应用
Shaer et al. User interface description languages for next generation user interfaces
CN103514203A (zh) 以阅读模式浏览网页的方法及系统
CN102446252A (zh) 一种隔离文件的展示方法和装置
CN102982158A (zh) 加载广告图片的自动更新方法
CN103077016B (zh) 一种活动对象创建方法、装置及浏览器

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
C56 Change in the name or address of the patentee
CP03 Change of name, title or address

Address after: South South technology twelve road 518000 in Guangdong province Shenzhen City Guangdong streets Nanshan District high tech Industrial Park, No. 2, Kingdee Software Park building A floor 2 South Block

Patentee after: Shenzhen Kingdee middleware Limited by Share Ltd.

Address before: 518057 Guangdong City, Nanshan District province high tech Zone in the middle of the industrial zone of the sparrow tower M-6 building, floor 1, area 3, second, 4

Patentee before: Shenzhen Kingdee Middleware Co., Ltd.

CP01 Change in the name or title of a patent holder

Address after: South South technology twelve road 518000 in Guangdong province Shenzhen City Guangdong streets Nanshan District high tech Industrial Park, No. 2, Kingdee Software Park building A floor 2 South Block

Patentee after: Shenzhen Kingdee tianyanyun computing Co., Ltd.

Address before: South South technology twelve road 518000 in Guangdong province Shenzhen City Guangdong streets Nanshan District high tech Industrial Park, No. 2, Kingdee Software Park building A floor 2 South Block

Patentee before: Shenzhen Kingdee middleware Limited by Share Ltd.

CP01 Change in the name or title of a patent holder