工作流程中用户界面的分支预测的制作方法

文档序号:30236088发布日期:2022-06-01 17:48阅读:208来源:国知局
工作流程中用户界面的分支预测的制作方法
工作流程中用户界面的分支预测


背景技术:

1.工作流程是一种计算机化结构,它定义了一系列按顺序执行和完成的动作。一般而言,可以创建工作流程来对应于特定的处理或任务。工作流程可以可视地表示为流程图或树形结构,其包括可以在执行期间进行遍历,直到到达终点的可能路径的多个分支。工作流程包括控制工作流程的执行和控制采取哪些分支路径的决策元素。最终,执行路径落在发起或执行动作的许多可能的工作空间元素之一上。
2.用户定义的工作流程可以是任意复杂的。工作流程的元素越多,它越复杂,工作流程需要越多的时间来完成。用户和正在执行的计算设备需要更多时间来顺序地从起点遍历工作流程到多个终点之一并执行工作空间元素的编程动作。
3.在现有系统中,工作流程的执行和运行时间受到决策元素和沿着路径的串行执行的限制。在可以做出任何决策之前,决策元素需要等待输入数据,然后沿着路径继续到下一个动作元素。例如,决策元素可以基于给定数据记录上的特定字段值。因此,必须经由网络请求检索数据记录,然后才能确定字段值。基于决策的结果,系统将生成一个或多个不同的用户界面。
4.因此,路径中在决策元素之后的任何元素在该决策元素执行并且沿着路径的串行处理到达该元素之前不能被执行。这导致系统以及等待系统的客户端的性能下降,因为在从数据中心检索到数据之前无法构建视图模型或视图。在许多高交易量环境(诸如,呼叫中心)中,工作流程的处理和记录值的后续显示是时间关键的。因此,处理时间的任何减少都是对计算机功能的改进。


技术实现要素:

5.在一个实施例中,公开了一种非暂态计算机可读介质,其包括存储在其上的计算机可执行指令,该指令在由计算机的至少一个处理器执行时,使计算机:
6.至少由处理器将工作流程输入到存储器中,并且在流程序列中在工作流程中串行进行;其中工作流程配置有多个执行路径,包括用于控制对执行路径的不同部分的访问的多个决策元素,其中多个执行路径通向与多个用户界面相关联的多个终端元素;响应于流程序列在包括多个分支路径的工作流程中遇到第一决策元素:(i)执行预测,该预测对第一决策元素的结果路径进行预测,以从多个用户界面中预测随后在流程序列中作为第一终端元素的一部分可能遇到的第一用户界面;(ii)在遇到第一终端元素之前预先构建所预测的第一用户界面;
7.响应于流程序列到达第一终端元素,在显示设备上显示预先构建的第一用户界面;以及
8.响应于流程序列到达第二终端元素,丢弃预先构建的第一用户界面并生成与第二终端元素相关联的第二用户界面。
9.在另一个实施例中,公开了一种计算系统,其包括:至少一个处理器;可操作地连接到至少一个存储器的至少一个存储器;以及其上存储有指令的非暂态计算机可读介质,
所述指令在由至少一个处理器执行时使处理器:
10.至少由处理器将工作流程输入到存储器中,并且以流程序列在工作流程中串行进行;其中工作流程配置有多个执行路径,包括用于控制对执行路径的不同部分的访问的多个决策元素,其中多个执行路径通向与多个用户界面相关联的多个终端元素;响应于流程序列在包括多个分支路径的工作流程中遇到第一决策元素:(i)执行预测,该预测对第一决策元素的结果路径进行预测,以从多个用户界面中预测随后在流程序列中作为第一终端元素的一部分可能遇到的第一用户界面;(ii)在遇到第一终端元素之前预先构建所预测的第一用户界面;(ii)在遇到第一终端元素之前预先构建所预测的第一用户界面;
11.响应于第一决策元素输出通向所预测的第一用户界面的第一结果路径,在显示设备上显示预先构建的第一用户界面;以及响应于第一决策元素输出与所预测的第一用户界面不相关联的第二结果路径,丢弃预先构建的第一用户界面并生成与第二结果路径相关联的第二用户界面。
12.在另一个实施例中,公开了一种计算机实现的方法,该方法由计算设备和执行存储器中的指令的处理器执行,其中该方法执行由计算系统执行的功能的一个或多个组合。
附图说明
13.结合在本说明书中并构成其一部分的附图图示了本公开的各种系统、方法和其它实施例。将认识到的是,图中所图示的元素边界(例如,方框、方框的组,或者其它形状)表示边界的一个实施例。在一些实施例中,一个元素可以被实现为多个元素,或者多个元素可以被实现为一个元素。在一些实施例中,示为另一个元素的内部组件的元件可以被实现为外部组件,并且反之亦然。此外,元素可能不是按比例绘制的。
14.图1图示了与预测工作流程的分支和预先构建用户界面相关联的计算机系统的一个实施例。
15.图2图示了包括配置有分支预测的决策元素的工作流程的一个实施例。
16.图3图示了与预测工作流程的分支和预先构建用户界面相关联的方法的一个实施例。
17.图4图示了配置有所公开的示例预测系统和/或方法的计算系统的实施例。
具体实施方式
18.本文描述了计算机系统和方法,其被配置为在执行的工作流程中进行分支预测并从多个可能的用户界面中预测结果用户界面。然后在执行工作流程到达预测的用户界面之前预先构建该用户界面。本系统和方法提供更快的响应时间并避免与串行地取决于决策元素并受决策元素限制的串行执行的工作流程相关联的时间延迟。这些决策元素需要检索和加载数据记录以确定决策元素的结果,之后执行沿着工作流程的串行/顺序处理路径进行以渲染最终用户界面。
19.在一个实施例中,本系统和方法消除了数据加载和定制用户界面的渲染之间的串行依赖性,因此通过预测和提前预先构建用户界面来相对于现有技术改进计算机功能。此外,与串行依赖处理相比,预测和预先构建功能减少了处理时间,并进一步改进了计算机功能。如前所述,在诸如呼叫中心之类的许多高交易量环境中,由计算系统在用户界面中生成
和显示记录值是时间关键的。因此,处理时间的减少(甚至几毫秒)是对计算机功能的改进。
20.应该理解的是,本文描述或要求保护的任何动作或功能都不是由人脑执行的,并且不能在人脑中实际执行。任何动作或功能可以在人脑中执行的解释与本公开是不一致的并且相悖的。
21.参考图1,图示了配置有预测系统的计算设备100的一个实施例,该预测系统用于在工作流程中进行分支预测以预测和预先构建用户界面。计算设备100包括至少一个处理器110、存储器120和与诸如数据中心数据库130和/或其它远程计算机(未示出)之类的远程设备进行通信的网络接口。预测系统包括在输入到存储器中的工作流程结构150上执行的分支预测器140。如本文将描述的,分支预测器140通过利用来自在每个决策元素处采取的先前路径的历史数据(例如,决策元素历史170)来消除数据加载和用户界面渲染之间的串行依赖性。预测系统被配置为学习然后预测可能被渲染的适当用户界面。然后系统开始预先构建用户界面(例如,预先构建的ui 160)以减少处理时间。
22.在具有高度复杂和可配置逻辑的软件系统中,基于复杂数据模型生成和渲染不同的用户界面。从数据中心检索这些数据模型以生成相关联的用户界面。在一个实施例中,本系统和方法预测将在检索数据模型之前显示的用户界面。因此,一旦工作流程到达将在显示器上显示和渲染用户界面的点,本系统就可以快得多地显示用户界面。以前的技术没有预测功能,而是简单地根据工作流程串行和顺序执行,直到操作在可能的用户界面元素之一处终止。
23.将参考图2中所示的示例工作流程200和图3中所示的示例方法300来描述图1的预测系统的操作的一个实施例。最初,工作流程200在下面用一组示例元素以及如何执行工作流程的串行操作来描述。该示例之后是描述当前分支预测如何被实现到工作流程200中以预测和预先构建用户界面的方法300。
24.参考图2,工作流程200被配置有多个决策元素和可能的操作,其创建了工作流程结构。一般而言,诸如工作流程200之类的工作流程可以被配置为具有沿着工作流程创建多个路径的多个决策元素(例如,决策元素205、210和240)。工作流程可以具有多个可能的用户界面(ui),这些用户界面可以在一个或多个路径结束时被触发。路径结束处的工作空间元素被称为终端元素。
25.在一个示例中,计算机实现的工作流程200被定义用于处理呼叫中心的客户联系人的数据记录。在呼叫中心处理呼叫的操作员将执行并浏览计算机实现的工作流程200。作为概述,工作流程可以采取多个路径,沿着每个路径具有一系列元素和动作。工作流程路径的各个方向由沿着路径的决策元素205、210、220和240控制。每个决策元素205、210、220和240包括被配置为基于来自输入数据的(一个或多个)值来确定结果的逻辑。
26.例如,决策元素205被配置为确定是否“姓=smith”。该决策由操作员的动作确定,该动作将发起网络请求以从数据库中检索数据记录。在呼叫中心的示例中,操作员正在与客户工作,因此发出网络请求来检索与工作流程中涉及的客户相关联的数据记录。当检索到数据记录并将数据记录值加载到存储器中时,决策元素205然后可以确定数据记录中的“姓”字段是否等于“smith”。确定的结果将执行流程沿着“是”分支或“否”分支引导到输出分支。
27.在图2的示例中,来自决策元素205的输出结果可以是基于决策是“是”还是“否”的
两个路径之一,并通向决策元素210或决策元素240,它们是沿着路径连续的下一个工作流程元素。当然,基于决策条件和在该决策元素处测试的输入值,决策元素可以具有更多可能的输出。
28.在沿着工作流程的某个点,操作员将沿着某个顺序路径导航并且将在终端元素上结束。终端元素被配置为触发如由终端元素定义的用户界面。用户界面与如由路径中通向工作流程元素的导航序列定义的操作员正在工作的内容相关联。在工作流程200中,终端元素是元素215、230、235、245和250。在这个示例中,终端元素与特定客户联系人相关联,并具有基于对应客户联系人的用户界面(ui)。一旦工作流程到达终端元素,系统就知道客户是谁,并已检索到该客户的对应数据记录。然后使用该客户的记录值生成并构建定制的用户界面。当然,本系统不限于针对客户联系人的工作流程,而是可以被实现为基于由管理员定义的任何标准生成任何类型的用户界面。
29.再次参考决策元素205,如果决策确定数据记录确实包括等于“smith”的姓,那么下一个决策元素210确定是否“名字=pat”。该决策是通过比较先前检索到的数据记录的“名字”字段中的值来做出的。如果名字是“pat”(决策是“是”),那么流程进行到工作空间元素215,它是终端元素并触发针对pat smith的工作空间联系人的用户界面(ui)。
30.在工作流程的顺序执行中,当操作者到达串行工作流程操作序列中的终点时,系统生成对应的ui。因此,工作流程200在决策元素(其检索和加载数据以决定采取哪个路径)与用户界面的最终渲染之间具有串行依赖性。除了等待串行依赖性执行之外,生成ui需要附加的时间,因为生成ui相对于工作流程中的其它动作和功能慢。下面提供时间的示例。
31.如前所述,工作流程中的决策元素205、210、220和240需要等待输入数据,然后才能做出任何决策以沿着其输出分支之一继续到下一个动作元素。因此,在现有系统中,在决策元素之后的路径中的任何元素(包括生成ui的终端元素)都在决策元素被执行并且沿着路径的串行处理到达终端元素之前不能被执行。不仅由于等待决策元素的每个网络请求完成而延迟了系统响应时间,而且生成最终ui相对于其它动作而言也是时间密集的,从而增加了更多的串行处理时间。
32.参考图3,示出了由图1的分支预测器140执行的计算机实现方法300的一个实施例。方法300被配置为在决策元素处进行分支预测并预先构建用户界面(ui)。因此,该方法无需等待工作流程的串行执行即可提前预测最终ui。当做出预测时,该方法和系统开始构建ui,而无需等待决策元素完成其处理并且无需等待操作员完成一系列工作流程动作。
33.在一个实施例中,在发起诸如图2的工作流程200的工作流程时,方法300被发起并执行以进行分支预测。在方框310处,至少由处理器将工作流程结构的一个或多个部分输入到存储器中。响应于用户输入/动作,处理器可以按流程序列串行进行和导航通过工作流程。
34.如前所述,工作流程200配置有多个执行路径,这些执行路径包括用于控制对执行路径的不同部分的访问的多个决策元素。多个执行路径通向与多个用户界面相关联的多个终端元素。
35.在方框320处,方法和系统监视工作流程以确定何时在流程序列中遇到决策元素。例如在图2中的工作流程200中,遇到的第一决策元素是包括多个分支路径的元素205。响应于流程序列在工作流程中遇到第一决策元素,在方框330处,处理器(i)执行预测,该预测对
第一决策元素的结果路径进行预测以从多个用户界面中预测随后在流程序列中作为第一终端元素的一部分可能遇到的第一用户界面,以及在方框340处,(ii)在遇到第一终端元素之前预先构建所预测的第一用户界面。下面提供预测和预先构建功能的其它详细信息。
36.为了讨论的目的,假设预测预测了决策元素205将导致“是”分支并且工作流程将通向图2中终端元素215中的“pat smith”联系人。在一个实施例中,预测(至少部分地)基于决策元素的先前历史结果。这将在下面进一步描述。系统还预先构建/生成与预测的pat smith联系人相关联的用户界面。因此,当决策元素205执行其逻辑以如前所述确定是否“姓=smith”时,预测和预先构建与决策元素逻辑并发和/或并行地执行。由此,去除了用于处理决策元素和渲染用户界面的现有技术的串行依赖性,这通过改进工作流程处理时间改进了计算机功能。决策元素逻辑包括基于对数据库的网络请求来请求和检索数据库记录,以及确定检索到的数据库记录的“姓”字段是否具有“smith”或不具有“smith”。
37.在一个实施例中,当系统预测用户界面(ui)并开始构建ui时,ui不向用户显示或示出。预测的ui是在存储器中构建的,并在后台进程中排队。系统无法开始显示预先构建的预测ui,因为预测的ui可能最终是错误的ui(例如,工作流程最终出现在具有不同ui的不同终端元素上)。系统不能在显示屏幕上显示错误的ui,因为这将是处理错误并让用户感到困惑。如果ui正确,那么将来自对应数据记录的信息填充到ui中并显示该ui。
38.继续参考图3中的方法300,在方框350处,系统确定预测是否正确。这可以通过例如确定工作流程序列最终到达哪个终端元素来确定。响应于流程序列到达pat smith联系人215的预测终端元素,预测被确定为正确并且预先构建的用户界面被显示和渲染在显示设备上。
39.在示例工作流程200中,注意的是,沿着姓=smith的“是”路径,存在针对“名字=pat”的第二决策元素210。在工作流程路径中可能遇到任意数量的决策元素。在一个实施例中,针对第二决策元素再次执行分支预测,这可能导致相同的预测或不同的预测。
40.返回到图3中的决策框350,如果流程序列不采取预测路径并到达未被预测的不同终端元素,那么预测是不正确的。方法300然后移动到方框370,其中响应于流程序列到达不同的终端元素,使处理器丢弃预先构建的预测的用户界面。系统然后生成与工作流程实际到达的终端元素相关联的新用户界面。例如在图2中,如果实际到达的终端元素是john smith联系人元素230,那么针对pat smith联系人的预测的用户界面被丢弃。然后生成与john smith联系人相关联的用户界面并将其渲染在显示屏幕上。
41.构建用户界面是系统中更耗时的操作之一(例如,花费大约300ms到500ms)。因此,如果预测正确,那么最终ui已经构建(或几乎构建),并且已经准备好在操作员到达工作流程序列中的那个端点时可以呈现和使用。与工作流程的串行处理相比,这减少了系统所需的处理时间量。下面描述示例时间比较。
42.在方法300的另一个实施例中,该方法可以预测分支路径和与一个或多个数据记录的相关联动作。例如,预测的动作可以在工作流程到达终端元素之前从预测的数据记录创建、删除或以其它方式修改数据。在这种情况下,用户界面不是终端元素的一部分,而是对预测的数据记录执行动作。例如,如果预测器在决策元素处预测到通向具有记录修改动作的终端元素的某个分支,那么系统与决策元素的处理并行地预先执行记录修改动作(如前所述)。预先执行可以包括访问数据库以检索相关联的数据记录并对数据记录执行数据
修改。如果预测错误并且工作流程在不同的终端元素处结束,那么数据修改被忽略并且不保存在数据库中。如果预测正确,那么修改后的记录在数据库中被保存并更新。
43.比赛预测器
44.在一个实施例中,图1中的分支预测器140和相关联的预测功能(图3中的方框330)是用比赛预测器实现的。在一个实施例中,分支预测是用软件算法构建的,并且涉及减少处理对数据记录的网络请求的长时间帧和用于返回所请求的数据记录的数据中心响应时间。这些网络请求和数据记录是决策元素的一部分或所需的。
45.如前所述,当工作流程到达决策元素/节点时,系统触发预测功能。例如,决策节点基于客户名称确定输出分支,如图2中的示例。对于工作流程中的每个决策元素,都会维护决策元素所采取的路径历史。在一个实施例中,决策元素采取的四(4)个先前路径被存储在该决策元素的预测器历史数据结构中。对于决策元素205,路径历史可以是“是”、“是”、“是”、“否”。输出路径也可以以其它方式标记,诸如路径历史a、a、a、b。当然,可以为决策元素存储任意数量的先前路径。该路径历史被维护在例如被示出与决策元素205和210相关联的决策元素历史170的数据结构中。
46.工作流程中的每个元素被分配唯一id,因此系统可以识别和跟踪工作流程元素。每个路径也可以被分配唯一id,以从工作流程中的所有其它路径中识别该路径。预测器历史数据结构可以被布置为将每个决策元素id与其对应的路径历史进行映射或相关联。因此,当被请求进行预测时,可以识别和检索所选择的决策元素的路径历史。
47.当工作流程到达决策元素并且如果没有历史数据(意味着系统第一次处于该决策节点),那么在没有预测的情况下执行决策元素。这包括:接收输入数据、检索对应的数据记录(例如,客户联系人记录)、评估记录“名称”字段;以及基于名称字段值决定输出分支。然后系统将采取的输出路径(例如,路径“a”)保存在该决策元素的历史数据中。当为该决策元素检索历史数据时,历史数据表示工作流程最后一次在该决策元素处,工作流程转到路径“a”。在对决策元素进行多次预测之后,系统还存储并维持预测的准确度,这些预测是基于所采取的实际输出路径确定的。
48.如果在工作流程中有多个决策元素,那么系统具有多个发生的预测:每个决策元素的一个预测器基于为该决策元素采取的最后四(4)个历史路径。由于每个路径都有分配的id和相关联的预测准确度,因此系统将来自决策元素的每个预测器相互比较,并确定哪个预测器最准确。如果第一决策元素处的第一预测器在最后一个预测中是准确的,那么与不准确的预测器相比系统更信任该预测器。在一个实施例中,每个预测器被分配与先前预测的准确程度对应的置信度值。例如,过去选择的最频繁的路径将被赋予更大的权重并被选为下一个预测。因此,如果决策元素的路径历史是路径a、a、a、b,那么路径a将是下一个预测路径,因为路径a是在路径a和b之间选择的最频繁路径。路径a的置信度值为75%(最后4个结果中的3个)。
49.如前所述,决策元素中的决策基于具有指定字段值的数据记录。实现每个决策元素的比赛预测器以预测决策元素的结果,从而预测结果分支路径。预测器还与决策元素的处理并行和/或并发执行。因此,预测器执行并对结果进行预测,而无需等待或知道来自检索到的数据记录中的实际字段值。
50.在一个实施例中,系统实现用于尝试预测将通过工作流程采取的路径的两种类型
的预测器:基于记录的历史预测器和全局历史预测器。工作流程中的每个决策元素都已被赋予唯一id,该id与预测器相关联。对于每个决策元素,以下预测器用于确定最可能采取的输出路径:
51.1)基于记录的历史预测器。该预测器专门为所选择的数据记录存储和使用历史数据。例如,系统为“john smith”的数据记录生成历史预测器,并存储使用该记录做出的最后x个决策结果。对于许多客户来说,给定的记录可能会被打开很多次,并且每次打开时都会表现得一致。当代理在工作流程期间打开数据记录(john smith)时,系统确定代理正在查看数据记录中的哪些特性。特性可以包括可能出现在数据记录中的职位、位置、地点、部门和/或其它属性。每个不同的特性可以导致使用与该特性相关联的定制数据生成不同的用户界面。假设john smith记录的记录历史显示该记录被打开四次,并且“title”数据字段每次都是“director”。下次该记录被打开时,预测器基于先前的历史预测title仍然是“director”,并基于特性是“director”预测对应的输出路径和用户界面。
52.作为另一个示例,假设工作流程具有基于记录在某一天创建并且该记录与某一主题相关的分支路径。这些属性不太可能在代理打开记录的时间之间发生变化。知道工作流程在处理该记录时先前采取的路径将是对下次在工作流程中打开记录时工作流程将再次针对同一记录采取的路径的强预测器。
53.2)全局历史预测器。全局历史预测器不是像在基于记录的历史预测器中那样使用单个数据记录的历史,而是查看许多不同记录的历史,其中可以包括所选择的类别中所有记录的历史。例如,全局历史预测器查看具有共同特性并且历史用于预测决策元素处的输出路径的多个记录。基于记录的历史预测器可能没有给定记录的任何数据,但全局历史可以提供对代理通常在做什么的预测,而不管分配给代理的实际工作流程如何。
54.也可能存在每次打开同一记录时对该记录进行不同处理的不同工作流程。这可能是通过类似于自动更改记录值的升级处理。在这些情况下,决策元素可能不会重复先前的路径。回想一下,基于代理正在执行的任务类型或打开的数据记录的类型,将不同的工作流程分配给代理。每个工作流程可以不同地配置以处理特定任务,并且将具有不同的工作流程元素。例如,如果代理打开“联系人”数据记录,那么系统将把联系人工作流程分配给代理以供遵循。如果“事件”任务记录是打开的(以处理事件报告),那么系统会分配事件工作流程供代理遵循。
55.在一个实施例中,每个预测器都跟踪其自身的准确度。比赛方面是选择具有最佳历史准确度的预测器的预测路径作为整体预测路径。参与比赛预测方案的每个预测器都可以是任意复杂的。在另一个实施例中,可以使用更高级的机器学习概念或模式匹配方案来构建预测器。
56.在另一个实施例中,对于决策元素/节点的每个预测器,系统维护两个队列。这两个队列被存储在与每个决策元素相关联的决策元素历史170中(如图1和图2中所示)。如果再次使用上面使用的四(4)的长度,那么系统具有一个队列,其中包含该决策元素预测器在最后4次运行中所做的预测,而第二个队列维护在最后4次运行中采取的实际路径。这些用于计算两件事,(1)基于历史上实际采取的路径的路径预测p,以及(2)基于该特定预测器在历史窗口上的性能的置信度c。
57.例如,假设d是具有输出路径p∈{x,y,z}的决策节点,并让下表1显示在遇到此决
策节点四次后已为三个预测器记录的示例历史:
58.表1

预测器历史
59.预测器1
60.实际历史:x y x
61.预测历史:x y
62.预测器2
63.实际历史:x z y z
64.预测历史:x z y
65.预测器3
66.实际历史:x z
67.预测历史:x z
68.下一次系统到达该决策节点时,为每个注册的预测器计算预测。预测包含两个组成部分:输出路径p∈{x,y,z}和置信度c∈[0,1]。
[0069]
p被计算为实际历史的最频繁输出,而c被计算为该预测器在历史长度上的准确度,从而将其自己的预测与实际结果进行比较。
[0070]
对于预测器1:
[0071]
p=x//2个x和2个y,平局到最近的历史是x
[0072]
c=0.50//最后4个中的2个正确
[0073]
对于预测器2:
[0074]
p=z//最后4个中的2个
[0075]
c=0.25//最后4个中的1个正确
[0076]
对于预测器3:
[0077]
p=z//最近的预测以平局获胜
[0078]
c=0.75//最后4个中的3个正确
[0079]
现在,系统在每个预测器之间具有比赛选择,其中它采取具有最高置信度的预测器。预测器3以75%的其最高置信度获胜,并且整体结果是z的路径预测。这些预测器中的每一个都可以有不同的实际历史的原因是它们可以针对不同的范围注册,其中它们可能不适用于所有与其它相同的情况,因此暴露于不同的场景,从而记录不同的历史。
[0080]
在一个实施例中,在预测不同路径的两个预测器之间的置信度相等的情况下,系统基于哪些类型的预测器被认为特别是在相关联的产品领域内提供更准确的结果来执行隐含排序。
[0081]
结果
[0082]
在一个实施例中,示例性能结果是通过在服务云测试站点上启用本分支预测系统来测量的。在测试中,测试打开相同的记录5次,并记录显示结果用户界面的平均时间,以便测试系统可以监视性能回归。这种特定测试具有工作流程,其中具有基于服务请求是否已关闭的决策元素。系统假定代理不应该打开与它们打开“活动”请求一样多的“关闭”请求,因此系统自动进行该预测(无需事先知道实际工作流程)。基于预测,系统预先构建预测的用户界面,这最终导致渲染用户界面。完成时间是通过预测和不预测(例如,串行处理)来测
量的。预测系统能够将打开活动服务请求和渲染对应用户界面的时间从大约5秒(对于串行处理)降低到大约3秒(在使用预测系统时)。
[0083]
生成/预先构建用户界面
[0084]
以下是为生成/预先构建如前所述的用户界面而执行的操作的示例实施例。参考图2中的工作流程200,终端工作空间联系人元素215、230、235、245和250触发不同的用户界面,取决于沿着工作流程采取哪个分支,可以向用户/代理显示这些用户界面。
[0085]
在一个实施例中,当在决策元素处进行预测时,系统将用户界面构建为如下网页:
[0086]
网页的结构或框架是根据html定义的,而页面的内容是根据绑定到该框架的数据定义的。有许多步骤涉及将这些结合在一起并实际将可见元素绘制到显示屏幕上,但是这由浏览器的渲染引擎处理并且超出了本公开的范围。
[0087]
在实际渲染步骤之前执行用户界面的构建。浏览器在网页上渲染用户界面的步骤与用户界面的构建是分开的。为了构建用户界面,系统使用:
[0088]
(1)描述给定工作空间的布局的完全扩展的html树(例如,工作流程结构和工作流程200中表示图2中所示的不同ui的元素)。由于工作空间是完全可配置的,其中的每个元素,即,文本字段、按钮、图像、表格等,都由html的唯一块定义。为了要求浏览器渲染工作空间,系统将所有部分放在一个对象中。
[0089]
(2)其次,系统使用与html树匹配的对应数据结构并保持将显示的内容。即,html定义了我们想要显示的文本框,而这个数据结构树定义了我们在该文本框中实际显示的内容。我们将这些支持数据结构称为视图模型,并且我们需要构建出定义我们想要显示的ui的结构和内容的html和视图模型的相同复合树。
[0090]
工作空间元素可以是任意复杂的。用户能够向其工作空间添加任意数量的字段、控件甚至自定义扩展。在一些系统中,当构建呈现设计模式时,工作空间上显示的每个项目都是使用mvvm设计模式(model-view-viewmodel mvvm,模型-示图-示图模型mvvm)构建的。这意味着存在可以绑定回原始数据的模型的视图和视图模型。就时间和计算资源而言,构建视图和视图模型是多少有些昂贵的操作,并且通过进行预测来更快地启动这些操作,可以实现大的性能提升。使用本发明,可以创建视图和视图模型,然后在稍后的时间点将其绑定到视图模型。
[0091]
在用于构建上述组件(1)和(2)两者的系统的一个实施例中,系统使用工作空间定义(我们的数据表示,其包含客户想要为其ui看到的内容)。例如,图2的工作流程200中的联系人工作空间元素显示了可以在工作流程200中到达的不同终端元素。本预测系统的一个目的是允许在系统实际确信知道用户在沿着工作流程200串行导航时最终将到达哪一个工作空间之前,构建上面(1)和(2)中描述的两个树。
[0092]
在一个实施例中,这些工作空间定义在浏览器客户端上定义,因此系统可以在触发时构建任何一个。在检索到实际数据记录(作为决策元素的一部分)以识别代理/用户正在试图访问和查看的内容之前,系统并不知道是哪一个。本预测系统在工作流程中的这一点被实现和执行,以预测系统应该提前尝试构建哪个可能的工作空间和相关联的用户界面。用户界面的预测和预先构建是在系统等待网络请求从数据库中检索数据记录并确定决策元素的结果时并发执行的。
[0093]
处理比较
[0094]
作为比较,决策元素的串行处理执行如下:
[0095]
1)向数据库发送网络请求以获得代理/用户想要查看的记录;
[0096]
2)系统等待记录经由网络通信返回,然后将记录及其字段值加载到存储器中。然后,决策元素基于所选择的字段值确定其决策的结果。结果对应于工作流程中的输出分支,该分支导致构建结果用户界面;
[0097]
3)为结果用户界面构建html和视图模型树;
[0098]
4)将用户界面发送到要渲染的浏览器引擎。
[0099]
利用本预测系统,当遇到决策元素时,系统不必等待网络请求从步骤一和二完成,而是发送相同的请求,但是在等待返回记录的同时,系统并行对用户界面进行预测并开始预先构建用户界面(例如,根据预测构建html和视图模型)。
[0100]
当所请求的记录被返回并且其(一个或多个)字段值被分析时,预测系统基于决策元素的结果来确认预测是否正确。如果预测正确,那么系统只需继续并完成已经开始的用户界面的构建(如果尚未完成)。因此,系统有效地使感知到的加载时间减少了发出网络请求和加载检索到的记录所花费的时间。如果预测错误,那么丢弃/删除预先构建的用户界面,并且系统像以前一样在步骤2恢复处理。注意的是,由于预测处理是并行进行的,因此对错误的惩罚基本上没有。
[0101]
一些估计的时间数字可以给出一些上下文。对于生成和渲染的标准用户界面,在具有适当网络连接速度的计算机上,可能需要300ms至500ms(毫秒)来执行在检索到数据记录并且决策元素完成后构建出html和视图模型的所有工作。网络请求可能需要大约100ms至200ms才能获取告诉系统要构建什么用户界面的数据记录。加上这个时间,串行处理方法需要网络行程+处理时间=400ms至700ms。使用基于新颖的预测技术并行执行这些步骤的本系统和方法、系统仅以用于构建用户界面的300ms至500ms的处理时间为界。因此,这是对计算机功能和现有技术处理的改进。
[0102]
时序可以取决于许多因素,但不管互联网和计算机速度如何,最终结果是本系统能够通过实现预测技术来消除操作的串行依赖性。该预测技术允许并发执行在先前的串行依赖技术中无法执行的操作。
[0103]
云或企业实施例
[0104]
在一个实施例中,图1中所示的预测系统/分支预测器140和/或配置的计算设备100是包括用于企业组织的应用或分布式应用集合的计算/数据处理系统。应用和计算系统100可以被配置为与基于云的联网系统、软件即服务(saas)体系架构或其它类型的联网计算解决方案一起操作或实现为基于云的联网系统、软件即服务(saas)体系架构或其它类型的联网计算解决方案。在一个实施例中,分支预测器140和/或方法300是集中式服务器侧应用,其至少提供本文所公开的功能并且由许多用户经由与计算系统100(用作服务器)通信的计算设备/终端通过计算机网络访问。
[0105]
在一个实施例中,本文描述的一个或多个组件被配置为存储在非暂态计算机可读介质中的程序模块。程序模块被配置有存储的指令,这些指令在由至少一个处理器执行时使计算设备执行如本文所述的(一个或多个)对应功能。
[0106]
计算设备实施例
[0107]
图4图示了示例计算设备,其被配置和/或编程为具有本文描述的示例系统和方法
中的一个或多个示例系统和方法和/或等效形式的专用计算设备。示例计算设备可以是计算机400,其包括处理器402、存储器404和通过总线408可操作地连接的输入/输出端口410。在一个示例中,计算机400可以包括预测逻辑/模块430,其被配置为促进图1中所示的计算设备100和分支预测器140的预测系统,以及图3中所示的方法300。在不同的示例中,逻辑430可以用硬件、具有存储的指令的非暂态计算机可读介质、固件和/或它们的组合来实现。虽然逻辑430被示为附接到总线408的硬件组件,但是应该认识到的是,在其它实施例中,逻辑430可以在处理器402中实现、存储在存储器404中,或存储在盘406中。
[0108]
在一个实施例中,逻辑430或计算机是用于执行所描述的动作的部件(例如,结构:硬件、非暂态计算机可读介质、固件)。在一些实施例中,计算设备可以是在云计算系统中操作的服务器、在软件即服务(saas)体系架构中配置的服务器、智能电话、膝上型电脑、平板计算设备等。
[0109]
计算机400和预测逻辑430是用于提供用于执行本预测系统的部件(例如,硬件、存储可执行指令的非暂态计算机可读介质、固件)的结构。
[0110]
一般地描述计算机400的示例配置,处理器402可以是各种不同的处理器,其被配置为操作并由预测逻辑430控制,包括双微处理器和其它多处理器体系架构。存储器404可以包括易失性存储器和/或非易失性存储器。非易失性存储器可以包括例如rom、prom等。易失性存储器可以包括例如ram、sram、dram等。
[0111]
存储盘406可以经由例如由至少输入/输出(i/o)控制器440控制的输入/输出(i/o)接口(例如,卡、设备)418和输入/输出端口410可操作地连接到计算机400。盘406例如可以是磁盘驱动器、固态盘驱动器、软盘驱动器、带驱动器、zip驱动器、闪存卡、记忆棒等。此外,盘406可以是cd-rom驱动器、cd-r驱动器、cd-rw驱动器、dvd rom等。例如,存储器404可以存储处理414和/或数据416。盘406和/或存储器404可以存储控制和分配计算机400的资源的操作系统。
[0112]
计算机400可以经由i/o接口418与输入/输出(i/o)设备交互,并且经由输入/输出(i/o)控制器440与输入/输出端口410交互。输入/输出设备可以是例如键盘、麦克风、指向和选择设备、相机、视频卡、显示器、盘406、网络设备420等。输入/输出端口410可以包括例如串行端口、并行端口和usb端口。
[0113]
计算机400可以在网络环境中操作并且因此可以经由i/o接口418和/或i/o端口410连接到网络设备420。通过网络设备420,计算机400可以与网络交互。通过网络,计算机400可以逻辑地连接到远程计算机。计算机400可以与之交互的网络包括但不限于lan、wan和其它网络。
[0114]
定义和其它实施例
[0115]
在另一个实施例中,所描述的方法和/或其等同形式是用计算机可执行指令实现的。因此,在一个实施例中,非暂态计算机可读/存储介质被配置为具有存储的算法/可执行应用的计算机可执行指令,该指令在由(一个或多个)机器执行时使该(一个或多个)机器(和/或相关联的组件)执行所述方法。示例机器包括但不限于处理器、计算机、在云计算系统中操作的服务器、用软件即服务(saas)体系架构配置的服务器、智能电话等等。在一个实施例中,计算设备用被配置为执行任何所公开的方法的一个或多个可执行算法来实现。
[0116]
在一个或多个实施例中,所公开的方法或它们的等同物由以下任一项执行:被配
置为执行所述方法的计算机硬件;或者,存储在非暂态计算机可读介质中的模块中实施的计算机指令,其中指令被配置为可执行算法,可执行算法被配置为在由计算设备的至少一个处理器执行时执行所述方法。
[0117]
虽然为了简化说明的目的,图中图示的方法被示出和描述为算法的一系列方框,但是应该认识到的是,这些方法不受方框的顺序的限制。一些方框可以以与所示出和描述的不同的顺序出现和/或与其它方框同时发生。而且,可以使用比全部图示的方框少的方框来实现示例方法。方框可以被组合或分成多个动作/组件。此外,附加的和/或替代的方法可以采用未在方框中图示的附加动作。
[0118]
以下包括本文所采用的所选择术语的定义。定义包括属于术语的范围并且可以用于实现的组件的各种示例和/或形式。示例并不旨在是限制性的。术语的单数和复数形式都可以在定义之内。
[0119]
对“一个实施例”、“实施例”、“一个示例”、“示例”等的引用指示如此描述的(一个或多个)实施例或(一个或多个)示例可以包括特定的特征、结构、特性、性质、元素或限制,但并非每个实施例或示例都必然包括该特定的特征、结构、特性、性质、元素或限制。此外,短语“在一个实施例中”的重复使用不一定指代相同的实施例,但是可以指代相同的实施例。
[0120]
如本文所使用的,“数据结构”是计算系统中存储在存储器、存储设备或其它计算机化系统中的数据的组织。数据结构可以是例如数据字段、数据文件、数据阵列、数据记录、数据库、数据表、图、树、链表等中的任何一个或其组合。数据结构可以由许多其它数据结构形成以及包含许多其它数据结构(例如,数据库包括许多数据记录)。根据其它实施例,数据结构的其它示例也是可能的。
[0121]
如本文所使用的,“计算机可读介质”或“计算机存储介质”是指存储被配置为当被执行时执行所公开的功能中的一个或多个功能的指令和/或数据的非暂态介质。在一些实施例中,数据可以用作指令。计算机可读介质可以采取包括但不限于非易失性介质和易失性介质的形式。非易失性介质可以包括例如光盘、磁盘等。易失性介质可以包括例如半导体存储器、动态存储器等。计算机可读介质的常见形式可以包括但不限于软盘、柔性盘、硬盘、磁带、其它磁性介质、专用集成电路(asic)、可编程逻辑器件、紧凑盘(cd)、其它光学介质、随机存取存储器(ram)、只读存储器(rom)、存储器芯片或卡、存储棒、固态存储设备(ssd)、闪存驱动器、以及计算机、处理器或其它电子设备可以利用其工作的其它介质。如果每种类型的介质在一个实施例中被选择用于实现,则其可以包括被配置为执行所公开的和/或所要求保护的功能中的一个或多个功能的算法的存储指令。
[0122]
如本文所使用的,“逻辑”表示利用计算机或电气硬件、具有存储的可执行应用或程序模块的指令的非暂态介质和/或这些的组合实现的组件,以执行如本文公开的任何功能或动作,和/或使得来自另一逻辑、方法和/或系统的功能或动作如本文所公开的那样被执行。等同的逻辑可以包括固件、利用算法编程的微处理器、离散逻辑(例如,asic)、至少一个电路、模拟电路、数字电路、编程的逻辑器件、包含算法的指令的存储器设备等,其中任何一个可以被配置为执行所公开的功能中的一个或多个功能。在一个实施例中,逻辑可以包括一个或多个门、门的组合、或者被配置为执行所公开的功能中的一个或多个能够的其它电路组件。在描述多个逻辑的情况下,有可能将多个逻辑合并到一个逻辑中。类似地,在描
述单个逻辑的情况下,有可能在多个逻辑之间分配那单个逻辑。在一个实施例中,这些逻辑中的一个或多个是与执行所公开的和/或所要求保护的功能相关联的对应结构。选择实现哪种类型的逻辑可以基于期望的系统条件或规范。例如,如果考虑更高的速度,则将选择硬件来实现功能。如果考虑更低的成本,则将选择存储的指令/可执行应用来实现功能。
[0123]“可操作的连接”或实体通过其“可操作地连接”的连接是可以在其中发送和/或接收信号、物理通信和/或逻辑通信的连接。可操作的连接可以包括物理接口、电气接口和/或数据接口。可操作的连接可以包括足以允许可操作的控制的接口和/或连接的不同组合。例如,两个实体可以可操作地连接,以直接或者通过一个或多个中间实体(例如,处理器、操作系统、逻辑、非暂态计算机可读介质)彼此传送信号。逻辑通信信道和/或物理通信信道可以被用于创建可操作的连接。
[0124]
如本文所使用的,“用户”包括但不限于一个或多个人、计算机或其它设备、或者这些的组合。
[0125]
虽然已经相当详细地图示和描述了所公开的实施例,但并不旨在将所附权利要求的范围限制或以任何方式限定到这样的细节。当然,不可能为了描述主题的各个方面而描述组件或方法的每种预期的组合。因此,本公开不限于所示出和描述的特定细节或说明性示例。因此,本公开旨在涵盖落入所附权利要求的范围内的变更、修改和变化。
[0126]
就术语“包含”在具体实施方式或权利要求书中被采用的程度而言,它旨在以类似于当术语“包括”作为过渡词在权利要求中被采用时所解释的方式是包含性的。
[0127]
就术语“或”在具体实施方式或权利要求书中被采用的程度而言(例如,a或b),其旨在意味着“a或b,或两者”。当申请人旨在指示“仅a或b但不是两者”时,那么将使用短语“仅a或b但不是两者”。因此,术语“或”在本文的使用是包含性的,而不是排他性使用。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1