应用模版更新方法、装置、存储介质及设备
文献发布时间:2024-04-18 20:01:23
技术领域
本申请涉及计算机技术领域,具体涉及一种应用模版更新方法、装置、存储介质及设备。
背景技术
在企业的日常事务管理中,企业员工会就工作事务发起相关审批请求,随着计算机技术的发展以及办公自动化(Office Automation,OA)应用的普及,目前已经能够利用人事助手应用的审批方式实现审批流程的自动化和智能化。
在相关技术中,经常需要对人事助手应用中的应用模版进行升级,以实现企业实务管理的优化,即通过新的应用模版直接替代旧的应用模版,然而,由于企业实务管理的个性化差异,上述升级方式过于死板,会导致企业实务管理的个性化设置被覆盖,使得应用模版更新效率较差。
发明内容
本申请实施例提供一种应用模版更新方法、装置、存储介质及设备,可以提升应用模版更新的效率。
为解决上述技术问题,本申请实施例提供以下技术方案:
一种应用模版更新方法,包括:
获取升级请求对应的应用模版列表;
确定所述应用模版列表中的更新应用模版以及待更新应用模版,并将所述更新应用模版与所述待更新应用模版的位置进行调换;
根据所述待更新应用模版中的第一控件与所述更新应用模版中的第二控件进行控件对比分析,确定相应的个性化控件;
获取所述待更新应用模版中的个性化流程;
将所述个性化控件和所述个性化流程更新至所述更新应用模版中,得到更新后的应用模版列表。
一种应用模版更新装置,包括:
第一获取单元,用于获取升级请求对应的应用模版列表;
调换单元,用于确定所述应用模版列表中的更新应用模版以及待更新应用模版,并将所述更新应用模版与所述待更新应用模版的位置进行调换;
比对分析单元,用于根据所述待更新应用模版中的第一控件与所述更新应用模版中的第二控件进行控件对比分析,确定相应的个性化控件;
第二获取单元,用于获取所述待更新应用模版中的个性化流程;
更新单元,用于将所述个性化控件和所述个性化流程更新至所述更新应用模版中,得到更新后的应用模版列表。
在一些实施方式中,所述调换单元,用于:
确定所述应用模版列表中的更新应用模版以及待更新应用模版;
将所述待更新应用模版停用;
标记所述待更新应用模版的第一位置以及标记所述更新应用模版的第二位置;
将所述第一位置上的待更新应用模版的内容与所述第二位置上的更新应用模版的内容进行互换,以将第一位置上的待更新应用模版更换为更新应用模版,以及将第二位置上的更新应用模版更换为待更新应用模版。
在一些实施方式中,所述装置,还包括调整单元,用于:
删除所述第二位置上的待更新应用模版的内容,并将所述第二位置调换到应用模版列表的最后一个位置上;
在所述待更新应用模版中添加跳转链接,所述跳转链接指向所述第一位置上的更新应用模版。
在一些实施例中,所述比对分析单元,包括:
获取子单元,用于获取所述待更新应用模版对应预设控件的第一序列化数据结构以及所述待更新应用模版中当前的第一控件的第二序列化数据结构;
第一确定子单元,用于当检测到所述第一序列化数据结构和所述第二序列化数据结构不同时,确定第一控件相对于预设控件的新增控件;
第二确定子单元,用于当检测到所述新增控件与所述更新应用模版中的第二控件不同时,将所述新增控件确定为个性化控件。
在一些实施例中,第一确定子单元,用于:
当检测到所述第一序列化数据结构和所述第二序列化数据结构不同时,遍历所述第一序列化数据结构,得到预设控件;
遍历所述第二序列化数据结构,得到第一控件;
取所述预设控件和第一控件的差集,得到相应的新增控件。
在一些实施例中,第一确定子单元,还用于:
当检测到所述第一序列化数据结构和所述第二序列化数据结构不同时,遍历所述第一序列化数据结构中的明细控件以及普通控件,得到预设控件;
遍历所述第二序列化数据结构中的明细控件以及普通控件,得到第一控件;
取所述预设控件和第一控件的差集,得到相应的新增控件。
在一些实施例中,所述第二确定子单元,用于:
获取所述更新应用模版中第二控件的第三序列化数据结构;
遍历所述第三序列化数据结构,得到第二控件;
当检测到所述第二控件中不存在所述新增控件时,将所述新增控件确定为个性化控件。
在一些实施例中,所述第二获取单元,用于:
获取所述待更新应用模版中当前的目标流程以及对应的第一预设流程;
当检测到所述目标流程与所述第一预设流程不同时,将所述目标流程确定为个性化流程。
在一些实施例中,所述更新单元,用于:
将所述个性化控件加入至所述更新应用模版中的第二控件的队尾;
将所述个性化流程替换至所述更新应用模版中的第二预设流程,得到更新后的应用模版列表。
在一些实施例中,所述升级请求至少携带企业标识、目标管理员标识以及操作授权参数,所述第一获取单元,用于:
获取升级请求,并根据所述企业标识、目标管理员标识以及操作授权参数进行权限验证;
当检测到权限验证通过时,对所述升级请求进行加锁,生成所述企业标识对应的分布式锁文件;
获取所述企业标识对应的应用模版列表。
在一些实施例中,所述装置,还包括备份单元,用于:
根据所述升级请求携带的企业标识,对所述应用模版列表和所述更新后的应用模版列表进行备份。
在一些实施例中,所述装置,还包括回滚单元,用于:
当检测到升级回滚请求时,获取升级回滚请求携带的企业标识以及回滚管理员标识;
根据所述企业标识确定相应的分布锁文件;
当所述分布锁文件指示的目标管理员标识与所述回滚管理员标识相同时,获取备份的所述应用模版列表,并将备份的所述应用模版列表替换所述更新后的应用模版列表。
在一些实施例中,所述装置,还包括发送单元,用于:
根据更新应用模版,生成相应的更新卡片;
其中,所述更新卡片至少包括按照时间排序的更新应用模版以及相应的功能联动项;
将所述更新卡片发送至所述企业标识关联的每个管理员标识对应的客户端。
一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行上述应用模版更新方法。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可以在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述应用模版更新方法。
一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在存储介质中。计算机设备的处理器从存储介质读取所述计算机指令,处理器执行所述计算机指令,使得实现上述应用模版更新方法。
本申请实施例通过获取升级请求对应的应用模版列表;确定应用模版列表中的更新应用模版以及待更新应用模版,并将更新应用模版与待更新应用模版的位置进行调换;根据待更新应用模版中的第一控件与更新应用模版中的第二控件进行控件对比分析,确定相应的个性化控件;获取待更新应用模版中的个性化流程;将个性化控件和个性化流程更新至更新应用模版中,得到更新后的应用模版列表。以此,在对待更新应用模版升级的基础上,还可以将个性化控件和个性化流程自动保留到新的更新应用模版中,相对于相关技术中通过新的应用模版直接替代旧的应用模版的方案而言,本申请实施例可以避免个性化设置丢失,提升了应用模版更新的效率。
本公开的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开而了解。本公开的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的应用模版更新系统的场景示意图。
图2是本申请实施例提供的应用模版更新方法的场景示意图。
图3为本申请实施例提供的应用模版更新方法的流程示意图。
图4本申请实施例提供的的应用模版列表的场景示意图。
图5本申请实施例提供的的人事助手应用的场景示意图。
图6本申请实施例提供的分布式锁服务的场景示意图。
图7本申请实施例提供的的应用模版存储详情的场景示意图。
图8本申请实施例提供的的应用模版流程存储详情的场景示意图。
图9本申请实施例提供的的应用模版流程的场景示意图。
图10为本申请实施例提供的应用模版更新方法的场景示意图。
图11为本申请实施例提供的应用模版更新方法的另一场景示意图。
图12为本申请实施例提供的应用模版更新方法的另一场景示意图。
图13为本申请实施例提供的应用模版更新方法的另一场景示意图。
图14为本申请实施例提供的应用模版更新方法的另一场景示意图。
图15为本申请实施例提供的应用模版更新方法的另一场景示意图。
图16为本申请实施例提供的应用模版更新方法的另一场景示意图。
图17为本申请实施例提供的应用模版更新方法的另一场景示意图。
图18为本申请实施例提供的个更新卡片的场景示意图。
图19为本申请实施例提供的个更新卡片的另一场景示意图。
图20为本申请实施例提供的应用模版更新方法的另一流程示意图。
图21为本申请实施例中提供的应用模版更新系统的时序示意图。
图22为本申请实施例中提供的应用模版更新系统的另一时序示意图。
图23是本申请实施例提供的应用模版更新装置的结构示意图。
图24是本申请实施例提供的终端的结构示意图。
图25是本申请实施例提供的服务器的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请的方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
可以理解的是,在本申请的具体实施方式中,涉及到企业标识以及管理员标识等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得对象许可或者同意,且相关数据的收集、使用和处理需要遵守相关法律法规和标准。
此外,当本申请实施例需要获取企业标识以及管理员标识等相关的数据时,会通过弹窗或者跳转到确认页面等方式获得企业标识以及管理员标识等相关的数据的单独许可或者单独同意,在明确获得企业标识以及管理员标识等相关的数据的单独许可或者单独同意之后,再获取用于使本申请实施例能够正常运行的必要的企业标识以及管理员标识等相关的数据。
需要说明的是,在说明书、权利要求书和上述附图所描述的一些流程中,包含了按照特定顺序出现的多个步骤,但应该清楚了解,这些步骤可以不按照其在本文中出现的顺序来执行或并行执行,步骤序号仅仅是用于区分开各个不同的步骤,序号本身不代表任何的执行顺序。此外,本文中的“第一”、“第二”或者“目标”等描述,是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
对本公开实施例进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释:
控件,控件是指对数据和方法的封装。控件可以有自己的属性和方法,其中属性是控件数据的简单访问者,方法则是控件的一些简单而可见的功能、控件创建过程包括设计、开发、调试(就是所谓的3Ds开发流程,即Design、Develop、Debug)工作,然后是控件的使用。
明细控件,明细控件可以理解为一个容器,里面还可以加文本、数字等各类子控件。
流程,可以为企业中的审批流程,包含具体的审批和抄送流程的指向。
Protobuf(Protocol Buffers,数据描述语言),能够将结构化数据序列化,可用于数据存储、通信协议等方面,在本申请实施例中用于将全部控件的结构化数据序列化,生成序列化数据结构(Protobuf结构),方便后续进行控件对比。
应用模版,为虚体,电脑软件制作出的根据需要预先认定好的文字、排版、格式,做成一个固定的样式,有了这个固定的样式,根据要求输入信息即可,这个固定的样式就叫应用模版,在申请实施例中,该应用模版为企业审批的一个固定的审批样式,例如入职、转正、调岗和离职的审批样式,每个审批样式均为一个应用模版,应用模版中包含相应的控件集以及流程,以实现相应的自动化办公功能。
目前,为了提升企业的自动化应用的效率,会设计相应的人事助手应用,该人事助手应用中包含多个应用模版,例如入职、转正、调岗和离职的应用模版,由于企业需求的不断变化,相应的应用模版也会不断的进行升级,即通过新的应用模版直接替代旧的应用模版,然而,由于企业实务管理的个性化差异,上述升级方式过于死板,会导致企业实务管理的个性化设置被覆盖,使得应用模版更新效率较差,且旧版本的应用模版在结构设计、功能联动上存在一定的缺陷。
本申请实施例为了解决上述问题,提出一种在对待更新应用模版升级的基础上,还可以将个性化控件和个性化流程自动保留到新的更新应用模版中的方法,可以提升应用模版更新的效率,降低企业处理成本,具体请继续参阅下述具体实施例。
请参阅图1,图1是本申请实施例提供的应用模版更新系统的场景示意图。它包括终端140、互联网130、网关120、服务器110等。
终端140包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。另外,它可以是单台设备,也可以是多台设备组成的集合。终端140可以以有线或无线的方式与互联网130进行通信,交换数据。
服务器110是指能对终端140提供某些服务的计算机系统。相对于普通终端140来说,服务器110在稳定性、安全性、性能等方面都要求更高。服务器110可以是网络平台中的一台高性能计算机、多台高性能计算机的集群、一台高性能计算机中划出的一部分(例如虚拟机)、多台高性能计算机中划出的一部分(例如虚拟机)的组合等。
网关120又称网间连接器、协议转换器。网关在传输层上实现网络互连,是一种充当转换作用的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。同时,网关也可以提供过滤和安全功能。终端140向服务器110发送的消息要通过网关120发送到相应的服务器110。服务器110向终端140发送的消息也要通过网关120发送到相应的终端140。
本公开实施例的应用模版更新方法可以在服务器110实现。
应用模版更新方法在服务器110实现的情况下,在服务器110获取升级请求对应的应用模版列表;确定该应用模版列表中的更新应用模版以及待更新应用模版,并将该更新应用模版与该待更新应用模版的位置进行调换;根据该待更新应用模版中的第一控件与该更新应用模版中的第二控件进行控件对比分析,确定相应的个性化控件;获取该待更新应用模版中的个性化流程;将该个性化控件和该个性化流程更新至该更新应用模版中,得到更新后的应用模版列表。
本公开实施例可以应用在多种场景下,如图2所示的应用模版更新方法的场景。
应用模版更新方法的场景:
应用模版更新方法的场景能够实现对待更新应用模版一键升级。
应用模版更新系统能够显示更新页面11,该更新页面上包含“立即升级”控件,对象可以通过点击该“立即升级”控件实现对待更新应用模版一键升级,生成升级请求发送至服务器,服务器获取升级请求对应的应用模版列表;确定该应用模版列表中的更新应用模版以及待更新应用模版,并将该更新应用模版与该待更新应用模版的位置进行调换;根据该待更新应用模版中的第一控件与该更新应用模版中的第二控件进行控件对比分析,确定相应的个性化控件;获取该待更新应用模版中的个性化流程;将该个性化控件和该个性化流程更新至该更新应用模版中,得到更新后的应用模版列表。
需要说明的是,图1所示的应用模版更新系统的场景示意图仅仅是一个示例,本申请实施例描述的应用模版更新系统以及场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着应用模版更新的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
在本实施例中,将从应用模版更新装置的角度进行描述,该应用模版更新装置具体可以集成在具备储存单元并安装有微处理器而具有运算能力的计算机设备中,计算机设备可以为服务器,在本实施例中以计算机设备为服务器进行说明。
请参阅图3,图3是本申请实施例提供的应用模版更新方法的流程示意图。该应用模版更新方法包括:
在步骤201中,获取升级请求对应的应用模版列表。
其中,该升级请求为管理员对象通过客户端发送的,例如,管理员对象通过客户端点击应用模版的“立即升级”控件,客户端会生成升级请求,并将该升级请求发送至服务器。
需要说明的是,每个企业有专属的企业标识(corpid),每个企业标识有独立的应用模版列表(即每个企业有独立的应用模版列表),该应用模版列表中包含有多个按照顺序排列的应用模版,一个应用模版对应一个功能的审批流程,例如,请一并参阅图4所示,应用模版列表可以包含有N个应用模版,每个应用模版中包含应用模版标识、应用模版名称和应用模版状态,该应用模版标识用于区分应用模版,该应用模版名称即对应一个名称,例如,入职、转正、调岗和离职的应用模版名称,该应用模版状态指示该应用模版是否启动,包含启动和停用两种状态。
为了更好的说明本申请实施例,请一并参阅图5所示,图5所示的为终端140上显示的旧版本人事助手应用界面12,包含多个按照顺序排布的应用模版,例如,入职、转正、调岗和离职的应用模版121,这些应用模版的排布与服务器中存储的应用模版列表中存储的应用模版的排序顺序一样,即可以通过调整应用模版列表中的应用模版的顺序来实现对人事助手应用界面上显示的应用模版进行相应的顺序调整。该应用模版列表中的应用模版可以为开发人员相应设置的,相应的,开发人员也可以随时对该应用模版列表中的应用模版进行更新。
相应的,每个管理员对象隶属于相应的企业,因此,该升级请求还会携带相应的企业标识,使得服务器可以根据该升级请求携带的企业标识快速查找到对应的应用模版列表。
在一些实施方式中,该升级请求至少携带企业标识、目标管理员标识(admin_id)以及操作授权参数(operation_auth),获取升级请求对应的应用模版列表,可以包括:
(1)获取升级请求,并根据该企业标识、目标管理员标识以及操作授权参数进行权限验证;
(2)当检测到权限验证通过时,对该升级请求进行加锁,生成该企业标识对应的分布式锁文件;
(3)获取该企业标识对应的应用模版列表。
其中,该升级请求至少携带企业标识、目标管理员标识和操作授权参数,该企业标识用于标识对应哪个企业的人事助手应用需要进行更新,由于企业的人事助手应用的更新对于企业来说是比较重要的事项,因此,需要具有一定权限的特定管理员才可以实现,因此,还需要获取目标管理员标识,以便后续对发起升级的目标管理员进行验证,该操作授权参数可以为输入的密码,该密码可以为字符串,相应的,服务器中会存储对企业升级的预设密码,只有输入的密码和预设密码相同时,才能启动应用模版升级。
以此,可以获取客户端发送的升级请求,并根据升级请求携带的企业标识、目标管理员标识以及操作授权参数进行权限验证,验证在该企业标识的企业下,该目标管理员标识对应的管理员是否具有升级权限以及操作授权参数是否输入正确,在验证到目标管理员标识对应的管理员具有升级权限以及操作授权参数输入正确时,判定为权限验证通过,即响应该升级请求。
在本申请实施例中,为了预防同一企业的多个管理员在同一时间进行升级,导致数据的错乱,还需要对权限验证通过的升级请求进行加锁,该加锁可以通过分布式锁服务实现,即通过分布式锁对升级请求进行加锁,锁定该企业的升级功能,并生成该企业标识对应的分布式锁文件,该分布式锁文件以该企业的企业标识进行命名,通过该分布式锁文件实现对企业的升级功能锁定,例如,请一并参阅图6所示,升级请求在响应后,会调用分布式锁服务进行加锁,生成以企业标识命名的分布式锁文件,以实现对企业标识对应的企业的升级功能的锁定。
相应的,在实现对企业的升级功能锁定之后,可以根据升级请求携带的企业标识获取到对应的应用模版列表,以实现后续的更新。
在步骤202中,确定应用模版列表中的更新应用模版以及待更新应用模版,并将更新应用模版与待更新应用模版的位置进行调换。
其中,该更新应用模版即为需要进行升级的应用模版,该升级的内容包括但不限于应用模版的名称变更、应用模版中的控件的变更以及应用模版中的流程的变更,相应的,该更新应用模版可以为开发人员设置好并放置在应用模版列表中的,每个更新应用模版对应需要更新的待更新应用模版,在一实施方式中,该更新应用模版中还可以包括预设类型字段,该预设类型字段可以为待更新应用模版的应用模版名称,因此,可以根据该更新应用模版的预设类型字段快速找到对应的待更新应用模版。例如,请继续参阅图5所示,旧版本人事助手应用界面12,包含录用申请、转正申请、调岗申请和离职申请的更新应用模版122,其对应待更新应用模版为入职、转正、调岗和离职的待更新应用模版121。
进一步,由于该应用模版列表中的多个应用模版为按照顺序排序的,因此,需要实现将新的更新应用模版替代旧的待更新应用模版,因为该应用模版列表为队列存储形式,因此更新应用模版会排序在应用模版列表的队尾,所以需要将更新应用模版与待更新应用模版的位置进行调换,使得更新应用模版取代待更新应用模版的位置,以实现展现形式上的初步更新,进而实现在新的人事助手应用上更新应用模版的位置显示在旧的人事助手应用上的待更新应用模版的位置上,实现更新应用模版显示位置的自动更新,例如,请继续参阅图5所示,在新版本人事助手应用界面13,录用申请、转正申请、调岗申请和离职申请的更新应用模版122,与待更新应用模版为入职、转正、调岗和离职的待更新应用模版121进行位置调换,实现展现形式上的初步更新。
在一些实施方式中,该将该更新应用模版与该待更新应用模版的位置进行调换,可以包括:
(1)将该待更新应用模版停用;
(2)标记该待更新应用模版的第一位置以及标记该更新应用模版的第二位置;
(3)将该第一位置上的待更新应用模版的内容与该第二位置上的更新应用模版的内容进行互换,以将第一位置上的待更新应用模版更换为更新应用模版,以及将第二位置上的更新应用模版更换为待更新应用模版。
首先,可以将旧应用模版(即待更新应用模版)停用,具体可以将待更新应用模版的模版状态的标识位设置为0,在停用待更新应用模版后,需要进行位置的变动,在实际的存储中,由于应用模版的存储在指针位置上,因此,无法直接将两者的位置直接进行调换。
在本申请实施例中,通过swap(交换)算法实现两者的调换,具体为标记待更新应用模版的第一位置(old_pos),并标记更新应用模版的第二位置(new_pos),基于此,将第一位置上的待更新应用模版的内容与第二位置上的更新应用模版的内容进行交换,即实现将第一位置上存储的待更新应用模版更换为更新引用模版,将第二位置上的更新应用模版更换为待更新应用模版,实现第一位置和第二位置的存储指针不变,但是上面存储的内容变更。
在一些实施方式中,该将该第一位置上的待更新应用模版的内容与该第二位置上的更新应用模版的内容进行互换之后,还可以包括:
(4)删除该第二位置上的待更新应用模版的内容,并将该第二位置调换到应用模版列表的最后一个位置上;
(5)在该待更新应用模版中添加跳转链接,该跳转链接指向该第一位置上的更新应用模版。
其中,为了避免第二位置上的待更新应用模版的内容的存在对更新后的人事助手应用的使用造成干扰,即避免旧的应用模版的功能还能使用对企业使用者造成影响,还需要删除第二位置上的待更新应用模版的内容,即将旧的应用模版的功能停用,并将该第二位置调换到应用模版列表的最后一个位置上,避免影响企业使用者的使用。
进一步的,为了防止停用的待更新应用模版的停用给企业使用者带来干扰,在本申请实施例中,还可以在该待更新应用模版中添加跳转链接,该跳转链接指向第一位置上对应的更新应用模版,以实现企业使用者后续在更新后的人事助手应用上点击待更新应用模版可以跳转开启第一位置上的更新应用模版。
例如,请继续参阅图5中,在新版本人事助手应用界面13,企业使用者点击已经停用入职对应的待更新应用模版,会跳转开启录用申请对应的更新应用模版,点击已经停用转正对应的待更新应用模版,会跳转开启转正申请对应的更新应用模版,点击已经停用调岗对应的待更新应用模版,会跳转开启调岗申请对应的更新应用模版,点击已经停用离职对应的待更新应用模版,会跳转开启离职申请对应的更新应用模版。
在步骤203中,根据待更新应用模版中的第一控件与更新应用模版中的第二控件进行控件对比分析,确定相应的个性化控件。
其中,该待更新应用模版中包含相应的控件集,即第一控件,该第一控件可以为一个或者多个控件,该由于每个版本的人事助手应用的应用模版中,会存在由开发人员配置的预设控件,即开发人员设定的控件,因此,第一控件包括全部的预设控件,而在实际的人事助手应用的使用中,企业的管理员为了实现企业个性化管理,可以配置相应的个性化控件,因此,该第一控件中还可以包括个性化控件。相应的,该更新应用模版中也包含相应的控件集,即第二控件,该第二控件可以为一个或多个控件,由于更新应用模版还未开始使用,暂时该更新应用模版中只包含由开发人员配置新的预设控件,即开发人员设定的新的控件,因此第二控件为新的预设控件。
目前的应用模版更新方案,由于无法自动确定出个性化控件,更新时,直接通过新的应用模版直接替代旧的应用模版,导致旧的应用模版中的个性化控件全部丢失,企业的管理者又需要在新的应用模版的基础上重新配置个性化控件,过程繁琐,导致应用模版更新效率较差。
在本申请实施例中,可以从待更新应用模版中取出第一控件以及从更新应用模版中取出第二控件,为了更好的说明本申请实施例,请一并参阅图7所示,图7为应用模版存储详情,可以从第5条即应用模版容器中,取出对应应用模版的控件,基于此,可以从待更新应用模版的应用模版容器中取出第一控件以及从更新应用模版的应用模版容器中取出第二控件。
进一步的,可以从第一控件中确定对象新增的新增控件,并且将该新增控件与第二控件进行控件比对,当检测到新增控件也不存在于第二控件中时,将其确定为个性化控件,以便后续可以将其添加到更新应用模版中。
在一些实施方式中,根据该待更新应用模版中的第一控件与该更新应用模版中的第二控件进行控件对比分析,确定相应的个性化控件,包括:
(1)获取该待更新应用模版对应预设控件的第一序列化数据结构以及该待更新应用模版中当前的第一控件的第二序列化数据结构;
(2)当检测到该第一序列化数据结构和该第二序列化数据结构不同时,确定第一控件相对于预设控件的新增控件;
(3)当检测到该新增控件与该更新应用模版中的第二控件不同时,将该新增控件确定为个性化控件。
由于应用模版升级的过程中,无法确定待更新应用模版中的控件相对于预设控件是否发生变动,即无法确定企业管理者是否设置过个性化控件,所以导致无法对个性化控件进行提取。
本申请实施例为了解决上述问题,引入Protobuf的序列化对比算法,用于对比待更新应用模版中的控件是否发生过变动,具体为,获取待更新应用模版对应预设控件的第一序列化数据结构以及获取待更新应用模版中当前的第一控件的第二序列化数据结构,相应的,如果待更新应用模版中的控件未发生变动,那么该第一序列化数据结构和第二序列化数据结构相同,相反的,如果待更新应用模版中的控件发生变动,即企业的管理员添加了新增控件,那么该第一序列化数据结构和第二序列化数据结构不同,因此,当检测到第一序列化数据结构和第二序列化数据结构不同时,根据两者不同的序列化数据结构分析得到第一控件相对于预设控件的新增控件。
进一步的,如果新的更新应用模版中的第二控件包含了该新增控件,那么就不需要将该新增控件再次添加到更新应用模版中,避免重复,因此,还需要将新增控件与更新应用模版中的第二控件进行比对,当检测到新增控件与更新应用模版中的第二控件相同时,说明更新应用模版中的第二控件已经包含了该新增控件,直接将该新增控件删除,相反的,当检测到新增控件与更新应用模版中的第二控件不同时,说明更新应用模版中的第二控件也不包含该新增控件,那么可以将该新增控件确定为个性化控件,以便后续增加到更新应用模版中的第二控件中,实现个性化控件自动迁移。
在一些实施方式中,确定第一控件相对于预设控件的新增控件,包括:
(2.1)遍历该第一序列化数据结构,得到预设控件;
(2.2)遍历该第二序列化数据结构,得到第一控件;
(2.3)取该预设控件和第一控件的差集,得到相应的新增控件。
其中,由于第一序列化数据结构为预设控件的结构化数据序列化生成得到,因此,通过遍历该第一序列化数据结构,可以得到每个预设控件,同理,由于第二序列化数据结构为第一控件的结构化数据序列化生成得到,通过遍历该第二序列化数据结构,可以得到每个第一控件,相应的,取该预设控件和第一控件之间的差集,即为企业的管理员添加的新增控件。
在一些实施方式中,遍历该第一序列化数据结构,得到预设控件,包括:
(2.1.1)遍历该第一序列化数据结构中的明细控件以及普通控件,得到预设控件;
该遍历该第二序列化数据结构,得到第一控件,包括:
(2.2.1)遍历该第二序列化数据结构中的明细控件以及普通控件,得到第一控件。
其中,由于应用模版中的控件可以由明细控件以及普通控件组成,为了得到完整的预设控件,需要循环遍历第一序列化数据结构中的明细控件以及普通控件,得到完整的预设控件。同理,为了得到完整的第一控件,需要循环遍历第二序列化数据结构中的明细控件以及普通控件,得到完整的第一控件。
在一些实施方式中,当检测到该新增控件与该更新应用模版中的第二控件不同时,将该新增控件确定为个性化控件,包括:
(3.1)获取该更新应用模版中第二控件的第三序列化数据结构;
(3.2)遍历该第三序列化数据结构,得到第二控件;
(3.3)当检测到该第二控件中不存在该新增控件时,将该新增控件确定为个性化控件。
其中,为了得到第二控件,需要获取更新应用模版中第二控件对应的第三序列化数据结构,由于该第三序列化数据结构为第二控件的结构化数据序列化生成得到,因此,通过遍历该第三序列化数据结构,可以得到每个第二控件,需要说明的是,为了便于后续更新,更新应用模版中不使用明细控件。
进一步的,检测该第二控件中是否存在该新增控件,当检测到第二控件中存在新增控件时,说明更新应用模版中的第二控件已经包含了该新增控件,直接将该新增控件删除,相应的,当检测到该第二控件中不存在该新增控件时,说明更新应用模版中的第二控件也不包含该新增控件,那么可以将该新增控件确定为个性化控件,以便后续增加到更新应用模版中的第二控件中,实现个性化控件自动迁移。
在一些实施方式中,为了保证个性化控件的有效性,可以对个性化控件按照使用次数进行筛选,即该将该新增控件确定为个性化控件之后,还可以包括:
(A)获取该个性化控件的使用次数;
(B)当检测到使用次数小于预设阈值时,将该个性化控件删除。
其中,可以获取该个性化控件在之前的使用记录,根据该使用记录来确定个性化控件的使用次数,该使用次数越多,说明该个性化控件的重要性越高,该使用次数越低,说明该个性化控件的重要性越低,该预设阈值为界定个性化控件是否为高频使用的临界值,可以为开发人员或者管理员预置,例如100次,当检测到使用次数小于预设阈值时,说明该个性化控件使用频率低,为了防止后续控件冗余,可以将该个性化控件删除,相应的,当检测到使用次数不小于预设阈值时,说明该个性化控件使用频率高,保存该个性化控件。
在一些实施方式中,由于控件的属性包括必填和非必填属性,必填属性指必须要填内容,非必填属性指可填可不填内容,必填属性的控件重要性较高,而非必填属性的控件重要性较低,因此,将个性化控件删除,还需结合判断该个性化控件的属性是否为必填属性,即该将该个性化控件删除,还可以包括:
(B.1)检测该个性化控件的属性是否为必填属性。
(B.2)当检测到该个性化控件的属性为必填属性时,保存该个性化控件。
(B.3)当检测到该个性化控件的属性为非必填属性时,将该个性化控件删除。
其中,由于必填属性的控件的重要性,即使使用频率低,也不能直接删除,因此,本申请实施例还需要检测该个性化控件的属性是否为必填属性,当检测到个性化控件的属性为必填属性时,虽然该个性化控件的使用频率低,但是也不能删除,即可以直接保存该个性化控件,相反的,当检测到个性化控件的属性为非必填属性时,同时该个性化控件的使用频率也较低,因此可以直接将该个性化控件直接删除,防止后续控件冗余。
在步骤204中,获取待更新应用模版中的个性化流程。
其中,由于每个版本的人事助手应用的应用模版中,会存在由开发人员配置的预设流程,但是,企业的管理员为了实现企业个性化管理,可以自行配置相应的个性化流程。而目前的应用模版更新方案,由于无法自动确定出个性化流程,更新时,直接通过新的应用模版直接替代旧的应用模版,导致旧的应用模版中的个性化流程全部丢失,企业的管理者又需要在新的应用模版的基础上重新配置个性化流程,过程繁琐,导致应用模版更新效率较差。
在本申请实施例中,可以从待更新应用模版中取出相应的目标流程,为了更好的说明本申请实施例,请一并参阅图8所示,图8为应用模版流程存储详情,可以从第4条即应用模版审批条件中,取出对应应用模版的流程,基于此,可以从待更新应用模版的应用模版审批条件中,取出目标流程,该目标流程包括流程的节点和节点指向,为了更好的说明本申请实施例,请一并参阅图9所示,图9为应用模版流程展开示例图,该示例图中包含四个节点,开始节点(节点1)、审批人节点(节点2)、抄送人节点(节点3)、流程结束节点(节点4),同时还有三个指向线段:其中每一个指向线段都会标明指向节点标识、被指向节点标识。
相应的,由于不确定该目标流程是否为个性化流程,即不知道目标流程是否为企业管理员设置的流程,因此,可以将该目标流程与待更新应用模版的第一预设流程进行比对,当两者不同时,说明该目标流程为企业管理员设置的,直接将该目标流程确定为个性化流程,以便后续可以将其添加到更新应用模版中。相应的,当两者相同时,说明该目标流程为初始的第一预设流程,并非个性化流程。
在一些实施例中,该获取该待更新应用模版中的个性化流程,包括:
(1)获取该待更新应用模版中当前的目标流程以及对应的第一预设流程;
(2)当检测到该目标流程与该第一预设流程不同时,将该目标流程确定为个性化流程。
由于应用模版升级的过程中,无法确定待更新应用模版中的目标流程是否为个性化流程,即无法确定企业管理者是否设置过个性化流程,所以导致无法对个性化流程进行提取。
本申请实施例为了解决上述问题,可以获取待更新应用模版中当前的目标流程以及对应初始的第一预设流程,进而,检测该目标流程与第一预设流程是否不同,当检测到目标流程与第一预设流程不同时,说明目标流程为企业管理员设置的个性化流程,将目标流程确定为个性化流程。相应的,当检测到目标流程与第一预设流程相同时,说明目标流程即为初始的第一预设流程,并非个性化流程。
在步骤205中,将个性化控件和个性化流程更新至更新应用模版中,得到更新后的应用模版列表。
其中,在步骤202中,实现将更新应用模版与待更新应用模版的位置进行调换,实现展现形式上的初步更新,但是,由于该更新应用模版中的控件为新的预设控件(即上文中的第二控件)和新的第二预设流程,不存在个性化控件和个性化流程,以此,本申请实施例可以将个性化控件更新至更新应用模版的控件集中,使得更新应用模版中的控件不止包括第二控件,还可以包括个性化控件。同理,本申请实施例还可以将个性化流程更新至更新应用模版中,替换该第二预设流程,使得更新应用模版中的流程为个性化流程,得到更新后的应用模版列表,即升级后的应用模版列表,以此,将该更新后的应用模版列表发送至企业标识相应的客户端进行版本升级,以实现人事助手应用的升级,基于此,实现个性化控件和个性化流程的自动迁移,极大的提升了应用模版更新的效率。
在一些实施方式中,将个性化控件更新至更新应用模版的控件集中,可以包括:将个性化控件的显示属性进行调整,以使得所述个性化控件以与其他控件不同的显示方式进行显示,并将显示属性调整后的个性化控件更新至更新应用模板的控件集中,即可以将该个性化控件的显示样式进行更改,例如以高亮、颜色标识或者设置不同透明度中的至少一种显示样式调整方法对个性化的显示属性进行调整,并将显示属性调整后的个性化控件更新至更新应用模版的控件集中,以使得后续的企业人员能够快速的识别出之前使用过的个性化控件,提升企业办公效率和实现个性化升级。
在一些实施方式中,还可以记录该个性化控件经历的更新次数,例如个性化控件经历的更新次数为1次、2次或者3次等等,个性化控件经历过的更新次数越多而没有被删除,说明该个性化控件的重要程度越高,因此,可以将该次数标识在该个性化控件上,以告知企业人员该个性化控件的重要程度。
为了更好的说明本申请实施例,请一并参阅图10和图11所示,图10为入职的应用模版的控件展示界面14,图11为录用申请的应用模版的控件展示界面15,通过应用模版升级,由录用申请的应用模版替代入职的应用模版。请一并参阅图12和图13所示,图12为转正的应用模版的控件展示界面16,图13为转正申请的应用模版的控件展示界面17,通过应用模版升级,由转正申请的应用模版替代转正的应用模版。请一并参阅图14和图15所示,图14为调岗的应用模版的控件展示界面18,图15为调岗申请的应用模版的控件展示界面19,通过应用模版升级,由调岗申请的应用模版替代调岗的应用模版。请一并参阅图16和图17所示,图16为离职的应用模版的控件展示界面20,图17为离职申请的应用模版的控件展示界面21,通过应用模版升级,由离职申请的应用模版替代离职的应用模版。
在一些实施方式中,该将该个性化控件和该个性化流程更新至该更新应用模版中,得到更新后的应用模版列表,包括:
(1)将该个性化控件加入至该更新应用模版中的第二控件的队尾;
(2)将该个性化流程替换至该更新应用模版中的第二预设流程,得到更新后的应用模版列表。
其中,为了实现个性化控件的迁移,需要将个性化控件加入至该更新应用模版中的第二控件的队尾,即在更新应用模版的第二控件的后面插入该个性化控件,以实现个性化控件迁移。相应的,为了实现个性化流程的迁移,需要将个性化流程替换该更新应用模版中的第二预设流程,以实现个性化流程迁移,基于此,得到更新后的应用模版列表。
在一些实施方式中,为了避免企业使用不习惯新版本的人事助手应用的应用模版,本申请实施例还可以对升级前后的应用模版列表进行备份,即对升级前后的人事助手应用进行备份,即上述方法还包括:根据该升级请求携带的企业标识,对该应用模版列表和该更新后的应用模版列表进行备份。
其中,可以根据升级请求携带的企业标识,获取相应的更新前的应用模版列表和更新后的应用模版列表进行备份,并将备份与该企业标识进行关联,以便于后续企业的管理员可以根据备份的应用模版列表快速回退到更新前的人事助手应用。
在一些实施方式中,对该应用模版列表和该更新后的应用模版列表进行备份之后,企业的管理员可以随时进行升级回滚,即还包括:
(A)当检测到升级回滚请求时,获取升级回滚请求携带的企业标识以及回滚管理员标识;
(B)根据该企业标识确定相应的分布锁文件;
(C)当该分布锁文件指示的目标管理员标识与该回滚管理员标识相同时,获取备份的该应用模版列表,并将备份的该应用模版列表替换该更新后的应用模版列表。
其中,在企业升级了新的人事助手应用之后,企业的管理员在发现新的人事助手应用的应用模版不便使用时,可以申请升级回滚,生成升级回滚请求,该升级回滚请求可以携带企业标识以及回滚管理员标识,该回滚管理员标识即为申请进行升级回滚的管理员的标识,并把该升级回滚请求发送至服务器,申请将新的人事助手应用的版本回滚到之前的版本。基于此,当服务器检测到升级回滚请求时,可以获取该升级回滚请求携带的企业标识以及回滚管理员标识。
进一步的,为了避免反复升级,需要限定只有之前的目标管理员标识的管理员才可以申请升级回滚,由于之前升级请求生成了相应的分布式锁文件,该分布式锁文件还指示了目标管理员标识,因此,可以检测该分布式锁文件指示的目标管理员标识与该回滚管理员标识是否相同,当检测到该分布锁文件指示的目标管理员标识与该回滚管理员标识相同时,允许升级回滚,获取之前备份的该应用模版列表,并将备份的该应用模版列表替换该更新后的应用模版列表,并将替换后的应用模版列表重新发送至企业标识相应的客户端进行版本回退,实现升级回滚。
在一些实施方式中,该得到更新后的应用模版列表之后,还包括:
(a)根据更新应用模版,生成相应的更新卡片;其中,该更新卡片至少包括按照时间排序的更新应用模版以及相应的功能联动项;
(b)将该更新卡片发送至该企业标识关联的每个管理员标识对应的客户端。
需要说明的是,更新应用模版均为单独设计的Protobuf结构体,结构设计合理,因此,开发人员还可以在此基础上预留字段,实现不同的函数回调方法,进而实现与其他功能联动。
以此,为了展示新增的功能联动,可以向企业标识关联的管理员推送更新卡片,具体可以根据更新应用模版,生成相应的更新卡片,为了更好的说明本申请实施例,请一并参阅图18所示,图18为更新卡片的示意图,该更新卡片至少包括按照时间排序的更新应用模版以及相应的功能联动项,即入职的更新应用模版的更新时间早于转正的更新应用模版,转正的更新应用模版早于调岗的更新应用模版,调岗的更新应用模版早于离职的更新应用模版。该功能联动项展示新增支撑的功能,即自动同步至通讯录以及支持人事记录管理的功能联动。
最后,将该更新卡片发送至该企业标识关联的每个管理员标识对应的客户端,管理员在通过客户端接收到该更新卡片时,会显示该更新卡片,为了更好的说明本申请实施例,请一并参阅图19所示,图19为更新卡片在客户端显示的示例图。
由上述可知,本申请实施例通过获取升级请求对应的应用模版列表;确定应用模版列表中的更新应用模版以及待更新应用模版,并将更新应用模版与待更新应用模版的位置进行调换;根据待更新应用模版中的第一控件与更新应用模版中的第二控件进行控件对比分析,确定相应的个性化控件;获取待更新应用模版中的个性化流程;将个性化控件和个性化流程更新至更新应用模版中,得到更新后的应用模版列表。以此,在对待更新应用模版升级的基础上,还可以将个性化控件和个性化流程自动保留到新的更新应用模版中,相对于相关技术中通过新的应用模版直接替代旧的应用模版的方案而言,本申请实施例可以避免个性化设置丢失,提升了应用模版更新的效率。
结合上述实施例所描述的方法,以下将举例作进一步详细说明。
在本实施例中,将以该应用模版更新装置具体集成在服务器中为例进行说明。
为了更好的说明本申请实施例,请一并参阅图20,图20为本申请实施例提供的应用模版更新方法的另一流程示意图。包括:
在步骤301中,服务器获取升级请求,并根据企业标识、目标管理员标识以及操作授权参数进行权限验证,当检测到权限验证通过时,对升级请求进行加锁,生成企业标识对应的分布式锁文件,获取企业标识对应的应用模版列表。
其中,管理员对象通过客户端点击应用模版的“立即升级”控件,客户端会生成升级请求,并将该升级请求发送至服务器,该升级请求至少携带企业标识、目标管理员标识和操作授权参数,该企业标识用于标识对应哪个企业更新,目标管理员标识指示当前发起升级的管理员标识,该操作授权参数可以为输入的密码,该密码可以为字符串。
相应的,服务器获取升级请求,并根据升级请求携带的企业标识、目标管理员标识以及操作授权参数进行权限验证,验证在该企业标识的企业下,该目标管理员标识对应的管理员是否具有升级权限以及操作授权参数是否输入正确,在验证到目标管理员标识对应的管理员具有升级权限以及操作授权参数输入正确时,判定为权限验证通过,即响应该升级请求。
为了预防同一企业的多个管理员在同一时间进行升级,导致数据的错乱,还需要对权限验证通过的升级请求进行加锁,该加锁可以通过分布式锁服务实现,即通过分布式锁对升级请求进行加锁,锁定该企业的升级功能,并生成该企业标识对应的分布式锁文件,该分布式锁文件以该企业的企业标识进行命名,通过该分布式锁文件实现对企业的升级功能锁定,相应的,在实现对企业的升级功能锁定之后,可以根据升级请求携带的企业标识获取到对应的应用模版列表,以实现后续的更新。
在步骤302中,服务器确定应用模版列表中的更新应用模版以及待更新应用模版。
其中,该更新应用模版即为需要进行升级的应用模版,该升级的内容包括但不限于应用模版的名称变更、应用模版中的控件的变更以及应用模版中的流程的变更,相应的,该更新应用模版可以为开发人员设置好并放置在应用模版列表中的,每个更新应用模版对应需要更新的待更新应用模版。该更新应用模版中还可以包括预设类型字段,该预设类型字段可以为待更新应用模版的应用模版名称,因此,可以根据该更新应用模版的预设类型字段快速找到对应的待更新应用模版。
在步骤303中,服务器将待更新应用模版停用,标记待更新应用模版的第一位置以及标记更新应用模版的第二位置,将第一位置上的待更新应用模版的内容与第二位置上的更新应用模版的内容进行互换,以将第一位置上的待更新应用模版更换为更新应用模版,以及将第二位置上的更新应用模版更换为待更新应用模版。
首先,可以将待更新应用模版停用,具体可以将待更新应用模版的模版状态的标识位设置为0,在停用待更新应用模版后,需要进行位置的变动,在实际的存储中,由于应用模版的存储在指针位置上,因此,无法直接将两者的位置直接进行调换。
在本申请实施例中,通过swap算法实现两者的调换,具体为标记待更新应用模版的第一位置,并标记更新应用模版的第二位置,基于此,将第一位置上的待更新应用模版的内容与第二位置上的更新应用模版的内容进行交换,即实现将第一位置上存储的待更新应用模版更换为更新引用模版,将第二位置上的更新应用模版更换为待更新应用模版,实现第一位置和第二位置的存储指针不变,但是上面存储的内容变更。
在步骤304中,服务器删除第二位置上的待更新应用模版的内容,并将第二位置调换到应用模版列表的最后一个位置上,在待更新应用模版中添加跳转链接。
其中,为了避免第二位置上的待更新应用模版的内容的存在对更新后的人事助手应用的使用造成干扰,即避免旧的应用模版的功能还能使用对企业使用者造成影响,还需要删除第二位置上的待更新应用模版的内容,即将旧的应用模版的功能停用,并将该第二位置调换到应用模版列表的最后一个位置上,避免影响企业使用者的使用。
请继续参阅图5所示,在新版本人事助手应用界面13,录用申请、转正申请、调岗申请和离职申请的更新应用模版122,与待更新应用模版为入职、转正、调岗和离职的待更新应用模版121进行位置调换,实现展现形式上的初步更新。
进一步的,为了防止停用的待更新应用模版的停用给企业使用者带来干扰,在本申请实施例中,还可以在该待更新应用模版中添加跳转链接,该跳转链接指向第一位置上对应的更新应用模版,以实现企业使用者后续在更新后的人事助手应用上点击待更新应用模版可以跳转开启第一位置上的更新应用模版。
例如,请继续参阅图5中,在新版本人事助手应用界面13,企业使用者点击已经停用入职对应的待更新应用模版,会跳转开启录用申请对应的更新应用模版,点击已经停用转正对应的待更新应用模版,会跳转开启转正申请对应的更新应用模版,点击已经停用调岗对应的待更新应用模版,会跳转开启调岗申请对应的更新应用模版,点击已经停用离职对应的待更新应用模版,会跳转开启离职申请对应的更新应用模版。
在步骤305中,服务器获取待更新应用模版对应预设控件的第一序列化数据结构以及待更新应用模版中当前的第一控件的第二序列化数据结构。
由于应用模版升级的过程中,无法确定待更新应用模版中的控件相对于预设控件是否发生变动,即无法确定企业管理者是否设置过个性化控件,所以导致无法对个性化控件进行提取。
本申请实施例为了解决上述问题,引入Protobuf的序列化对比算法,用于对比待更新应用模版中的控件是否发生过变动,以此,获取待更新应用模版对应预设控件的第一序列化数据结构以及获取待更新应用模版中当前的第一控件的第二序列化数据结构。
在步骤306中,当服务器检测到第一序列化数据结构和第二序列化数据结构不同时,遍历第一序列化数据结构中的明细控件以及普通控件,得到预设控件,遍历第二序列化数据结构中的明细控件以及普通控件,得到第一控件,取预设控件和第一控件的差集,得到相应的新增控件。
相应的,如果待更新应用模版中的控件未发生变动,那么该第一序列化数据结构和第二序列化数据结构相同,相反的,如果待更新应用模版中的控件发生变动,即企业的管理员添加了新增控件,那么该第一序列化数据结构和第二序列化数据结构不同,因此,当检测到第一序列化数据结构和第二序列化数据结构不同时,循环遍历第一序列化数据结构中的明细控件以及普通控件,得到完整的预设控件。同理,为了得到完整的第一控件,需要循环遍历第二序列化数据结构中的明细控件以及普通控件,得到完整的第一控件,相应的,取该预设控件和第一控件之间的差集,即为企业的管理员添加的新增控件,以此,基于Protobuf思想,快速得到相应的新增控件。
在步骤307中,服务器获取更新应用模版中第二控件的第三序列化数据结构,遍历第三序列化数据结构,得到第二控件,当检测到第二控件中不存在新增控件时,将新增控件确定为个性化控件。
其中,为了得到第二控件,需要获取更新应用模版中第二控件对应的第三序列化数据结构,由于该第三序列化数据结构为第二控件的结构化数据序列化生成得到,因此,通过遍历该第三序列化数据结构,可以得到每个第二控件。
进一步的,检测该第二控件中是否存在该新增控件,当检测到第二控件中存在新增控件时,说明更新应用模版中的第二控件已经包含了该新增控件,直接将该新增控件删除,相应的,当检测到该第二控件中不存在该新增控件时,说明更新应用模版中的第二控件也不包含该新增控件,那么可以将该新增控件确定为个性化控件,以便后续增加到更新应用模版中的第二控件中,实现个性化控件自动迁移。
在步骤308中,服务器获取待更新应用模版中当前的目标流程以及对应的第一预设流程,当检测到目标流程与第一预设流程不同时,将目标流程确定为个性化流程。
由于应用模版升级的过程中,无法确定待更新应用模版中的目标流程是否为个性化流程,即无法确定企业管理者是否设置过个性化流程,所以导致无法对个性化流程进行提取。
本申请实施例为了解决上述问题,服务器可以获取待更新应用模版中当前的目标流程以及对应初始的第一预设流程,进而,检测该目标流程与第一预设流程是否不同,当检测到目标流程与第一预设流程不同时,说明目标流程为企业管理员设置的个性化流程,将目标流程确定为个性化流程。相应的,当检测到目标流程与第一预设流程相同时,说明目标流程即为初始的第一预设流程,并非个性化流程。
在步骤309中,服务器将个性化控件加入至更新应用模版中的第二控件的队尾,将个性化流程替换至更新应用模版中的第二预设流程,得到更新后的应用模版列表。
其中,为了实现个性化控件的迁移,需要将个性化控件加入至该更新应用模版中的第二控件的队尾,即在更新应用模版的第二控件的后面插入该个性化控件,以实现个性化控件迁移。相应的,为了实现个性化流程的迁移,需要将个性化流程替换该更新应用模版中的第二预设流程,以实现个性化流程迁移,基于此,得到更新后的应用模版列表。
在步骤310中,服务器根据升级请求携带的企业标识,对应用模版列表和更新后的应用模版列表进行备份。
其中,可以根据升级请求携带的企业标识,获取相应的更新前的应用模版列表和更新后的应用模版列表进行备份,并将备份与该企业标识进行关联,以便于后续企业的管理员可以根据备份的应用模版列表快速回退到更新前的人事助手应用。
在步骤311中,服务器根据更新应用模版,生成相应的更新卡片,将更新卡片发送至企业标识关联的每个管理员标识对应的客户端。
需要说明的是,更新应用模版均为单独设计的Protobuf结构体,结构设计合理,因此,开发人员还可以在此基础上预留字段,实现不同的函数回调方法,进而实现与其他功能联动。
以此,为了展示新增的功能联动,可以向企业标识关联的管理员推送更新卡片,具体可以根据更新应用模版,生成相应的更新卡片,为了更好的说明本申请实施例,请继续参阅图18所示,图18为更新卡片的示意图,该更新卡片至少包括按照时间排序的更新应用模版以及相应的功能联动项,即入职的更新应用模版的更新时间早于转正的更新应用模版,转正的更新应用模版早于调岗的更新应用模版,调岗的更新应用模版早于离职的更新应用模版。该功能联动项展示新增支撑的功能,即自动同步至通讯录以及支持人事记录管理的功能联动。
最后,将该更新卡片发送至该企业标识关联的每个管理员标识对应的客户端,管理员在通过客户端接收到该更新卡片时,会显示该更新卡片,为了更好的说明本申请实施例,请继续参阅图19所示,图19为更新卡片在客户端显示的示例图。
在步骤312中,当服务器检测到升级回滚请求时,获取升级回滚请求携带的企业标识以及回滚管理员标识,根据企业标识确定相应的分布锁文件,当分布锁文件指示的目标管理员标识与回滚管理员标识相同时,获取备份的应用模版列表,并将备份的应用模版列表替换更新后的应用模版列表。
其中,在企业升级了新的人事助手应用之后,企业的管理员在发现新的人事助手应用的应用模版不便使用时,可以申请升级回滚,生成升级回滚请求,该升级回滚请求可以携带企业标识以及回滚管理员标识,该回滚管理员标识即为申请进行升级回滚的管理员的标识,并把该升级回滚请求发送至服务器,申请将新的人事助手应用的版本回滚到之前的版本。基于此,当服务器检测到升级回滚请求时,可以获取该升级回滚请求携带的企业标识以及回滚管理员标识。
进一步的,为了避免反复升级,需要限定只有之前的目标管理员标识的管理员才可以申请升级回滚,由于之前升级请求生成了相应的分布式锁文件,该分布式锁文件还指示了目标管理员标识,因此,可以检测该分布式锁文件指示的目标管理员标识与该回滚管理员标识是否相同,当检测到该分布锁文件指示的目标管理员标识与该回滚管理员标识相同时,允许升级回滚,获取之前备份的该应用模版列表,并将备份的该应用模版列表替换该更新后的应用模版列表,并将替换后的应用模版列表重新发送至企业标识相应的客户端进行版本回退,实现升级回滚。
由上述可知,本申请实施例通过获取升级请求对应的应用模版列表;确定应用模版列表中的更新应用模版以及待更新应用模版,并将更新应用模版与待更新应用模版的位置进行调换;根据待更新应用模版中的第一控件与更新应用模版中的第二控件进行控件对比分析,确定相应的个性化控件;获取待更新应用模版中的个性化流程;将个性化控件和个性化流程更新至更新应用模版中,得到更新后的应用模版列表。以此,在对待更新应用模版升级的基础上,还可以将个性化控件和个性化流程自动保留到新的更新应用模版中,相对于相关技术中通过新的应用模版直接替代旧的应用模版的方案而言,本申请实施例可以避免个性化设置丢失,提升了应用模版更新的效率。
进一步的,本申请实施例还具有升级回滚功能,当企业的管理员不满足升级带来的影响,也可以一键升级回退,增加了应用模版更新的多样性。
在一些实施方式中,为了更好的说明本申请实施例,请一并参阅图21所示,图21为本申请实施例中提供的应用模版更新系统的时序示意图,该应用模版更新系统包括节点端、后台服务端、逻辑端、数据库端、算法端、分布锁端、卡片推送端,除了节点端在终端上,其他端均在服务器侧,这样会处理的目的是做了分布式,防止一个服务崩溃后引起的全面崩溃。
S1,对象点击升级:执行升级,将升级请求发送至后台服务端。
S2,后台服务端发送升级请求至逻辑端,解析参数。
S3,逻辑端调用分布式锁端抢占分布式锁,锁定企业标识。
S4,后台服务端调用逻辑段进行基础设置升级。
S5,逻辑段调用数据库端查询应用模版列表。
S6,数据库端过滤入转调离应用模版。
其中,该入转调离应用模版分别为入职、转正、调岗和离职的四个应用模版。
S7,逻辑端将待更新应用模版停用。
S8,逻辑端调用算法端实现位置变动。
S9,算法端调用交换算法。
S10,逻辑端进行跳转机制添加。
S11,后台服务端调用逻辑端进行控件升级。
S12,逻辑端低调用数据库端查询新旧应用模版详情。
S13,逻辑端调用算法端进行算法对比控件。
S14,算法端检测对比控件是否变动。
S15,算法端将待更新应用模版对比预设模版,找到新增控件。
S16,算法端将待更新应用模版对比更新应用模版,找到个性化控件。
S17,逻辑端将将个性化控件添加至队尾。
S18,后台服务端调用逻辑端进行流程升级。
S19,逻辑端调用数据库端查询待更新应用模版和更新应用模版的流程。
S20,逻辑端调用算法端进行流程对比算法。
S21,算法端执行流程节点和分支对比算法。
S22,后台服务端调用逻辑端实现备份机制。
S23,逻辑端备份应用模版列表和更新后的应用模版列表至数据库端。
S24,后台服务端将推送结果卡片发送至逻辑端。
S25,逻辑端整合卡片信息,排序结果。
S26,逻辑端请求卡片推送端推送卡片。
S27,卡片推送端分批向管理员标识的客户端推送更新卡片。
以上各个步骤的具体实施可参见前面的实施例,在此不再赘述。
在一些实施方式中,为了更好的说明本申请实施例,请一并参阅图22所示,图22为本申请实施例中提供的应用模版更新系统的另一时序示意图,该应用模版更新系统包括节点端、后台服务端、逻辑端、数据库端,除了节点端在终端上,其他端均在服务器侧,这样会处理的目的是做了分布式,防止一个服务崩溃后引起的全面崩溃。
S28,对象点击升级回滚,将生成的升级回滚请求发送至后台服务端。
S29,后台服务端进行请求解析,即进行权限验证。
S30,后台服务端发送升级回滚请求至逻辑端。
S31,逻辑端调用数据库端读取备份的应用模版列表。
S32,逻辑端将应用模版列表替换该更新后的应用模版列表,并记录在数据库端。
以上各个步骤的具体实施可参见前面的实施例,在此不再赘述。
为便于更好的实施本申请实施例提供的应用模版更新方法,本申请实施例还提供一种基于上述应用模版更新方法的装置。其中名词的含义与上述应用模版更新方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图23,图23为本申请实施例提供的应用模版更新装置的结构示意图,该应用模版更新装置应用于计算机设备,其中该应用模版更新装置可以包括第一获取单元401,调换单元402、比对分析单元403、第二获取单元404、及更新单元405等。
第一获取单元401,用于获取升级请求对应的应用模版列表。
在一些实施例中,该升级请求至少携带企业标识、目标管理员标识以及操作授权参数,该第一获取单元401,用于:
获取升级请求,并根据该企业标识、目标管理员标识以及操作授权参数进行权限验证;
当检测到权限验证通过时,对该升级请求进行加锁,生成该企业标识对应的分布式锁文件;
获取该企业标识对应的应用模版列表。
调换单元402,用于确定该应用模版列表中的更新应用模版以及待更新应用模版,并将该更新应用模版与该待更新应用模版的位置进行调换。
在一些实施方式中,该调换单元402,用于:
确定该应用模版列表中的更新应用模版以及待更新应用模版;
将该待更新应用模版停用;
标记该待更新应用模版的第一位置以及标记该更新应用模版的第二位置;
将该第一位置上的待更新应用模版的内容与该第二位置上的更新应用模版的内容进行互换,以将第一位置上的待更新应用模版更换为更新应用模版,以及将第二位置上的更新应用模版更换为待更新应用模版。
在一些实施方式中,该装置,还包括调整单元(未标识),用于:
删除该第二位置上的待更新应用模版的内容,并将该第二位置调换到应用模版列表的最后一个位置上;
在该待更新应用模版中添加跳转链接,该跳转链接指向该第一位置上的更新应用模版。
比对分析单元403,用于根据该待更新应用模版中的第一控件与该更新应用模版中的第二控件进行控件对比分析,确定相应的个性化控件。
在一些实施例中,该比对分析单元403,包括:
获取子单元(未标识),用于获取该待更新应用模版对应预设控件的第一序列化数据结构以及该待更新应用模版中当前的第一控件的第二序列化数据结构;
第一确定子单元(未标识),用于当检测到该第一序列化数据结构和该第二序列化数据结构不同时,确定第一控件相对于预设控件的新增控件;
第二确定子单元(未标识),用于当检测到该新增控件与该更新应用模版中的第二控件不同时,将该新增控件确定为个性化控件。
在一些实施例中,第一确定子单元(未标识),用于:
当检测到该第一序列化数据结构和该第二序列化数据结构不同时,遍历该第一序列化数据结构,得到预设控件;
遍历该第二序列化数据结构,得到第一控件;
取该预设控件和第一控件的差集,得到相应的新增控件。
在一些实施例中,第一确定子单元(未标识),还用于:
当检测到该第一序列化数据结构和该第二序列化数据结构不同时,遍历该第一序列化数据结构中的明细控件以及普通控件,得到预设控件;
遍历该第二序列化数据结构中的明细控件以及普通控件,得到第一控件;
取该预设控件和第一控件的差集,得到相应的新增控件。
在一些实施例中,该第二确定子单元(未标识),用于:
获取该更新应用模版中第二控件的第三序列化数据结构;
遍历该第三序列化数据结构,得到第二控件;
当检测到该第二控件中不存在该新增控件时,将该新增控件确定为个性化控件。
第二获取单元404,用于获取该待更新应用模版中的个性化流程。
在一些实施例中,该第二获取单元404,用于:
获取该待更新应用模版中当前的目标流程以及对应的第一预设流程;
当检测到该目标流程与该第一预设流程不同时,将该目标流程确定为个性化流程。
更新单元405,用于将该个性化控件和该个性化流程更新至该更新应用模版中,得到更新后的应用模版列表。
在一些实施例中,该更新单元405,用于:
将该个性化控件加入至该更新应用模版中的第二控件的队尾;
将该个性化流程替换至该更新应用模版中的第二预设流程,得到更新后的应用模版列表。
在一些实施例中,该装置,还包括备份单元(未标识),用于:
根据该升级请求携带的企业标识,对该应用模版列表和该更新后的应用模版列表进行备份。
在一些实施例中,该装置,还包括回滚单元(未标识),用于:
当检测到升级回滚请求时,获取升级回滚请求携带的企业标识以及回滚管理员标识;
根据该企业标识确定相应的分布锁文件;
当该分布锁文件指示的目标管理员标识与该回滚管理员标识相同时,获取备份的该应用模版列表,并将备份的该应用模版列表替换该更新后的应用模版列表。
在一些实施例中,该装置,还包括发送单元(未标识),用于:
根据更新应用模版,生成相应的更新卡片;
其中,该更新卡片至少包括按照时间排序的更新应用模版以及相应的功能联动项;
将该更新卡片发送至该企业标识关联的每个管理员标识对应的客户端。
以上各个单元的具体实施可参见前面的实施例,在此不再赘述。
由上述可知,本申请实施例通过第一获取单元401获取升级请求对应的应用模版列表;调换单元402确定应用模版列表中的更新应用模版以及待更新应用模版,并将更新应用模版与待更新应用模版的位置进行调换;比对分析单元403根据待更新应用模版中的第一控件与更新应用模版中的第二控件进行控件对比分析,确定相应的个性化控件;第二获取单元404获取待更新应用模版中的个性化流程;更新单元405将个性化控件和个性化流程更新至更新应用模版中,得到更新后的应用模版列表。以此,在对待更新应用模版升级的基础上,还可以将个性化控件和个性化流程自动保留到新的更新应用模版中,相对于相关技术中通过新的应用模版直接替代旧的应用模版的方案而言,本申请实施例可以避免个性化设置丢失,提升了应用模版更新的效率。
以上各个单元的具体实施可参见前面的实施例,在此不再赘述。
参照图24,图24为实现本公开实施例的终端140的部分的结构框图,该终端140包括:射频(Radio Frequency,简称RF)电路510、存储器515、输入单元530、显示单元540、传感器550、音频电路560、无线保真(wireless fidelity,简称WiFi)模块570、处理器580、以及电源590等部件。本领域技术人员可以理解,图24示出的终端140结构并不构成对手机或电脑的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
RF电路510可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器580处理;另外,将设计上行的数据发送给基站。
存储器515可用于存储软件程序以及模块,处理器580通过运行存储在存储器515的软件程序以及模块,从而执行终端的各种功能应用以及数据处理。
输入单元530可用于接收输入的数字或字符信息,以及产生与终端的设置以及功能控制有关的键信号输入。具体地,输入单元530可包括触控面板531以及其他输入装置532。
显示单元540可用于显示输入的信息或提供的信息以及终端的各种菜单。显示单元540可包括显示面板541。
音频电路560、扬声器561,传声器562可提供音频接口。
在本实施例中,该终端140所包括的处理器580可以执行前面实施例的应用模版更新方法。
本公开实施例的终端140包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。本发明实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
图25为实施本公开实施例的服务器110的部分的结构框图。服务器110可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(CentralProcessing Units,简称CPU)622(例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630(例如一个或一个以上海量存储装置)。其中,存储器632和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器600中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在服务器600上执行存储介质630中的一系列指令操作。
服务器600还可以包括一个或一个以上电源626,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口658,和/或,一个或一个以上操作系统641,例如Windows ServerTM,Mac OS XTM,UnixTM ,LinuxTM,FreeBSDTM等等。
服务器600中的中央处理器622可以用于执行本公开实施例的应用模版更新方法,即:获取升级请求对应的应用模版列表;确定该应用模版列表中的更新应用模版以及待更新应用模版,并将该更新应用模版与该待更新应用模版的位置进行调换;根据该待更新应用模版中的第一控件与该更新应用模版中的第二控件进行控件对比分析,确定相应的个性化控件;获取该待更新应用模版中的个性化流程;将该个性化控件和该个性化流程更新至该更新应用模版中,得到更新后的应用模版列表。
本公开实施例还提供一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行前述各个实施例的应用模版更新方法,即:获取升级请求对应的应用模版列表;确定该应用模版列表中的更新应用模版以及待更新应用模版,并将该更新应用模版与该待更新应用模版的位置进行调换;根据该待更新应用模版中的第一控件与该更新应用模版中的第二控件进行控件对比分析,确定相应的个性化控件;获取该待更新应用模版中的个性化流程;将该个性化控件和该个性化流程更新至该更新应用模版中,得到更新后的应用模版列表。
本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序。计算机设备的处理器读取该计算机程序并执行,使得该计算机设备执行实现上述的应用模版更新方法。
此外,术语“包括”和“包含”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或装置不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或装置固有的其它步骤或单元。
应当理解,在本公开中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
应了解,在本公开实施例的描述中,多个(或多项)的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行本公开各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
还应了解,本公开实施例提供的各种实施方式可以任意进行组合,以实现不同的技术效果。
本申请实施例中,术语“模块”或“单元”是指有预定功能的计算机程序或计算机程序的一部分,并与其他相关部分一起工作以实现预定目标,并且可以通过使用软件、硬件(如处理电路或存储器)或其组合来全部或部分实现。同样的,一个处理器(或多个处理器或存储器)可以用来实现一个或多个模块或单元。此外,每个模块或单元都可以是包含该模块或单元功能的整体模块或单元的一部分。
以上是对本公开的实施方式的具体说明,但本公开并不局限于上述实施方式,熟悉本领域的技术人员在不违背本公开精神的条件下还可作出种种等同的变形或替换,这些等同的变形或替换均包括在本公开权利要求所限定的范围内。
- 一种用于预测纤维复合材料剩余寿命的方法及装置
- 一种用于海上风电齿轮箱剩余寿命预测的试验装置及方法