一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

组件间依赖关系交叉联动方法、装置及存储介质与流程

2022-02-22 19:14:58 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,尤其涉及一种组件间依赖关系交叉联动方法、装置及存储介质。


背景技术:

2.随着信息化不断渗透在全社会的各个领域,萌生了诸多前端的展现的需求,对展示效果、页面交互都提出了更高的要求。交互式大屏展示是众多需求中的一个,交互式大屏需求的特点是业务需求变化快,响应要求及时迅速,同时,其复用性差,只能针对某种业务场景定制展示界面。这就要求有一个前端工具能够满足这众多的需求。拖拽式大屏设计工具应运而生,拖拽式大屏设计工具的难点之一在于组件之间依赖关系的交叉联动处理。能引起一个组件状态发生变化的因素有很多,一个组件状态变化将引起一些列组件的连锁响应,如何高效且精准地处理组件之间的相互依赖与影响,成为拖拽式大屏设计工具的关键点。


技术实现要素:

3.本发明所要解决的技术问题是针对现有技术存在的问题,提供一种组件间依赖关系交叉联动方法、装置及存储介质。
4.为解决上述技术问题,本发明实施例提供一种组件间依赖关系交叉联动方法,包括:将产生组件状态改变因素的组件作为当前组件,并触发当前组件的数据传递更新机制;当前组件的组件状态更新过程执行完成后,将当前组件的状态机信号灯设置为false,并触发所有订阅当前组件的后置组件的数据传递更新机制;其中,组件间建立有订阅与被订阅的依赖关系,每个组件上设置有是否等待的状态机,状态机设置指示组件状态的状态机信号灯,状态机信号灯有true和false两个取值;数据传递更新机制包括:如当前组件所订阅的所有前置组件的状态机信号灯均为false,则将所有订阅当前组件的后置组件的状态机信号灯设置为true,并执行当前组件的组件状态更新过程。
5.为解决上述技术问题,本发明实施例还提供一种组件间依赖关系交叉联动装置,包括状态监听模块、信号灯设置模块和状态更新模块。
6.状态监听模块,用于将监听到的产生组件状态改变因素的组件作为当前组件,如当前组件所订阅的所有前置组件的状态机信号灯均为false,并触发当前组件的数据传递更新机制;信号灯设置模块,用于当前组件的组件状态更新过程执行完成后,将当前组件的状态机信号灯设置为false,并触发所有订阅当前组件的后置组件的数据传递更新机制;状态更新模块,用于执行组件状态更新过程;其中,组件间建立有订阅与被订阅的依赖关系,每个组件上设置有是否等待的状态机,状态机设置指示组件状态的状态机信号灯,状态机信号灯有true和false两个取值;数据传递更新机制包括:如当前组件所订阅的所有前置组件的状态机信号灯均为false,则将所有订阅当前组件的后置组件的状态机信号灯设置为true,并执行当前组件的组件状态更新过程。
7.为解决上述技术问题,本发明实施例还提供一种组件间依赖关系交叉联动装置,包括存储器、处理器及存储在所述存储器上的并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述技术方案所述的组件间依赖关系交叉联动方法。
8.为解决上述技术问题,本发明实施例还提供一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使所述计算机执行上述技术方案所述的组件间依赖关系交叉联动方法。
9.本发明的有益效果是:组件间建立有订阅与被订阅的依赖关系,每个组件上设置有是否等待的状态机,通过对状态机的监控,来决定一个组件是否渲染,从而有效保证组件状态变化的正常响应;并且可以有效防止订阅当前组件的直接后置节点无效更新和渲染,从而保证页面效率和可用性。
10.本发明附加的方面及其优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。
附图说明
11.图1为本发明实施例提供的组件间依赖关系交叉联动方法流程图;
12.图2为本发明实施例提供的组件间订阅关系示意图;
13.图3为本发明实施例提供的组件间依赖关系交叉联动装置结构框图。
具体实施方式
14.以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
15.需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
16.图1为本发明实施例提供的组件间依赖关系交叉联动方法流程图。如图1所示,该方法包括:
17.s110,将产生组件状态改变因素的组件作为当前组件,并触发数据传递更新机制;
18.其中,组件间建立有订阅与被订阅的依赖关系,在建立组件间订阅与被订阅的依赖关系时,当监测到有循环依赖时自动阻断依赖。每个组件上设置有是否等待的状态机,状
态机设置指示组件状态的状态机信号灯waiting,waiting有两个取值,分别是true和false。
19.数据传递更新机制包括:如当前组件所订阅的所有前置组件的状态机信号灯均为false,则将所有订阅当前组件的后置组件的状态机信号灯设置为true,并执行当前组件的组件状态更新过程。组件状态更新过程包括:更新组件输入,进而执行页面渲染,页面渲染完成后更新组件输出。
20.当某个组件状态发生变化且满足组件状态更新条件(组件状态更新条件为:当前组件所订阅的所有前置组件的状态机信号灯均为false)时,就将所有依赖于该组件的组件的状态机信号灯waiting设置为true,并触发当前组件的组件状态更新过程。
21.也就是说,当前组件所订阅的所有前置组件的状态机信号灯均为false时,才可对当前组件进行更新,本发明实施例中,当监听到当前组件的组件状态改变因素且满足组件状态更新条件时,将所有订阅当前组件的后置组件的状态机信号灯设置为true,从而可以有效防止订阅当前组件的直接后置节点无效更新和渲染,保证页面效率和可用性。
22.组件状态改变因素可以包括:组件自身设置改变、输入值改变以及新增或取消订阅其他组件等;上述改变都会引起组件状态的改变。
23.s120,当前组件的组件状态更新过程执行完成后,将当前组件的状态机信号灯设置为false,并触发所有订阅当前组件的后置组件的数据传递更新机制。
24.图2为本发明实施例提供的组件间订阅关系示意图。例如,当组件d订阅了组件a、组件b和组件c,组件d又被组件e、组件f和组件g订阅。当监听到组件d产生组件状态改变因素(如组件d的自身设置发生改变),则触发组件d的数据传递更新机制。
25.即如组件a、组件b和组件c状态机信号灯均为false,则将组件e、组件f和组件g的状态机信号灯设置为true,并执行组件d的组件状态更新过程。组件d的更新过程包括:先更新组件d的输入值,再进行页面渲染,进而更新组件d的输出值。
26.组件d的输出值发生改变,那么组件e、组件f和组件g的输入值必然发生改变,也就是说组件e、组件f和组件g产生了组件状态改变因素。如,组件e和组件f所订阅的所有前置组件(图中未示出)的状态机信号灯均为false时,则分别将订阅组件e和组件f的所有后置组件(图中未示出)的状态机信号灯设置为true,并执行组件e和组件f的组件状态更新过程,从而依次递推传递数据更新过程。
27.再如,组件g所订阅的所有前置组件(图中未示出)中存在状态机信号灯为true的组件,则组件g暂时不执行组件状态更新过程,等待组件g所订阅的所有前置组件的状态机信号灯均为false时,再执行组件g的组件状态更新过程。
28.组件间依赖关系交叉联动方法还包括预先定义组件的基类,所述组件的基类包括:组件输入、组件输出、组件等待状态、发布者列表、订阅者列表、订阅指定组件的方法、取消订阅指定组件的方法、更新当前组件输入值的方法和组件输出值监听方法。
29.上述实施例中,通过给组件的基类unit定义相关的数据结构,由组件基类:unit生成的实例具备以下属性、方法以及特性,从而实现组件依赖关系和相关的数据传递更新机制。
30.具体地,unit生成的实例具备以下属性、方法以及特性:
31.组件输入:input属性;
32.组件输出:output属性;
33.组件的等待状态:waiting属性(当前组件所订阅的所有前置组件的状态机信号灯均为false时,说明当前组件可以更新输入值;当前组件所订阅的所有前置组件的状态机信号存在true时,说明当前组件不可以更新输入值);
34.发布者列表:publishers属性(当前组件所订阅组件的组件列表);
35.订阅者列表:subscribers属性(订阅当前组件的组件列表);
36.订阅指定组件的方法:subscribe(componentid);
37.取消订阅指定组件的方法:unsubscribe(componentid);
38.更新当前组件输入值的方法:updateinput();
39.对组件输出值进行监听:当组件输出值变化后执行对应操作。
40.1)订阅指定组件的方法包括:检查当前组件所要订阅的指定组件的组件id是否在当前组件的发布者列表中,如果已经存在,则不进行重复订阅;如果不存在,则将指定组件添加到当前组件的发布者列表中。
41.假设组件a要订阅组件b,首先检查要订阅的组件b的组件id是否已经在当前组件a的发布者列表里:
[0042]-如果已存在,说明已经订阅过,不进行重复订阅。
[0043]-如果不存在,则将组件b添加到当前组件a的发布者列表里,并将组件a添加到组件b的订阅者列表里。然后判断是否更新组件a输入值,确认满足更新条件的情况下,触发当前组件a的updateinput()方法。
[0044]
2)取消订阅指定组件的方法包括:在当前组件的发布者列表中查找指定组件并去除所述指定组件,在指定组件的订阅者列表中查找当前组件并去除所述当前组件。
[0045]
假设组件a要取消订阅组件b,在当前组件a的发布者列表里查找组件b并去除,然后从组件b的订阅者列表里去除组件a。判断是否更新组件a输入值,确认满足更新条件时触发当前组件a的updateinput()方法。
[0046]
3)更新当前组件输入值updateinput()。
[0047]
检查自己的publisher里所有组件的waiting状态是否都是false,如果不是,不进行操作,等待下一次的筛选器的output更新。当订阅的筛选器组件状态全都成为waiting=false,才对当前组件的input进行更新。更新完毕后,触发updateoutput事件,业务组件接收到此事件后,可以根据业务特点定义各自的具体实现输出值的更新。
[0048]
4)对组件输出值进行监听
[0049]
当前组件的输出值更新后,依赖当前组件的所有组件及其后代依赖都应该开始更新其输入值。因此需要遍历当前组件的订阅者列表,把里面每个组件的waiting状态设为true,并执行各自的updateinput()方法,然后递归遍历其订阅者列表,将所有组件状态设为waiting为true。
[0050]
一旦组件的输出值更新,其状态应该是waiting=false,其后代订阅者的状态都应是waiting=true,并且执行当前组件的订阅者的updateinput方法。
[0051]
如图3所示,本发明实施例还提供一种组件间依赖关系交叉联动装置,包括状态监听模块310、信号灯设置模块320和状态更新模块330。
[0052]
状态监听模块310用于将监听到的产生组件状态改变因素的组件作为当前组件,
并触发当前组件的数据传递更新机制;信号灯设置模块320用于当前组件的组件状态更新过程执行完成后,将当前组件的状态机信号灯设置为false,并触发所有订阅当前组件的后置组件的数据传递更新机制;状态更新模块330用于执行组件状态更新过程。
[0053]
其中,组件间建立有订阅与被订阅的依赖关系,每个组件上设置有是否等待的状态机,状态机设置指示组件状态的状态机信号灯,状态机信号灯有true和false两个取值;数据传递更新机制包括:如当前组件所订阅的所有前置组件的状态机信号灯均为false,则将所有订阅当前组件的后置组件的状态机信号灯设置为true,并执行当前组件的组件状态更新过程。
[0054]
本发明实施例还提供一种组件间依赖关系交叉联动装置,包括存储器、处理器及存储在所述存储器上的并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述实施例提供的组件间依赖关系交叉联动方法。
[0055]
本发明实施例还提供一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使所述计算机执行上述实施例的组件间依赖关系交叉联动方法。
[0056]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0057]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
[0058]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
[0059]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0060]
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0061]
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献