用于控件渲染的表单权限控制方法和装置与流程

文档序号:12125680阅读:171来源:国知局
本公开涉及计算机
技术领域
:,尤其涉及一种用于控件渲染的表单权限控制方法和装置。
背景技术
::在平常的业务审批过程中,需要各种各样的业务表单,如请假申请需要填写请假申请单、财务报销申请需要填写财务报销申请单。业务表单在随着业务流程的流转过程中,不同的审批环节,对表单中的不同的字段的可见性(是否可以看到)、可操作性(是否可以编辑)等要求不同。以请假申请为例,请假人姓名、请假天数、请假原因等字段需要请假人填写,主管审批意见等字段则只能由主管填写,请假人不可以填写。在业务开发中,我们就需要按照业务环节或办理人对表单中的字段进行授权,即授权某些字段对特定业务环节或办理人的可见性和可操作性。在现有技术中,通过设置每个字段对应的控件的针对不同预置条件(即授权主体)的权限来生成权限控制数据,该权限控制数据中包括了表单ID、预置条件的ID、控件ID以及授权情况的对应关系。当某一预置条件(如张三)访问该表单的时候,首先从根据张三的ID和表单的ID从数据库中加载该权限控制数据,然后遍历所有控件,从而获取权限数据中设置的对张三的控件权限。但是,由于预置条件很多,表单的控件更多,对于有的业务流程有上百个业务环节,每个环节绑定不同的表单,每个表单内的控件也会有几十个甚至是上百个,如果采用上述现有技术的方法会生成大量的权限控制数据,对存储有很大的消耗。并且,由于表单和控件的数量非常多,如果对表单的控件进行遍历处理,也会造成性能的大量消耗。技术实现要素:本公开的目的是提供一种用于控件渲染的表单权限控制方法和装置,用于解决现有技术中生成大量权限控制数据噪声的存储量大以及在处理时性能消耗大的问题。为了实现上述目的,本公开提供一种用于控件渲染的表单权限控制方法,所述方法包括:当预置条件访问表单时,获取所述预置条件的状态码;判断所述表单中的每个控件的权限属性中是否包含所述状态码,得到所述每个控件的权限判断结果;根据所述每个控件的权限判断结果确定需要渲染的控件;根据每个需要渲染的控件的权限判断结果进行所述每个需要渲染的控件的自渲染。可选的,所述预置条件的状态码包括:所述预置条件的标识;或者,将所述预置条件的标识进行哈希计算得到的哈希值;或者,将所述预置条件的标识以及所述预置条件的属性信息进行哈希计算得到的哈希值,所述预置条件的属性信息包括:所述预置条件的权限、级别中的至少一者。可选的,所述每个控件的权限属性为授权属性时,所述判断所述表单中的每个控件的权限属性中是否包含所述状态码,得到所述每个控件的权限判断结果包括:判断第一控件的权限属性中是否包含所述状态码;所述第一控件为所述每个控件中的任一控件;当所述第一控件的权限属性中包含所述状态码时,确定所述第一控件对所述预置条件已授权;当所述第一控件的权限属性中不包含所述状态码时,确定所述第一控件对所述预置条件未授权。可选的,所述每个控件的权限属性为禁止属性时,所述判断所述表单中的每个控件的权限属性中是否包含所述状态码,得到所述每个控件的权限判断结果包括:判断第一控件的权限属性中是否包含所述状态码;所述第一控件为所述每个控件中的任一控件;当所述第一控件的权限属性中包含所述状态码时,确定所述第一控件对所述预置条件未授权;当所述第一控件的权限属性中不包含所述状态码时,确定所述第一控件对所述预置条件已授权。可选的,所述预置条件包括访问所述表单的用户,或者访问所述表单的业务环节,或者访问所述表单的网络链接。本公开还提供一种用于控件渲染的表单权限控制装置,所述装置包括:获取模块,用于当预置条件访问表单时,获取所述预置条件的状态码;判断模块,用于判断所述表单中的每个控件的权限属性中是否包含所述状态码,得到所述每个控件的权限判断结果;控件确定模块,用于根据所述每个控件的权限判断结果确定需要渲染的控件;渲染模块,用于根据每个需要渲染的控件的权限判断结果进行所述每个需要渲染的控件的自渲染。可选的,所述预置条件的状态码包括:所述预置条件的标识;或者,将所述预置条件的标识进行哈希计算得到的哈希值;或者,将所述预置条件的标识以及所述预置条件的属性信息进行哈希计算得到的哈希值,所述预置条件的属性信息包括:所述预置条件的权限、级别中的至少一者。可选的,所述每个控件的权限属性为授权属性时,所述判断模块用于:判断第一控件的权限属性中是否包含所述状态码;所述第一控件为所述每个控件中的任一控件;当所述第一控件的权限属性中包含所述状态码时,确定所述第一控件对所述预置条件已授权;当所述第一控件的权限属性中不包含所述状态码时,确定所述第一控件对所述预置条件未授权。可选的,所述每个控件的权限属性为禁止属性时,所述判断模块用于:判断第一控件的权限属性中是否包含所述状态码;所述第一控件为所述每个控件中的任一控件;当所述第一控件的权限属性中包含所述状态码时,确定所述第一控件对所述预置条件未授权;当所述第一控件的权限属性中不包含所述状态码时,确定所述第一控件对所述预置条件已授权。可选的,所述预置条件包括访问所述表单的用户,或者访问所述表单的业务环节,或者访问所述表单的网络链接。本公开提供的用于控件渲染的表单权限控制方法中,当预置条件访问表单时,获取所述预置条件的状态码,从而可以根据所述每个控件的预先设置的权限属性来判断所述表单中的每个控件的权限属性中是否包含所述状态码,得到所述每个控件的权限判断结果,并根据所述每个控件的权限判断结果确定需要渲染的控件,从而可以根据每个需要渲染的控件的权限判断结果进行所述每个需要渲染的控件的自渲染。由于不需要预先生成大量权限控制数据,因此能够降低数据存储量,并且由于各个控件可以根据权限判断结果进行自渲染,因此避免了有现有遍历处理的性能消耗问题,能够降低性能消耗。本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。附图说明附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:图1是根据本公开一实施例示出的一种用于控件渲染的表单权限控制方法的流程图;图2是根据本公开一实施例示出的另一种用于控件渲染的表单权限控制方法的流程图;图3是根据本公开一实施例示出的又一种用于控件渲染的表单权限控制方法的流程图;图4是根据本公开一实施例示出的一种用于控件渲染的表单权限控制装置的框图。具体实施方式以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。图1是根据本公开一实施例示出的一种用于控件渲染的表单权限控制方法的流程图,参见图1,该方法可以包括:步骤101,当预置条件访问表单时,获取所述预置条件的状态码。其中,预置条件可以理解为访问表单的特定场景,或者理解为表单的访问者,该访问者可以是某一个人,某一个业务环节或者某一个网络链接。例如,张三访问某一表单,比如请假表单,那么张三就是该请假表单的预置条件。状态码是用来表示预置条件身份的信息,对于每一个预置条件而言具有唯一性。因此,状态码可以根据预置条件的具有唯一性的标识来确定,例如,如果访问者为某一个人,则状态码可以根据这个人的用户标识来确定,或者如果访问者为一个网络链接,则状态码可以根据这个网络链接的连接地址来确定。另外,在确定状态码时,可以将上述的具有唯一性的标识直接作为状态码,也可是将该标识进行哈希运算后得到的数值作为状态码。另外,除了考虑上述的具有唯一性的标识,还可以考虑预置条件的其他属性,例如权限信息,可以将预置条件的标识以及该权限信息共同进行哈希运算后得到的数值作为状态码。步骤102,判断所述表单中的每个控件的权限属性中是否包含所述状态码,得到所述每个控件的权限判断结果。其中,所述每个控件的权限属性是预先设置的。步骤103,根据所述每个控件的权限判断结果确定需要渲染的控件。其中,表单中的每个控件的权限属性是预先配置好的,对于表单中的任一个控件而言,权限属性可以是在该控件的已有属性字段的基础上扩展一部分新的字段,该每个控件可以配置多个功能的权限属性,其中每个控件的每个功能的权限属性中设置有该功能所授权(或禁止)的预置条件的状态码,从而当获取某一预置条件的状态码后,将该状态码分别与表单中的每个控件的权限属性中设置的状态码进行比较,就可以确定哪些控件的哪些功能对该预置条件授权(或禁止),从而就可以确定需要渲染哪些控件,以及每个需要渲染的控件的渲染程度。步骤104,根据每个需要渲染的控件的权限判断结果进行所述每个需要渲染的控件的自渲染。其中,根据每个需要渲染的控件的权限判断结果就可以得知每个需要渲染的控件中有哪些功能(例如可见、可编辑等)对该控件授权(或禁止),可以确定该控件的渲染程度,从而每个控件可以渲染成权限属性所规定的程度。本公开提供的用于控件渲染的表单权限控制方法中,当预置条件访问表单时,获取所述预置条件的状态码,从而可以根据所述每个控件的预先设置的权限属性来判断所述表单中的每个控件的权限属性中是否包含所述状态码,得到所述每个控件的权限判断结果,并根据所述每个控件的权限判断结果确定需要渲染的控件,从而可以根据每个需要渲染的控件的权限判断结果进行所述每个需要渲染的控件的自渲染。由于不需要预先生成大量权限控制数据,因此能够降低数据存储量,并且由于各个控件可以根据权限判断结果进行自渲染,因此避免了有现有遍历处理的性能消耗问题,能够降低性能消耗。需要说明的是,在图1所示的方法之前,首先需要对表单中的控件的权限属性以及预置条件对应的权限进行设置,图2是根据本公开一实施例示出的另一种用于控件渲染的表单权限控制方法的流程图,参见图2,在图1所示的方法之前,该方法可以包括以下步骤:步骤105,为所述表单中的各个控件设置权限属性。示例的,可以在各个控件的已有属性字段的基础上扩展一部分新的字段,用于表示该控件的不同功能的权限,例如可以设置visible、editable作为某个控件的权限属性,分别表示该控件的可见权限和可编辑权限的属性。步骤106,获取各个预置条件的状态码。各个预置条件可以指可能访问表单的所有预置条件,其中一个预置条件可能访问一个或多个表单,如步骤101中所述,状态码是用来表示预置条件身份的信息,对于每一个预置条件而言具有唯一性。示例的,该状态码可以为:预置条件的标识(比如ID);或者,将该预置条件的标识进行哈希计算得到的哈希值;或者,将该预置条件的标识以及所述预置条件的属性信息进行哈希计算得到的哈希值,所述预置条件的属性信息包括:所述预置条件的权限、级别中的至少一者。其中,对于级别,如果预置条件是某个人,则级别可以是这个人的职务、用户等级等,如果预置条件是某个业务环节或者网络链接,则级别可以是它们的优先级、重要级别等等。步骤107,将各个预置条件的状态码添加至对应的控件的权限属性中。在获取各个预置条件的状态码后,根据每个预置条件实际拥有的权限,将每个预置条件的状态码添加在与其权限对应的控件的权限属性中,以控件A为例,假设控件A具有权限属性包括:visible(可见)、editable(可编辑)两个属性,分别表示该控件A的可见权限和可编辑权限,如果访问者张三具有可见控件A的权限但是没有编辑控件A的权限,则可以将张三的状态码添加到控件A的visible中,但不能添加到editable中。图3是根据本公开一实施例示出的又一种用于控件渲染的表单权限控制方法的流程图,参见图3,上述步骤102中所述的判断所述表单中的每个控件的权限属性中是否包含所述状态码,得到所述每个控件的权限判断结果的步骤可以包括:步骤1021,获取预置条件的状态码后,向所述每个控件发送包含所述状态码的状态码更新事件。步骤1022,所述每个控件收到状态码更新事件后,获取所述状态码。步骤1023,所述每个控件按照预设的顺序逐个对比所述每个控件的权限属性中是否包含所述状态码,得到所述每个控件的权限判断结果。其中,每个控件的权限属性不限于是授权属性还是禁止属性,例如对于控件的可见性,其权限属性既可以是visible,也可以是invisible。下面以第一控件为例进行说明(所述第一控件为所述每个控件中的任一控件):所述每个控件的权限属性为授权属性时,所述判断所述表单中的每个控件的权限属性中是否包含所述状态码,得到所述每个控件的权限判断结果包括:判断第一控件的权限属性中是否包含所述状态码;当所述第一控件的权限属性中包含所述状态码时,确定所述第一控件对所述预置条件已授权;当所述第一控件的权限属性中不包含所述状态码时,确定所述第一控件对所述预置条件未授权。或者,所述每个控件的权限属性为禁止属性时,所述判断所述表单中的每个控件的权限属性中是否包含所述状态码,得到所述每个控件的权限判断结果的步骤包括:判断第一控件的权限属性中是否包含所述状态码;当所述第一控件的权限属性中包含所述状态码时,确定所述第一控件对所述预置条件未授权;当所述第一控件的权限属性中不包含所述状态码时,确定所述第一控件对所述预置条件已授权。从而在步骤1023后,执行步骤103所述的根据所述每个控件的权限判断结果确定需要渲染的控件,以及步骤104所述的根据每个需要渲染的控件的权限判断结果进行所述每个需要渲染的控件的自渲染。还是以控件A为例,假设控件A具有权限属性包括:visible、editable两个属性,分别表示该控件A的可见权限和可编辑权限,当张三访问表单时,表单向表单中的控件发送状态码更新事件,当控件A收到状态码更新事件后,获取张三的状态码,并根据张三的状态码访问控件A的editable属性,从而能够判断控件A的editable属性是否存在张三的状态码,若存在则说明张三具有控件A的编辑权限,若不存在张三的状态码则说明张三没有控件A的编辑权限;而后再根据张三的状态码访问控件A的visible属性,从而能够判断控件A的visible属性是否存在张三的状态码,若存在则说明张三具有控件A的可见权限,若不存在张三的状态码则说明张三没有控件A的可见权限。假设张三具有控件A的可见权限,但是没有控件A的编辑权限,则控件A根据这个权限判断结果进行自渲染并展现给张三,张三对完成渲染的控件A只能看见但是不能编辑。比如控件A是某业务的审批控件,张三只能看到上级的审批结果,但是不能进行编辑。因此,通过上述技术方案,由于不需要预先生成大量权限控制数据,因此能够降低数据存储量,并且由于各个控件可以根据权限判断结果进行自渲染,因此避免了有现有遍历处理的性能消耗问题,能够降低性能消耗。图4是根据本公开一实施例示出的一种用于控件渲染的表单权限控制装置的框图,所述装置400可以用于执行上述图1~3任一所示的方法,参见图4,所述装400包括:获取模块410,用于当预置条件访问表单时,获取所述预置条件的状态码;判断模块420,用于判断所述表单中的每个控件的权限属性中是否包含所述状态码,得到所述每个控件的权限判断结果;控件确定模块430,用于根据所述每个控件的权限判断结果确定需要渲染的控件;渲染模块440,用于根据每个需要渲染的控件的权限判断结果进行所述每个需要渲染的控件的自渲染。可选的,所述预置条件的状态码包括:所述预置条件的标识;或者,将所述预置条件的标识进行哈希计算得到的哈希值;或者,将所述预置条件的标识以及所述预置条件的属性信息进行哈希计算得到的哈希值,所述预置条件的属性信息包括:所述预置条件的权限、级别中的至少一者。可选的,所述每个控件的权限属性为授权属性时,所述判断模块420用于:判断第一控件的权限属性中是否包含所述状态码;所述第一控件为所述每个控件中的任一控件;当所述第一控件的权限属性中包含所述状态码时,确定所述第一控件对所述预置条件已授权;当所述第一控件的权限属性中不包含所述状态码时,确定所述第一控件对所述预置条件未授权。可选的,所述每个控件的权限属性为禁止属性时,所述判断模块420用于:判断第一控件的权限属性中是否包含所述状态码;所述第一控件为所述每个控件中的任一控件;当所述第一控件的权限属性中包含所述状态码时,确定所述第一控件对所述预置条件未授权;当所述第一控件的权限属性中不包含所述状态码时,确定所述第一控件对所述预置条件已授权。可选的,所述预置条件包括访问所述表单的用户,或者访问所述表单的业务环节,或者访问所述表单的网络链接。可见,本公开提供的用于控件渲染的表单权限控制装置,通过在预置条件访问表单时,获取所述预置条件的状态码,从而可以根据所述每个控件的预先设置的权限属性来判断所述表单中的每个控件的权限属性中是否包含所述状态码,得到所述每个控件的权限判断结果,并根据所述每个控件的权限判断结果确定需要渲染的控件,从而可以根据每个需要渲染的控件的权限判断结果进行所述每个需要渲染的控件的自渲染。由于不需要预先生成大量权限控制数据,因此能够降低数据存储量,并且由于各个控件可以根据权限判断结果进行自渲染,因此避免了有现有遍历处理的性能消耗问题,能够降低性能消耗。以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1