CN104657164B - 软件升级处理方法和装置 - Google Patents

软件升级处理方法和装置 Download PDF

Info

Publication number
CN104657164B
CN104657164B CN201310596187.1A CN201310596187A CN104657164B CN 104657164 B CN104657164 B CN 104657164B CN 201310596187 A CN201310596187 A CN 201310596187A CN 104657164 B CN104657164 B CN 104657164B
Authority
CN
China
Prior art keywords
functional module
user
version number
module
call instruction
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.)
Expired - Fee Related
Application number
CN201310596187.1A
Other languages
English (en)
Other versions
CN104657164A (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.)
Peking University Founder Group Co Ltd
Beijing Founder Electronics Co Ltd
Original Assignee
Peking University Founder Group Co Ltd
Beijing Founder Electronics 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 Peking University Founder Group Co Ltd, Beijing Founder Electronics Co Ltd filed Critical Peking University Founder Group Co Ltd
Priority to CN201310596187.1A priority Critical patent/CN104657164B/zh
Publication of CN104657164A publication Critical patent/CN104657164A/zh
Application granted granted Critical
Publication of CN104657164B publication Critical patent/CN104657164B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提供一种软件升级处理方法和装置,该方法包括:接收用户根据待处理操作发送的功能模块调用命令,所述调用命令中包括用户标识信息、功能模块标识信息和功能模块当前版本号;确定与所述功能模块标识信息对应的存储索引表,所述存储索引表中存储有功能模块的版本号和与所述版本号对应的具有使用权限的用户标识;根据所述存储索引表确定与所述调用命令对应的最新版本号;返回与所述最新版本号对应的最新功能模块,以使所述用户调用所述最新功能模块对所述待处理操作进行处理。通过功能模块划分以及使用权限配置,使得软件开发商无需对软件进行整体升级,仅需要针对用户需求进行相应功能模块的升级,大大提高了升级处理效率。

Description

软件升级处理方法和装置
技术领域
本发明属于计算机技术领域,具体是涉及一种软件升级处理方法和装置。
背景技术
一般而言,软件使用者在使用软件进行业务处理的过程中,随着软件功能的不断完善、改进,都会涉及到软件的升级、更新。现有的软件升级更新方式,大多都是软件开发者占据主动地位,即软件开发者不断改善其开发的软件的性能,将升级后的安装包推送给用户,以供用户决定是否进行软件的升级更新。
上述软件开发者推送升级后的软件安装包的方式,一般适用于一些被用户广泛使用的软件,比如QQ、微信等,一般不会涉及用户的个性化需求。而在数字出版行业,由于不同出版社具有不同的出版风格,在保证基本出版要求的基础上,还会有各自独特的个性化需求,这使得数字出版软件开发商需要根据用户的需求提供个性化功能或对某些功能进行相应改进。
在上述需求情况下,如果仍采用现有的软件整体升级的方式,开发者需要根据用户需求在整个软件程序代码中定位修改位置,增加了升级处理难度且效率较低,而且也会严重影响其他用户的出版作业,缺乏针对性。
发明内容
针对上述存在的问题,本发明提供一种软件升级处理方法和装置,以克服现有技术中软件整体升级导致的处理效率低、缺乏针对性的缺陷。
本发明提供了一种软件升级处理方法,包括:
接收用户根据待处理操作发送的功能模块调用命令,所述调用命令中包括用户标识信息、功能模块标识信息和功能模块当前版本号;
确定与所述功能模块标识信息对应的存储索引表,所述存储索引表中存储有功能模块的版本号和与所述版本号对应的具有使用权限的用户标识;
根据所述存储索引表确定与所述调用命令对应的最新版本号;
返回与所述最新版本号对应的最新功能模块,以使所述用户调用所述最新功能模块对所述待处理操作进行处理。
本发明提供了一种软件升级处理装置,包括:
接收模块,用于接收用户根据待处理操作发送的功能模块调用命令,所述调用命令中包括用户标识信息、功能模块标识信息和功能模块当前版本号;
第一确定模块,用于确定与所述功能模块标识信息对应的存储索引表,所述存储索引表中存储有功能模块的版本号和与所述版本号对应的具有使用权限的用户标识;
第二确定模块,用于根据所述存储索引表确定与所述调用命令对应的最新版本号;
处理模块,用于返回与所述最新版本号对应的最新功能模块,以使所述用户调用所述最新功能模块对所述待处理操作进行处理。
本发明提供的软件升级处理方法和装置,对软件按功能进行功能模块划分,在根据用户需求对相应的功能模块进行升级、改进后,为升级后的功能模块分配使用权限,通过功能模块划分以及使用权限配置,使得软件开发商无需对软件进行整体升级,仅需要针对用户需求进行相应功能模块的升级,不但大大提高了升级处理效率,而且为用户提供了个性化服务;同时,由于为每个功能模块设置了使用权限,使得能够针对不同的用户进行功能模块的独立升级处理,不会影响其他用户的正常使用。
附图说明
图1为本发明软件升级处理方法实施例一的流程图;
图2为本发明软件升级处理方法实施例二的流程图;
图3为本发明软件升级处理装置实施例一的示意图;
图4为本发明软件升级处理装置实施例二的示意图。
具体实施方式
图1为本发明软件升级处理方法实施例一的流程图,如图1所示,所述方法包括:
步骤101、接收用户根据待处理操作发送的功能模块调用命令,所述调用命令中包括用户标识信息、功能模块标识信息和功能模块当前版本号;
本实施例所述的方法尤其适用于可以为不同用户提供个性化服务的软件开发商在对软件进行升级的情况,比如在数字出版业中,不同的出版社具有不同的出版风格,开发商需为用户,即出版社提供个性化服务以满足不同用户的需求。
为了实现根据不同用户的需求对软件进行升级处理且不会影响其他用户的正常使用,本实施例中,预先将软件按照功能类型进行功能模块的划分,比如将出版软件划分为编辑、删除、打印、美图等不同的功能模块。另外,由于不同用户的需求不同,本实施例中,在对软件进行模块化划分之后还需为各功能模块设置使用权限,用以表征不同用户的需求不同。举例来说,实际应用中,很有可能一部分用户使用开发商原始开发出的软件即可满足其需求,此时,开发商只需将原始开发的包含各个功能模块的软件提供给该用户使用即可,相应地,该用户具有使用该各个功能模块的权限;如果某一用户不需要使用某个功能模块,则相应的,该用户具有使用除该模块之外其他功能模块的权限;另外,还有可能某用户虽然需要使用某种功能模块的功能,但是需要在现有该功能模块的基础上进行进一步的修改或添加,此时,开发商需针对性的进行修改,并将修改后的功能模块的使用权限设置为该用户使用。
本实施例提供的所述方法可以由一处理装置进行处理,该处理装置可以集成设置在开发商的管理平台中。具体地,当用户在进行出版业务处理需要进行某个处理操作时,比如需要对图片进行编辑,此时,用户向处理装置发送一调用编辑功能模块的调用命令,该调用命令中包括用户标识信息、功能模块标识信息和功能模块当前版本号。其中,该用户标识信息例如是出版社的名称,功能模块标识信息例如可以是以编辑、美图、打印等功能类型为标识,功能模块当前版本号即为当前开发商提供给用户使用的出版软件中该功能模块的版本号。功能模块的版本号可以从0开始针对不同的用户顺次编号。
步骤102、确定与所述功能模块标识信息对应的存储索引表,所述存储索引表中存储有功能模块的版本号和与所述版本号对应的具有使用权限的用户标识;
步骤103、根据所述存储索引表确定与所述调用命令对应的最新版本号;
步骤104、返回与所述最新版本号对应的最新功能模块,以使所述用户调用所述最新功能模块对所述待处理操作进行处理。
本实施例中,开发商在初始完成对软件的功能模块划分后,会针对每个功能模块生成一存储索引表,该存储索引表中存储有各个功能模块的标识信息、版本号以及具有使用权限的用户标识。如果之后根据用户需求对某功能模块进行升级后,还将该功能模块升级后的版本号以及具有使用权限的用户标识信息填入该存储索引表与功能模块标识信息对应的表项中。
因此,当处理装置在接收到用户发送的功能模块调用命令后,首先根据功能模块标识信息确定与该功能模块对应的存储索引表,进而根据该存储索引表中的版本号和具有使用权限的用户标识获取该用户可以使用的最新功能模块的版本号,并将对应的最新版本的功能模块返回,以供用户调用完成相应的处理操作。值得说明的是,本实施例中,开发商可以选择针对某个用户的某个功能模块,仅保留其最新版本功能模块的相关信息以及最新版本的功能模块,而删除其他旧版本的功能模块,也可以选择保留旧版本的功能模块。若选择保留,则开发商存储针对该功能模块的所有版本,此时,处理装置需要在存储索引表中选择确定最新版本号,而如果不保留,则开发商仅存储该功能模块的最新版本,此时,处理装置仅需从与该功能模块标识信息对应的存储索引表中直接获得最新版本的功能模块即可,无需确定。值得注意的是,之所以开发商可以保留旧版本的功能模块,是因为虽然某一用户不在需要使用该版本的该功能模块,但是很可能其他用户后续提出了该功能模块的功能需求,此时,开发商仅需为该其他用户分配使用该旧版本功能模块的权限即可,无需进行再次升级开发,节省时间。
本实施例中,对软件按功能进行功能模块划分,在根据用户需求对相应的功能模块进行升级、改进后,为升级后的功能模块分配使用权限,通过功能模块划分以及使用权限配置,使得软件开发商无需对软件进行整体升级,仅需要针对用户需求进行相应功能模块的升级,不但大大提高了升级处理效率,而且为用户提供了个性化服务;同时,由于为每个功能模块设置了使用权限,使得能够针对不同的用户进行功能模块的独立升级处理,不会影响其他用户的正常使用。
图2为本发明软件升级处理方法实施例二的流程图,如图2所示,该方法包括:
步骤201、接收用户通过在用户界面上点击与待处理操作对应的功能模块按钮发送的功能模块调用命令;
本实施例中,用户在使用该出版软件进行出版业务处理时,首先打开该软件的用户界面,该用户界面中包含有开发商提供给该用户使用的所有功能模块的按钮,当用户需要使用某个功能模块进行相应处理操作时,点击相应按钮即可调用与该按钮对应的功能模块完成相关操作处理。当处理装置接收到用户通过点击功能模块按钮发送的功能模块调用命令后,即可从该命令中提取获得该命令中包含的用户标识信息、功能模块标识信息和功能模块当前版本号。
步骤202、确定与所述功能模块标识信息对应的存储索引表,所述存储索引表中存储有功能模块的版本号和与所述版本号对应的具有使用权限的用户标识以及与所述版本号对应的链接地址;
步骤203、获取与所述用户标识信息对应的版本号集合,所述版本号集合中的各版本号分别对应的具有使用权限的用户标识都含有所述用户标识信息;
步骤204、确定所述版本号集合中的大于所述当前版本号的最高版本号为与所述调用命令对应的最新版本号。
具体地,处理装置在根据功能模块标识信息确定出对应的存储索引表后,首先获取与所述用户标识信息对应的版本号集合,其中,该版本号集合中的各版本号分别对应的具有使用权限的用户标识中都含有所述用户标识信息,即所述版本号集合为所述用户可以使用的该功能模块的版本号集合。进而,在该版本号集合中确定大于述当前版本号的最高版本号为与所述调用命令对应的最新版本号。
步骤205、建立最新版本号对应的链接地址与所述功能模块按钮的关联关系,并删除所述功能模块按钮与所述当前版本号对应的链接地址的关联关系,以使在用户点击所述功能模块按钮后,调用所述最新功能模块对所述待处理操作进行处理。
本实施例中,所述存储索引表中还存储有与所述版本号对应的链接地址,当处理装置确定出最新版本号之后获取对应的链接地址,将用户界面上的该功能模块按钮与当前使用的版本的功能模块之间的关联关系修改为与最新版本号的功能模块的关联关系,并删除与当前版本号功能模块之间的关联关系,从而使得用户可以调用最新版本的功能模块来完成相应的操作处理。另外,通过这种方式,无需修改用户界面中的各功能模块按钮,降低了开发复杂度。
本实施例中,通过对软件进行功能模块划分,使得开发商对软件可以以功能模块为单位进行升级和管理,大大提高了升级处理效率;而且,由于各功能模块相对独立,通过为各功能模块配置使用权限,在进行功能模块升级时不会对其他用户的正常使用造成不利影响;通过改变用户界面功能模块按钮与对应的功能模块间的关联关系,无需对用户界面进行修改,简化了升级处理的复杂度。
图3为本发明软件升级处理装置实施例一的示意图,如图3所示,该装置包括:
接收模块11,用于接收用户根据待处理操作发送的功能模块调用命令,所述调用命令中包括用户标识信息、功能模块标识信息和功能模块当前版本号;
第一确定模块12,用于确定与所述功能模块标识信息对应的存储索引表,所述存储索引表中存储有功能模块的版本号和与所述版本号对应的具有使用权限的用户标识;
第二确定模块13,用于根据所述存储索引表确定与所述调用命令对应的最新版本号;
处理模块14,用于返回与所述最新版本号对应的最新功能模块,以使所述用户调用所述最新功能模块对所述待处理操作进行处理。
本实施例的装置可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图4为本发明软件升级处理装置实施例二的示意图,本实施例的装置在图3所示实施例的基础上,所述第二确定模块13,包括:
获取单元131,用于获取与所述用户标识信息对应的版本号集合,所述版本号集合中的各版本号分别对应的具有使用权限的用户标识中都含有所述用户标识信息;
确定单元132,用于确定所述版本号集合中的大于所述当前版本号的最高版本号为与所述调用命令对应的最新版本号。
进一步地,所述接收模块11具体用于:
接收用户通过在用户界面上点击与待处理操作对应的功能模块按钮发送的功能模块调用命令。
进一步地,所述存储索引表中还存储有与所述版本号对应的链接地址;
所述处理模块14具体用于:
建立最新版本号对应的链接地址与所述功能模块按钮的关联关系,并删除所述功能模块按钮与所述当前版本号对应的链接地址的关联关系,以使在用户点击所述功能模块按钮后,调用所述最新功能模块对所述待处理操作进行处理。
本实施例的装置可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (6)

1.一种软件升级处理方法,其特征在于,包括:
接收用户根据待处理操作发送的功能模块调用命令,所述调用命令中包括用户标识信息、功能模块标识信息和功能模块当前版本号;
确定与所述功能模块标识信息对应的存储索引表,所述存储索引表中存储有功能模块的版本号和与所述版本号对应的具有使用权限的用户标识;
根据所述存储索引表确定与所述调用命令对应的最新版本号;
返回与所述最新版本号对应的最新功能模块,以使所述用户调用所述最新功能模块对所述待处理操作进行处理;
所述根据所述存储索引表确定与所述调用命令对应的最新版本号,包括:
获取与所述用户标识信息对应的版本号集合,所述版本号集合中的各版本号分别对应的具有使用权限的用户标识中都含有所述用户标识信息;
确定所述版本号集合中的大于所述当前版本号的最高版本号为与所述调用命令对应的最新版本号。
2.根据权利要求1所述的方法,其特征在于,所述接收用户根据待处理操作发送的功能模块调用命令,包括:
接收用户通过在用户界面上点击与待处理操作对应的功能模块按钮发送的功能模块调用命令。
3.根据权利要求2所述的方法,其特征在于,所述存储索引表中还存储有与所述版本号对应的链接地址;
所述返回与所述最新版本号对应的最新功能模块,以使所述用户调用所述最新功能模块对所述待处理操作进行处理,包括:
建立最新版本号对应的链接地址与所述功能模块按钮的关联关系,并删除所述功能模块按钮与所述当前版本号对应的链接地址的关联关系,以使在用户点击所述功能模块按钮后,调用所述最新功能模块对所述待处理操作进行处理。
4.一种软件升级处理装置,其特征在于,包括:
接收模块,用于接收用户根据待处理操作发送的功能模块调用命令,所述调用命令中包括用户标识信息、功能模块标识信息和功能模块当前版本号;
第一确定模块,用于确定与所述功能模块标识信息对应的存储索引表,所述存储索引表中存储有功能模块的版本号和与所述版本号对应的具有使用权限的用户标识;
第二确定模块,用于根据所述存储索引表确定与所述调用命令对应的最新版本号;
处理模块,用于返回与所述最新版本号对应的最新功能模块,以使所述用户调用所述最新功能模块对所述待处理操作进行处理;
所述第二确定模块,包括:
获取单元,用于获取与所述用户标识信息对应的版本号集合,所述版本号集合中的各版本号分别对应的具有使用权限的用户标识中都含有所述用户标识信息;
确定单元,用于确定所述版本号集合中的大于所述当前版本号的最高版本号为与所述调用命令对应的最新版本号。
5.根据权利要求4所述的装置,其特征在于,所述接收模块具体用于:
接收用户通过在用户界面上点击与待处理操作对应的功能模块按钮发送的功能模块调用命令。
6.根据权利要求5所述的装置,其特征在于,所述存储索引表中还存储有与所述版本号对应的链接地址;
所述处理模块具体用于:
建立最新版本号对应的链接地址与所述功能模块按钮的关联关系,并删除所述功能模块按钮与所述当前版本号对应的链接地址的关联关系,以使在用户点击所述功能模块按钮后,调用所述最新功能模块对所述待处理操作进行处理。
CN201310596187.1A 2013-11-21 2013-11-21 软件升级处理方法和装置 Expired - Fee Related CN104657164B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310596187.1A CN104657164B (zh) 2013-11-21 2013-11-21 软件升级处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310596187.1A CN104657164B (zh) 2013-11-21 2013-11-21 软件升级处理方法和装置

Publications (2)

Publication Number Publication Date
CN104657164A CN104657164A (zh) 2015-05-27
CN104657164B true CN104657164B (zh) 2017-11-14

Family

ID=53248347

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310596187.1A Expired - Fee Related CN104657164B (zh) 2013-11-21 2013-11-21 软件升级处理方法和装置

Country Status (1)

Country Link
CN (1) CN104657164B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893075A (zh) * 2015-12-28 2016-08-24 乐视网信息技术(北京)股份有限公司 应用程序的更新方法及装置
EP3402160B1 (en) * 2016-03-15 2020-04-29 Huawei Technologies Co., Ltd. Service processing method and apparatus
CN106919378A (zh) * 2016-08-24 2017-07-04 阿里巴巴集团控股有限公司 基于增量的应用更新和测试方法及系统、服务器及客户端
CN107957882A (zh) * 2016-10-13 2018-04-24 北京京东尚科信息技术有限公司 用于发送应用信息的方法和装置
CN108234414B (zh) * 2016-12-16 2021-08-10 北京京东振世信息技术有限公司 一种app应用的升级方法及装置
CN110187907A (zh) * 2019-05-23 2019-08-30 广州极飞科技有限公司 飞行器的固件升级方法、装置、系统和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101060441A (zh) * 2007-06-13 2007-10-24 华为技术有限公司 控制软件版本升级的方法、设备及系统
CN101699399A (zh) * 2009-11-03 2010-04-28 中兴通讯股份有限公司 一种软件更新的系统和方法
CN101719977A (zh) * 2009-11-17 2010-06-02 四川长虹电器股份有限公司 机顶盒功能模块升级的方法
CN102262544A (zh) * 2010-05-24 2011-11-30 腾讯科技(深圳)有限公司 软件升级的方法和装置
US8255409B2 (en) * 2009-02-27 2012-08-28 Red Hat, Inc. Systems and methods for generating a change log for files in a managed network
CN102789389A (zh) * 2012-08-01 2012-11-21 深圳市茁壮网络股份有限公司 一种插件版本检测及升级的方法、插件检测器

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101060441A (zh) * 2007-06-13 2007-10-24 华为技术有限公司 控制软件版本升级的方法、设备及系统
US8255409B2 (en) * 2009-02-27 2012-08-28 Red Hat, Inc. Systems and methods for generating a change log for files in a managed network
CN101699399A (zh) * 2009-11-03 2010-04-28 中兴通讯股份有限公司 一种软件更新的系统和方法
CN101719977A (zh) * 2009-11-17 2010-06-02 四川长虹电器股份有限公司 机顶盒功能模块升级的方法
CN102262544A (zh) * 2010-05-24 2011-11-30 腾讯科技(深圳)有限公司 软件升级的方法和装置
CN102789389A (zh) * 2012-08-01 2012-11-21 深圳市茁壮网络股份有限公司 一种插件版本检测及升级的方法、插件检测器

Also Published As

Publication number Publication date
CN104657164A (zh) 2015-05-27

Similar Documents

Publication Publication Date Title
CN104657164B (zh) 软件升级处理方法和装置
CN106067080B (zh) 提供可配置工作流能力
CN104123238A (zh) 数据存储方法及装置
CN108182075A (zh) 一种通过socket通信方式自动升级目标软件的程序
CN107577420A (zh) 文件处理方法和装置、服务器
CN108536745A (zh) 基于Shell的数据表提取方法、终端、设备及存储介质
CN103902562B (zh) 一种终端数据库升级方法及相关装置
CN109388478A (zh) 用于OpenStack环境中迁移虚拟机的方法和装置
CN103678696B (zh) 控制数据读取分离的方法及装置
CN109471843A (zh) 一种元数据缓存方法、系统及相关装置
CN109064241A (zh) 用于云服务的对维护成本敏感的记账
CN110347407A (zh) 一种获取内存占用量的方法、装置、计算机设备及介质
US20230306010A1 (en) Optimizing Storage System Performance Using Data Characteristics
CN109857723A (zh) 基于可扩容数据库集群的动态数据迁移方法及相关设备
CN109189384A (zh) 一种代码的复用方法及装置
CN104052626A (zh) 配置网元数据的方法、装置和系统
US20170115917A1 (en) Object storage power consumption optimization
CN109213453A (zh) 一种磁盘管理方法及相关装置
CN110209732A (zh) 关系型数据库到Hadoop数据库的数据同步方法和装置
CN106161516A (zh) 用于存储数据的方法、装置以及系统
CN104360899B (zh) 一种进程管理系统及管理方法
CN108243238A (zh) 一种性能数据的采集方法及装置
CN104915206A (zh) 一种基于文本解析的dsp上的属性和数据的管理方法
CN108595488B (zh) 数据迁移方法和装置
US9355104B1 (en) Intelligent pairing using a lookup database for snapshot based backups

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20171114

Termination date: 20191121

CF01 Termination of patent right due to non-payment of annual fee