具体实施方式
现在参考附图描述本发明,在全部附图中,相同的参考标号用于指相同的元素。在下面的描述中,为了说明起见,阐述了许多具体细节,以便提供对本发明的全面理解。然而显然的是,本发明可以在没有这些具体细节的情况下实践。在其它实例中,众所周知的结构和设备以方框图形式示出,以便于描述本发明。
如在本申请中使用的,术语“组件”和“系统”指的是计算机相关的实体,或者是硬件、软硬件的组合、软件、或者是执行中的软件。例如,组件可以是,但不限于,运行于处理器上的进程、处理器、对象、可执行代码、执行的线程、程序和/或计算机。作为说明,运行于服务器上的应用程序和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,并且一个组件可以定位在一个计算机内和/或分布在两个或多个计算机之间。
如在此使用的,术语“推断”和“推论”一般指根据一组通过事件和/或数据捕捉的观察资料推理或推断系统、环境和/或用户的状态的过程。例如,推论可以用于标识特定的上下文或动作,或者可以产生状态上的概率分布。推论可以是概率性的,即基于对数据和事件的考虑,计算感兴趣的状态上的概率分布。推论也可以指用于从一组事件和/或数据组成较高级事件的技术。这样的推论其结果是从一组观察的事件和/或存储的事件数据构建新的事件或动作,无论这些事件是否在时间上紧密相关,以及这些事件和数据是来自一个还是若干个事件和数据源。
尽管示出并且参考附图描述了向用户显示信息的某些方法,但相关领域的技术人员将认识到,可以使用各种其它替换方案。在这里可交换地使用术语“屏幕”、“网页”和“页面”。页面或屏幕作为显示描述、作为图形用户界面、或者通过在屏幕(例如,个人计算机、PDA、移动电话或者其它合适的设备)上描绘信息的其它方法来存储和/或传输,其中要在页面上显示的布局和信息或内容存储在存储器、数据库或其它存储设备中。
先参考附图,图1例示按照本发明便于设计对象模型的设计工具系统100。给定包括有向关系的对象(例如类)的一个或多个图形的计算机可读表示,系统100自动创建一个或多个对象图表(例如,类图表),它们将这些对象图表描绘成显示对象关系和属性的可编辑的类似树的结构。为支持这些,系统100还包括一个布局组件102,它接收一个或多个图形作为输入,并且将这一个或多个图形转换成可编辑的类似树的结构104。系统100还包括显示组件106,它将可编辑的类似树的结构104显示为类似树的结构图表108,并且便于用户与其交互。该工具可以用于打开、编辑和保存现有的对象模型文件和/或创建新对象模型文件。
这种新颖方法对于表示定义域专用语言的概念的类的图形定义特别有用。这样的图形经常被称为对象模型、元模型、域模型、抽象句法或语法。这些图形自然地具有所使用的类似树的结构。本领域的技术人员要意识到,所揭示的新颖方法可以应用于其中有向关系很重要的任何种类的对象模型。
图2例示按照本发明便于设计对象模型的一种方法。尽管为了说明的简单起见,在此例如以流程图形式所示的一个或多个方法被显示或描述成一系列动作,但应该理解和意识到,本发明不受动作顺序的限制,因为按照本发明,有些动作可以按不同的顺序和/或与在此所示和描述的其它动作同时发生。例如,本领域的技术人员将理解和意识到,方法可替换地表示为诸如状态图中的一系列相关的状态或事件。而且,并非所有例示的动作都是实现按照本发明的方法所必需的。
在200,该设计器工具系统接收图形形式的对象模型的计算机可读表示,这些图形包括一种或多种不同的有向关系。在202,设计器工具利用该图形低层的类似树的结构,并且将这些图形和关系处理成对象(例如类对象)的单个可编辑的类似树的结构。在204,该结构描绘对象的关系和特性。在206,对象的类似树的结构可以作为单个对象图表被呈现给用户,或者部分地在用户访问的若干图表上呈现给用户。
例如,该结构可以被剖析成分离的图表、引用和嵌入的图表以及其它继承的图表。可替换地,单个结构可以被剖析成在相应图表上显示的两个子结构。在208,使类似树的结构成为交互式的,使得用户可以执行许多不同操作。这些操作包括添加和删除对象(例如类),处理对象的二元和继承关系、折叠(或收缩)与展开关系层次、与特性交互、重新定位对象和对象特性、以及在这些对象之间搜索与导航。
现在参考图3,例示了本发明的设计器工具的属性。它们的每一个将在下面另外结合图5来描述。在300,自动而非象在常规系统中那样手工地布局图表。用户的主要任务是输入对象是什么(例如类)及其关系,并且该工具相应地布局结构。然而,用户可以作出一些布局的重新安排。例如,用户可以指示什么对象要显示在结构的左边,以及以辅助节点要以什么顺序出现。其它的每一件事,诸如间距、标签的定位、对象和结构的大小以及线的形状是自动确定的。组织自然地从类似树的结构左上角的根节点(或对象)流出。通过这么做,该结构表示一个对象可以包含其它对象。类似树的结构的从左至右流动是由诸如嵌入、引用或继承关系等有向关系来驱动的。在整个描绘上可以有许多这样的树。语言定义尤其具有那种结构。因而,所揭示的设计器工具支持这样的语言开发。
将这与常规的统一建模语言(UML)工具对比,UML没有类似树的结构的概念,但在对象及对象之间关系方面较简单。UML显示相同的节点以及节点之间的线。然而,从左上角的根节点起发出张开的线,其下的节点必须被手工输入,并且按照用户手工定义的顺序。
在302,另一个工具属性是按照显示屏幕资源以紧凑和有效的方式显示结构图表。这可以自动完成的一种原因是在各种节点之间的线是通道化的。通过将标签和其它装饰放置在线的中间而不是靠近或处于线端就使之成为可能。例如,根节点在单个点处连接到其它节点,类似树的结构的其它节点也是如此。另外,标签(线装饰)被安排在线上,以进一步促进图表的紧凑化。
在304,节点(或对象)是不相互交叉的线的互连。这是通过在结构中提供一个定义对象的位置,且随后在其它结构位置复制该节点来实现的。这些其它位置随后引用对象定义位置。在每个节点处提供单个引用节点来减少通常与UML相关联的线混乱,而非从任何节点绘制回到单个节点的线。如在常规工具的情况下注意到的,当多条线开始或终止于一个节点的多个点时,线交叉的可能性大大增加。
该设计器工具的另一个属性是结构的诸部分可以展开或折叠,如在306所示,这是交互式方面的一部分。这使用户能够以不同方式查看结构,例如,聚焦于一部分而非另一部分。从节点之一路由出来的任何线从一个图形符号(在下文中称为分支符(twicky))发出。用户只需要选择该分支符来展开或折叠下面的子树部分。
在308,该工具促进线装饰的整齐和可读放置。例如,诸如Employees(职员)、Leader(领导)和Team(团队)等线标签自动地定位在靠近相应的线处。而且,角色关系符号(“类似二极管”的符号)是从终止线端移开的。常规的工具对于每条终止线将符号推到靠近终止节点。因而,按照惯例,终止节点与线装饰混在一起,使查看非常困难。这里,装饰聚集在连接线的中央,使更多信息能够被包括在装饰中。
在一个实现中,不允许用户调整线装饰的定位。在另一个实现中,构想该工具基于图表屏幕资源自动将装饰调整到最佳位置。在又一实施例中,还构想允许用户选择装饰(或者成组地或者单独地)并且沿着相关联的线拖到所希望的位置。
由该设计器工具显示的图表说明了低层图形的自然树结构,这是在310所示的属性。例如,图表可以描绘语法、对象模型、域模型、元模型或模式。可以绘制包括整个类似树的结构或其子树的不同图表,称为实例图表。整个类似树的结构规定实例图表将具有的形状。UML提供方框与线的完全任意的呈现,该呈现可以一点也不象实例的结构。因而,本发明的设计器工具帮助语言设计者更好地理解图表所表示的内容。
该设计器工具的另一个属性是编辑是直接了当的,如在312所示。设计器不需要在编辑图表的布局方面浪费时间。相反,常规工具可能要求用户决定节点如何连接、节点和线相对于其它节点的排列等等。
在314,该工具是可伸缩的,使得较大的对象模型可以被呈现为单个森林(它是树的集合),并且在大多数情况下,呈现在单个图表中。该设计器工具是经济的,具有重复的符号和节点。节点可以被添加或追加到现有的树分支,本质上向下挤推新节点并且横过该树而不增加混乱。按照惯例,非结构化的图形在添加更多的线和节点时以混乱方式扩展。本发明的工具利用GUI特征并且以有效方式扩展这些图表。例如,该工具提供滚动条、窗口尺寸调整和打印分页,以使用户更有效和生产性地进行交互。
另一个属性是设计器工具显示条理清楚的结构,它捕捉低层继承与关系图形的树结构,如在316所示。
图4例示可以使用本发明的设计器工具来执行的操作。在400,对象(例如类)可以被添加或删除。尽管该描述指的是类对象,但要意识到,这些操作可以在任何类型的对象上执行。可以在结构的左边任何现有类之下添加新类。当被删除时,类及其所有相关联的关系从结构中移除。
在402,该工具可以在类的二元关系上处理操作。可以在现有类之间添加二元关系。关系是有向的。使用从源节点(或类)到目标节点(或类)的线,在源类之下以“L”形状绘制关系。该线与来自该源类的任何其它关系线通道化在一起。目标类的嵌入显示在关系的另一端。二元关系也可以在现有类与结构背景之间添加。创建新的目标类并且在源与目标类之间创建新的关系。
当删除关系时,从结构中移除它。所有其它结构元素保持在适当位置。然而应该注意,可以执行整理操作,它启动可以将树重新结构化为更有效的描绘的重新布局操作。
关系操作还包括将嵌入关系切换到引用关系,和将引用关系切换回嵌入关系,服从多样性的约束。嵌入父节点具有为一的最大多样性。这或者可以驱动用户交互,从而防止创建无效的图表,或者可以由后续的确认步骤来检测。另外,定义和嵌入关系对于相同的类可以交换。
在404,可以处理类的继承关系。可以在现有类之间添加继承关系。注意,继承关系被约束为非循环的,无论在编辑时还是在以后。子类的用法在父类之下的继承箭头的头部示出。继承关系可以在现有类与图表背景之间添加。新的子类与继承关系一起创建。继承关系也可被删除,且一旦执行,该关系就从结构中移除。所有其它结构关系保持。
如下所示,可以执行结构的重新布局操作,如在406所示,这使所有定义移动到服从当前选项的最优位置,并且相应地组织类的所有其它描绘。
在408,其中继承层次当前是展开的,如由第一个分支符中的减“-”符号所示,继承层次可以通过选择第一个分支符来折叠。在类之下的全部继承层次是折叠的,且由分支符中的“+”符号来代替。折叠的继承层次可以通过随后选择第一个分支符来展开。
在先前展开的地方,如由带有减“-”符号的第二个分支符表示的,可以通过点击第二个分支符来折叠关系层次。经由该关系到达的全部层次被折叠,并且第二个分支符被“+”符号代替。关系层次随后可以通过在显示加“+”符号时选择第二个分支符来展开。
在410,也可以处理对象特性。类的特性可以通过选择第三个分支符(在该分支符指减号时)在一个附着的“片(flap)”中显露出来。当特性片被打开时,在片中显示特性的类型和名称。特性片在再次被选择时消失,并且第三个分支符显示“+”符号。另外,当鼠标指针悬浮在类对象上时,例如,直接在显露特性片之处上方的区域,则临时打开特性片。特性也可以被添加到类或者从类中删除,使得特性在片打开时或者出现或者不出现。
在412,类和属性可以被重新定位。毗邻于图表左边的类可以被选择并且垂直地重新定位。这将对象按结构的从上至下顺序移动到新位置。另外,作为嵌入或引用关系的目标节点出现的类对象可以通过在源类的关系集合中垂直拖动来重新定位。其它方法也是可能的,例如,后移、前移、移到第一个、移到最后一个和移到这里。作为继承关系的子节点出现的类节点可以通过在源类的子节点集合中垂直地拖动来重新定位。其它方法也是可能的,例如,后移、前移、移到第一个、移到最后一个和移到这里。在另外的操作中,特性片内的特性可以被选择并且可以通过在该类对象列出的特性内垂直地拖动所选择的特性来重新定位。其它方法也是可能的,例如,后移、前移、移到第一个、移到最后一个和移到这里。
在414,该工具便于搜索操作。给出其用法之一,可以通过至少两种方法来搜索类的定义或使用。首先,选择类的任何描绘,并且随后调用一个操作来加亮其定义,并且在必要时滚动显示。其次,显示“边连接(side link)”,这是在图表的右手边处的一组线,它们将所选择的一个或多个类对象的定义连接到各自的用法。当用户将鼠标指针悬浮在一个用法上时,边连接临时地出现在图表的右手边,并且在对定义的引用之间指引用户。这利用了树结构化的布局和该工具的交互能力两者。
图5例示按照本发明的类的示例性类似树的结构500的布局,这些类构成组织图的语言的抽象句法。给出类对象Organization(组织)、Employee(职员)、Team(团队)的初始用户输入,其中职员有以下几种:Consultant(顾问)、Manager(经理)、Executive(主管)和VacantPosition(空位)。该工具自动地按照预定义的关系绘制彼此互连的线,其结果是自动生成的结构500。
结构500从左上角位置的根类对象“Organization”开始。在这个实现中,每个节点包括沿下边缘的三个小分支符符号502,它们便于相关联节点上的展开/折叠操作。在这种情况下,第一个且最左边的分支符(由类似于[-]的符号表示)允许继承层次的展开和折叠;第二个(或中间的)分支符允许关系的展开和折叠;以及第三个(或最右边的)分支符允许特性片的展开和折叠。要意识到,每个节点可以使用较大数量的这类分支符操作及其不同表示。例如,可以提供第四个分支符(圆形几何形状的)来显露与节点或元数据相关联的用户注释,诸如节点何时最后一次被修改。可替换地,可以提供更少量的分支符符号,但它们是多功能的,例如键击组合或者鼠标指针结合右击从同一分支符调用不同的操作。
在本例中,关系层次是展开的,因为已经选择了第二个分支符用于展开。从根节点发出的是Employee和Team节点,它们使用线通道化技术连接到Organization根节点,以定义对应于低层关系和继承图形的关系和继承。
Organization类节点通过利用本发明的通道化能力在单个点处连接,这与如UML等常规工具正相反。而且,Employees、Leaders和Teams的线装饰标签按照惯例是在线端处提供的,因此用线接触目标节点必须在目标节点上的不同点处发生,这造成在该节点处的文本和对象的潜在的混乱呈现。
注意,在图表上有若干标签为Employee的节点泡。来自根节点的分支Employees、Leaders和Teams各自具有Employee节点。本发明的设计工具自动将Employee节点放在定义性Employee类被定义处(即504的情形,其中Employee节点是粗体的)。为支持消除线交叉,在结构500中只引用定义性Employee类504的其它节点是由非粗体(或变灰)的节点或图形来表示的,例如Employee节点506。如在此使用的,术语定义性和非定义性应用于节点,并且术语嵌入和引用应用于弧线。还有该工具提供的其它操作,用于将定义从某个别的地方带到非定义节点,并且用于在定义性节点被移到的该位置处创建根节点。这些特征在布局上提供很大的控制,而不需要进行另外的工作。
注意,在主定义性Employee节点504之下,描绘了特性片508,它显露了称为String Title(串职务)和StringName(串名字)的属性特性。在本例中,定义性Employee节点504是结合这两个特性来定义的。在特性片508中可以使用和显露更多或更少数量的特性。这简单地意味着每个职员有一个职务和名字。默认地,当用户选择查看语法的全部结构时,不显露特性片。因而,在一个实现中,用户必须选择第三个(或右边的)分支符来显露相关联的特性。在另一个实现中,当用户将鼠标指针悬浮在第三个分支符符号上时,特性片临时出现以显露特性。随后可以通过选择第三个分支符来使这些特性永久地出现。因而,在定义语言和类似树的结构时,该设计器工具便于聚集在用户认为很重要的方面上。
该设计器工具使用角色符号510(与“二极管”符号相似)来提供关系角色的显式表示。这是符号装饰的自然位置,它们给出对于关系的附加意义。例如,在根Organization节点和非定义性Employee节点512之间的关系具有名为Employees(职员)的角色510。这个角色510用加号“+”来标记,表示该组织具有一个或多个Employee实例来担任称为Employees的角色。这个反白的角色标记为“1”,表示每个Employee精确地由一个组织使用。
该工具还使用图表惯例(例如彩色密度和/或虚或点划线)来区分类的定义、类在嵌入或继承关系中的用法和类在引用关系中的用法。例如,如果Employee类512通过引用关系连接到根类Organization 502,如由互连虚线表示的。可替换地,Employee类504通过嵌入关系连接到根类Organization 502,如由互连实线表示的。
在示例图表中,非定义性(或使用)类描绘被呈现为淡灰,而定义性类被显示得更明显(例如深蓝)。定义性和非定义性类描绘可以通过分支符的不存在与存在来决定性地区分,使得定义性类包括分支符而非定义性类不包括。线的密度可以表示一种关系是嵌入的而另一种是引用。在本例中,不同种类关系中的差异可以通过例如使用点划线用于引用关系来表示。要意识到,这些表示可以按照许多不同定义的惯例,诸如颜色、线型和粗细以及其它图形标记来作出。
角色符号被填充或未被填充。当从该图表产生代码(例如在C#中)时,如果角色符号被填充,则在对应于该角色的类和方法上生成一个特性。该设计器工具便于只显示关系的重要特性,例如,在根节点Organization 502与引用节点Employee512之间表示的线。因而,线端的描绘结合符号(例如角色符号)使用户能够显示附加的属性。而且,这些装置(标签Employees和角色符号510)定位在线中间附近的事实便于对它们的颜色和形状进行改变以表示角色本身的若干特性,因为在它们周围有大量空间。
经理可以有许多向他或她汇报的职员。在标签IndirectReports(间接报告)的例子里,职员可以间接地向许多经理汇报,如在角色符号514的右手边上非粗体方框中的星号所示。在下面是Reports(报告)标签和带有“0”的粗体化方框。这意味着职员可以或者不可以直接向经理汇报。因此在这个例子中,使用四个符号:“0”表示可以/不可以;“1”表示总是具有这种关系;星号“*”表示可具有任意数量;以及加号“+”表示至少一个,但可以有更多。
注意,定义性Employee节点504的第一和第三个分支符被选择,第三个分支符显露与其相关量的特性。第一个分支符将继承关系扩展到定义性Consultant节点、定义性Manager节点和定义性VacantPosition节点。这些是父Employee节点504的子定义性节点,如由粗体和通道化线516所示,并且箭头端指向父Employee节点504。同样,如由父定义性Manager节点的第一个分支符扩展的继承关系显露子定义性Executive节点,如由粗体和互连线518的箭头端所示。
现在参考图6,例示了按照本发明的类似树的结构图表602的设计器屏幕截图600。设计器的中央区域或工作空间604显示要编辑的类似树的结构图表602。工作空间604的左边是工具箱606,它提供一组可被拖到工作空间604上并放在合适的位置的元素。工作空间604的右边是提供一种替换方法来查看模型602的资源管理器606,以及显示所选择元素的详细特性的特性网格610。
为更好地理解符号的操作,提供下列定义来区分下列类的描绘:定义-一种描绘,示出类的完整定义,并且一个类只能有一个定义;使用-任何非定义性使用,例如,一种示出通过嵌入、继承或引用相关的类的描绘,如另一个类的子类,并且在图表中一个给定类可以有许多这样的描绘。
当布局图表时,该工具自动确定定义性类的最优位置。对此有若干选项,它们适用于不同目的。这些选项中有几个经常可同时应用:如何排列这些选项的优先顺序和选择它们取决于该工具的用户。这些选项或规则是:在顶层处朝图表的左边显示定义;当一个类只嵌入在一个父类中时,显示嵌入在父类中的定义;当一个类嵌入在重要的父类中时,现时嵌入在该父类中的定义;当一个类具有超类时,显示作为从超类继承的定义;当一个类具有重要的子类时,显示作为重要子类的超类的定义;以及可通过象这样标记一个类来将这个类确定为“重要的”。
在一个组内垂直顺序可以由用户明确地改变。然而,一个规则可以是最初是字母顺序的,或者从用户选择的替换计算中得到的顺序。
还提供容易地从非定义性类导航到其定义性类的能力。这可以通过强制标记(例如加亮)与定义性类相关联的所有类来完成。例如,当用户选择一个非定义性类时,该工具自动加标签于或加亮定义性类、其它非定义性类或两者。另一个示例,例如涉及与变灰的使用节点,如Employees交互。如果用户想要被带往相应的定义性Employee节点,则一种方法是将鼠标指针悬浮在其上、显示一个菜单、选择该选项、并且到达所希望的点。
另一种方法是在用户悬浮在一个使用上时显示边连接,其中边连接指引用户的眼睛至定义性对象。在一个实施例中,用户可以用将用户带到定义性对象的实际连接代替灰色的非定义性节点。在另一个实现中,与边连接一起使用变灰的非定义性节点。在又一个实现中,例如,可以临时启用边连接3-5秒钟,以协助用户找到定义性节点。
仅作为一个示例,加亮或者其它图形指示也可以用于指示删除信息的传播。例如,当用户已经选择了一个节点要删除时,可以在所选择的节点和所有相关联节点、线和其它有关对象和符号上强制加亮,以给用户提供删除所选择节点或对象的结果的反馈。在另一个示例中,假定正在使用该技术来描绘动画人物的全部部件结构。那么运动的传播扮演重要的角色。在描绘汽车的设计的又一个示例中,颜色的传播是一个重要特征。通常,各种种类的信息可以沿弧线传播。
图7例示按照本发明作为多个图表的类似树的结构显示。工具100还便于处理较大结构,使得其显示在使用多个图表时更方便。布局组件102与前面一样处理输入,并且输出结构至显示组件104。之后,显示组件104处理所接收的结构,并且确定如何在该工具内作为图表来显示该结构。在这种情况下,将该结构显示为多个图表(表示为图表1,图表2,...,图表N)。可以在两个分开的图表中显示该结构,例如,第一个图表700和第二个图表702。
显示选项或规则可以包括,作为示例而非限制,继承和关系层次可以独立地显示在图表的不同区域或者不同图表中。其它子选项可以包括:所有类定义出现在关系层次上并且继承层次只包括类的使用;在关系层次中,相关的较先选项适用;以及所有类定义出现在继承层次上,且关系层次只包括使用和引用。
在一个更健壮的实现中,显示组件104与布局组件102通信以由布局组件102分析和协调类似树的结构的结构化。例如,如果在由布局组件102准备期间结构的初步“屏幕截图”发送到显示组件104,并且显示组件104处理该屏幕截图并估计该初步布局将需要五个单独的图表,这样的信息可以被反馈回布局组件102,以重新结构化树来减少显示所需要的图表数量。与这样的特征有关的进一步优化将在下面参考人工智能(AI)组件的实现来描述。
设计器工具还支持指定要在特定图表或图表的特定区域上集中注意力的特定类。这是通过标记或加标签于焦点类和相关类为重要的,并且以所选择的优先级应用上述选项来完成的。
图8例示使用AI组件802的设计器工具系统800,AI组件802便于本发明方法对一个或多个学得特征的自动化。本发明(例如,结合选择)可以使用各种基于AI的方案来完成其各种方面。例如,确定给定用户如何更喜欢让类似树的结构显示为图表的过程可以通过自动分类器系统或过程来促进。
分类器是一个函数,它将输入属性矢量x=(x1,x2,x3,x4,xn)映射到该输入属于一个类的置信度,即f(x)=confidence(class)。这样的分类可以使用基于概率和/或统计的分析(例如,分解成分析效用和成本)来预测或推断用户希望自动执行的动作。
支持矢量机(SVM)是可以使用的分类器的一个示例。SVM通过在可能输入的空间中找出超曲面来操作,其中超曲面试图将触发准则从非触发事件中分离。直观上,这使分类对于接近但不同于训练数据的测试数据是正确的。其它有向和无向模型分类方法包括,例如,单纯贝叶斯、贝叶斯网络、决策树、神经网络、模糊逻辑模型和提供可以使用的不同独立性模式的概率分类模型。如在此使用的分类也包括用于开发优先级模型的统计回归。
如从本发明说明书中容易意识到的,本发明可以使用显式训练(例如通过一般训练数据)的分类器和隐式训练(例如通过观察用户行为、接收外来信息)的分类器。例如,SVM通过分类器构造器和特征选择模块内的学习或训练阶段来配置。因而,分类器可以用于自动学习和执行许多功能,包括但不限制于下列。
在一个实现中,AI组件802便于按照预定准则确定要将结构划分成多少图表用于显示。这可以基于在结构中使用的数据类型。例如,在一个共享环境中,其中若干开发者正在同一文件上工作,每个开发者集中于该文件的不同方面,并且如果类似树的结构使用各种团队和功能的大组织图,则得到的图表可以基于开发者的给定焦点来确定。如果第一个开发者的焦点是财务,例如,将第一个开发者的登录信息或财务项输入该工具将自动使该工具在创建显示图表时重新结构化(例如,展开或收缩)树来强调结构的财务方面。
沿着同一条自动化线,可以为其焦点集中在与登录信息或其它输入项有关的特定类对象上的显示重新结构化树。如果第二个开发者正在与管理相关联的类对象上工作,则加标签于该类对象上的元数据可以用于基于某个输入数据自动打开模型文件至第二个开发者的该位置。
适当地设计AI组件802,使得该工具可以例如通过观察用户过去所作的布局选择来学习用户偏好,并且在与该用户将来的交互期间应用相似的重新布局算法。不同用户可具有布局规则的不同偏好。
另外,可以学习各种自动重新布局或整理算法。当用户首先布局图表时,这默认地可以是自动的。之后,可以为结构的最终整理而选择整理选项。另外,可以有用于支持该整理规则。一个用户可能更喜欢一组规则而不是另一组。而且,可以在图表层次处强制该规则,使图表在屏幕资源中更紧凑。例如,该工具在AI组件802的协助下可以学习按照先前用户的移动,或者例如按照平衡移动对象与对象的显示的成本的成本分析决定来将对象移动到空白处。
现在参考图9,例示了用于执行所揭示的体系结构的计算机的框图。为了给本发明的各种方面提供附加的环境,图9和下面的讨论旨在提供适合于实现本发明各种方面的计算环境900的简要概括描述。尽管已经在上面在可以在一个或多个计算机上运行的计算机可执行指令的一般上下文中描述了本发明,本领域的技术人员将认识到,本发明还可以结合其它程序模块和/或作为软硬件组合来实现。
通常,程序模块包括例程、程序、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。而且,本领域的技术人员将意识到,本发明方法可以用其它计算机系统配置来实践,包括单处理器或多处理器计算机系统、小型机、大型机、以及个人计算机、手持式计算设备、基于微处理器的或可编程消费电子产品等等,它们都可以有效地耦合到一个或多个相关联的设备。
本发明的说明性方面还可以在分布式计算环境中实践,其中某些任务是由通过通信网络连接的远程处理设备来执行的。在分布式计算环境中,程序模块可以位于本地或远程存储器存储设备中。
计算机一般包括各种各样计算机可读介质。计算机可读介质可以是可以由计算机访问的任何可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储信息的方法和技术实现的任何易失性和非易失性、可移动和不可移动介质,这些信息诸如计算机可读指令、数据结构、程序模块或其它数据。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字视频盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者任何可以用于存储所需信息并可以由计算机访问的其它介质。
通信介质一般具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传输介质。术语“已调制数据信号”指以将信息编码在信号中的方式设置或改变其一个或多个特性的信号。作为示例,而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外或其它无线介质。任何上述各项的组合也应该包括在计算机可读介质的范围内。
再次参考图9,例示了用于实现本发明各方面的示例性环境900,它包括计算机902,计算机902包括处理单元904、系统存储器906和系统总线908。系统总线908将包括但不限于系统总线906在内的系统组件耦合到处理单元904。处理单元904可以是任何各种市场上可购买的处理器。双微处理器和其它多处理器体系结构也可作为处理单元904使用。
系统总线908可以是若干类型总线结构中的任一种,它们可进一步与存储器总线(带有或不带有存储器控制器)、外设总线和使用各种各样市场上可购买的总线体系结构的局部总线互连。系统存储器906包括只读存储器(ROM)910和随机存取存储器(RAM)912。基本输入/输出系统(BIOS)存储在诸如ROM、EPROM、EEPROM等非易失性存储器910中,其中BIOS包含如在启动期间帮助在计算机902内的元素之间传送信息的基本例程。RAM 912还可以包括高速RAM,如静态RAM,用于高速缓存数据。
计算机902还包括内部硬盘驱动器(HDD)914(例如EIDE、SATA),其中内部硬盘驱动器914也可被配置为在合适的机箱(未示出)中供外部使用;磁软盘驱动器(FDD)916(例如读写可移动盘918);以及光盘驱动器920(例如读CD-ROM盘922,或者读写其它高容量光介质,如DVD)。硬盘驱动器914、磁盘驱动器916和光盘驱动器920可以分别通过硬盘驱动器接口924、磁盘驱动器接口926和光盘驱动器接口928连接到系统总线908。例如,用于外部驱动器实现的接口924包括通用串行总线(USB)和IEEE 1394接口技术的至少之一或两者。其它外部驱动器连接技术都是本发明所构想的。
驱动器及其相关联的计算机可读介质提供数据、数据结构、计算机可执行指令等等的非易失性存储。对于计算机902,驱动器和介质容纳以合适数字格式的任何数据的存储。尽管上面的计算机可读介质的描述提到了HDD、可移动磁盘和可移动光介质如CD或DVD,但本领域的技术人员应该意识到,计算机可读的其它类型的介质,诸如zip驱动器、磁带盒、闪存卡、盘式磁带等等,也可以在示例性操作环境中使用,并且进一步,任何这样的介质可包含用于执行本发明方法的计算机可执行指令。
许多程序模块可存储在驱动器和RAM 912中,包括操作系统930、一个或多个应用程序932、其它程序模块934和程序数据936。操作系统、应用程序、模块和/或数据的全部或部分也可以高速缓存在RAM 912中。要意识到,本发明可以用各种市场上可购买的操作系统或者操作系统的组合来实现。
用户可以通过一个或多个有线/无线输入设备,例如键盘938和定点设备(如鼠标940)来将命令和信息输入到计算机902。其它输入设备(未示出)可包括话筒、IR遥控器、操纵杆、游戏垫、输入笔、触摸屏等等。这些和其它输入设备常常通过输入设备接口942(它耦合到系统总线908)连接到处理单元942,诸如并行端口、IEEE 1394串行端口、游戏端口、USB端口、IR接口等等。
监示器944或其它类型的显示设备也通过接口,如视频适配器946连接到系统总线908。除监示器944之外,计算机一般包括其它外设输出设备(未示出),诸如扬声器、打印机等等。
计算机902可使用通过有线和/或无线通信到一个或多个远程计算机,如远程计算机948的逻辑连接在网络化环境中运行。远程计算机948可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其它常见的网络节点,并且一般包括相对于计算机932所述的许多或全部元素,为了简单起见,只例示了存储器存储设备950。所描绘的逻辑连接包括到局域网(LAN)952和/或较大网络,例如广域网(WAN)954的有线/无线连接。这样的LAN和WAN网络环境在办公室和公司中是很常见的,并且促进企业级网络,如企业内部互联网,它们全部都可连接到全球通信网络,例如因特网。
当在LAN网络环境中使用时,计算机902通过有线和/或无线通信网络接口或适配器956连接到局域网952。适配器956可促进到LAN 952的有线或无线通信,LAN925也可包括布置在其上的用于与无线适配器956通信的无线接入点。
当在WAN网络环境中使用时,计算机902可以包括调制解调器958,或者连接到WAN 954上的通信服务器,或者具有用于通过WAN 954,诸如通过因特网建立通信的其它装置。调制解调器958可以是内置或外置的和有线或无线设备,它通过串行端口接口942连接到系统总线908。在网络化环境中,相对于计算机902描绘的程序模块或者其部分可以存储在远程存储器/存储设备950中。将意识到,所示的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它手段。
计算机902可以用于与操作上布置在无线通信中的任何无线设备或实体通信,例如,打印机、扫描仪、台式和/或便携式计算机、便携式数据助理、通信卫星、与无线可检测标签(例如公共电话亭、报亭、休息室)相关联的任何设备部分或位置、以及电话。这至少包括Wi-Fi和BluetoothTM(蓝牙)无线技术。因而,通信可以是有关常规网络的预定义结构,或仅仅是至少两个设备之间的特别通信。
Wi-Fi或无线保真允许从家里的睡椅、旅馆房间中的床或单位的会议室无线地连接到因特网。Wi-Fi是与蜂窝电话中使用的技术相似的无线技术,它使例如计算机等设备能够在户内外基站范围内的任何地方收发数据。Wi-Fi网络使用称为IEEE802.11(a,b,g等)的无线电技术来提供安全可靠的快速无线连接。Wi-Fi网络可以用于将计算机相互连接、连接到因特网、以及连接到有线网络(它使用IEEE 802.3或以太网)。Wi-Fi网络在非特许的2.4和5GHz无线电波段中例如以11Mbps(802.1a)或54Mbps(802.11b)数据速率运行,或者带有包括两种波段(双波段)的产品,因此网络可以提供与在许多办公室中使用的基本10BaseT有线以太网网络相似的真实世界性能。
现在参考图10,例示了按照本发明的示例性计算环境1000的示意框图。系统1000包括一个或多个客户机1002。客户机1002可以是硬件和/或软件(例如,线程、进程、计算设备)。例如,客户机1002可以通过使用本发明容纳cookie和/或相关联的上下文信息。
系统1000还包括一个或多个服务器1004。服务器1004也可以是硬件和/或软件(例如,线程、进程、计算设备)。例如,服务器1004可以通过使用本发明容纳执行变换的线程。在客户机1002与服务器1004之间的一种可能的通信可以是适用于在两个或多个计算机进程之间传输的数据包的形式。例如,数据包可包括cookie和/或相关联的上下文信息。系统1000包括通信框架1006(例如,全球通信网络,诸如因特网),它可以用于促进客户机1002与服务器1004之间的通信。
通信可以通过有线(包括光纤)和/或无线技术来促进。客户机1002操作上连接到一个或多个客户机数据存储1008,它们可以用于存储对客户机1002本地的信息(例如,cookie和/或相关联的上下文信息)。同样,服务器1004操作上连接到一个或多个服务器数据存储1010,它们可以用于存储对服务器1004本地的信息。
上面已经描述的内容包括本发明的示例。当然,不可能为了描述本发明而描述所有可能的组件或方法组合,但本领域的技术人员可认识到,本发明的许多其它组合和改变是可能的。因此,本发明旨在包括落在所附权利要求书的精神和范围内的所有这样的改变、修改和变体。而且,对于在详细描述或权利要求书中使用的术语“包括”,要以与术语“包含”在权利要求中作为过渡词解释时相似的方式来包括。