用于业务模型相关的矢量图形的有效绘制的系统和/或方法

文档序号:6370312阅读:178来源:国知局
专利名称:用于业务模型相关的矢量图形的有效绘制的系统和/或方法
技术领域
在此描述的特定的示例实施方式涉及用于矢量图形的有效绘制的系统和/或方法。更特别地,特定的示例实施方式涉及以抽象矢量图形(AVG)的格式提供的图形。在特定的示例实施方式中,矢量图形与包括静态代码的绘制器片段文件一起被提供给AVG生成器,所述绘制器片段文件独立于生成的图形但依赖于目标平台。在特定的示例实施方式中,所述AVG生成器产生可在目标设备上执行的流程逻辑以使图形显示。
背景技术
由本发明的受让人提供的ARIS产品套件是市场领先的业务流程管理工具之一。 客户使用ARIS记录和分析他们的内部流程和组织。用ARIS (当前一种基于Java的工具)创建的业务模型后来将公布在组织的内部网站内以使创建的模型对所有的雇员可用。图I是在ARIS内创建的示例的模型,并且特别地,显示Scrum项目的冲刺阶段。所述用ARIS创建的模型可以是非常大的。实际上,一些客户已经创建了大于5x5米的模型。为了可用性目的,这些非常大的模型通常被公布到网上,并且使用者可能想放大和缩小以在模型内导航(navigate)。一个与将ARIS带进网络浏览器相关的挑战是非常大的尺寸导致内存使用问题并经常引起绘制性能问题。现今的万维网提供将ARIS模型(或任何其他的图形模型)绘制进网页浏览器的不同的可能性。比如,用基于位形,所述模型可以被描述为一个大的基于位图网页图形的格式,比如PNG或JPEG。可以用HTML与JavaScript进行相互作用。如图2所示,比如,可能在网页中嵌入ARIS模型查看器并提供视区。所述单一的大的基于位图的图形在所述视区“后面”。可能使用HTML和/或JavaScript工具执行导航。作为另一个例子,所述模型可以被描述为一个基于位图的图形,所述模型被分为多个瓷砖,而不是使用一个大的图形。这种瓷砖式图形技术在计算机图形中是众所周知的,并且通常降低内存使用并提高绘制性能。这种技术已经在计算机游戏领域,还有对于一些基于网页的应用变得非常流行。比如,谷歌地图使用这种技术。如图3所述,所述ARIS模型查看器视区通过再使用从中央储存器发送的瓷砖生成模型。但是,只有少数所述模型的小图形(瓷砖)被发送给客户,客户本身通过再使用这些小瓷砖生成较大的模型。还有另一个选择包括使用基于矢量的图形。在这个选择中,所述模型可以被描述使用对网页有用的(并将被普通网页浏览器支持的)基于矢量的格式,比如SVG或VMLt5AdobeFlash SWF格式也是基于矢量的格式并且理论上可以被用于在网页中绘制ARTS模型。基于矢量的图像具有的优点是图形可以无限制地被缩放而不会降低质量。图4表明在视区中显示模型的基于矢量图形的方法,其中矢量图形被发送给客户并为在视区中显示由网页浏览器解释。作为还有的另一个选择,浏览器端绘制(例如,使用HTML 5 Canvas或Flash绘制)可能被用于将模型数据发送给在其中该数据将被解释的所述网页浏览器和通过使用HTML5或Flash绘制的模型。这个方法是非常类似于上述基于矢量的图形方法。但是,大多数普通的浏览器已经为基于矢量的图形格式如SVG提供绘制器,其解释所述SVG格式并将其翻译为网页浏览器绘制API的图形指令。图5显示按照浏览器端绘制技术被供应给用于在视区最终显示的绘制器的模型数据。所述绘制器解释所述模型数据并通过使用由网页浏览器提供的绘制API创建所述模型图形。生成的模型被显示在视区内。然而当前的解决方案不是很好地适合于显示ARIS类型模型。例如,当前的解决方案具有关于内存使用和绘制性能的限制。比如,基于位图的图形具有大的图像大小导致非常高的内存使用的缺陷。图形格式像PNG和JPEG允许图像数据被压缩,但是所述浏览器需要能够压缩它以将其显示在网页中,从而要求处理能力和开销。另一个缺陷涉及基于位图的格式不能被缩放而不降低质量。缩小基于位图的图像也导致降低问题以致图形信息经常被丢失。相比之下,基于瓷砖式的方法在内存使用和性能方面是较优的。所述图形可以被分为多个可以重复的小部分(瓷砖),而不是创建一个表示所述ARIS模型的大的图形。一个ARIS模型时常包括相同的符号(如,上述图I中的示例中)。此外,可能只装入当前在用户的·屏幕上对其可用的瓷砖。然而,该方法不利在于不容易缩放所述图形(模型)。这样,当前的解决方案包含创建用于预先定义的缩放水平的瓷砖。否则,自由缩放模型而不降低质量通常是不可能的。使用基于矢量的图形将ARIS模型显示在网页浏览器中也有它的缺陷。tWn,将由网页浏览器支持的矢量格式如SVG和VML的内存使用,是可与基于位图的图形格式相比较的。虽然不如那样高,它仍然经常被视为不可接受。此外,它经常可以花长时间绘制非常大的SVG和VML结构。虽然前三种方法提供用HTML 5和"Canvas"元素的引入,被传输到网页浏览器并显示给用户的预绘制图形,可能通过使用将由所述网页浏览器提供的绘制API可编程地绘制图形。类似的方法也可能通过Adobe Flash技术。该方法包括发送一些数据给所述网页浏览器,所述数据将被可编程地解释并通过使用提供的绘制API被绘制在网页浏览器中。该方法具有的优点是传输给所述浏览器的图像的大小与生成的图形相比可以显著的更小。另一方面,该方法的缺点是解释、计算和传输数据给绘制指令的步骤(所述业务逻辑)可能非常昂贵。虽然在浏览器端绘制和基于矢量图形之间的解决方案看起来是好的选择,但它可能不能解决非常大的图形/模型的性能问题。

发明内容
这样,本领域技术人员将理解到需要提高有关模型/图形的显示的技术。例如,将实现提高非常大的模型/图形的有效性,而保持流程和内存要求较低。特定的示例实施方式的一方面涉及可实现非常快速地在网页浏览器或其它目标平台或设备中绘制基于矢量的图形的技术。在特定的示例实施方式中绘制的所述图形是业务模型相关的图形。特定的示例实施方式的一方面涉及绘制适用于具体的格式(比如,EMF、VMF、SVG等)的矢量图形的技术并且所述格式总体上可应用于矢量图形。
特定的示例实施方式的另一方面涉及包含抽象矢量图形(AVG)的具体的图形格式。特定的示例实施方式的另一方面涉及将矢量图形与包括静态代码的绘制器片段文件一起提供给AVG生成器,所述绘制器片段文件独立于生成的图形但依赖于目标平台。特定的示例实施方式的另一方面涉及产生可在目标 设备上执行的程序逻辑以使基于所述程序逻辑的图形显示的AVG生成器。特定的示例实施方式还有的另一方面涉及接收使用业务流程管理(BPM)程序包创建的业务模型并创建基于所述创建的业务模型的AVG文件,所述AVG文件可用于(如,通过网络)在外部设备上显示。特定的示例实施方式还有的另一方面涉及通过使用存在的特征(featurespresent in),或通过采用编程语言优化或提高与AVG的显示相关的性能。例如,特定的示例实施方式可以通过使用全局常量、定义辅助函数和/或依赖继承、执行内联、分离常量(splitting constant)和可变的代码部分、跳过视区或可见区域外的指令和/或类似的,优化或提高与AVG的显示相关的性能。特定的示例实施方式还有的另一方面涉及与说明的AVG文件格式相关的指令、语法和/或语义。在特定的示例实施方式中,提供一种在远程设备上通过软件应用(如,浏览器)生成用于后续显示的AVG文件的方法。所述AVG文件对应于在业务流程管理(BPM)软件包内生成的图形业务流程模型。适用于所述模型的信息被接收。通过至少一个处理器,根据(a)所述接收的适用于所述模型的信息,和(b)包含从属于其上显示所述模型的远程设备的平台但独立于接收的适用于所述模型的信息的代码的绘制器片段文件,所述AVG文件被生成。所述AVG文件包括用于使所述模型在所述软件应用中显示的可执行的指令。在特定的示例实施方式中,提供一种在远程设备上显示图形模型的方法。一个AVG文件在所述远程设备上被接收,所述AVG文件已经根据(a)适用于所述模型的信息,和(b)从属于其上显示所述模型的远程设备的平台但独立于接收的适用于所述模型的信息的静态代码被生成。所述AVG文件包括用于使所述模型在所述远程设备中显示的可执行的指令,所述指令包括与用于在所述远程设备上显示的所述模型的再创建相关的基于矢量的命令基于矢量的命令,并且每一个所述基于矢量的命令具有预定的格式。所述指令在所述远程设备上被执行以便使所述模型或其部分在另外提供的显示器的可见区域内被再创建。在特定的示例实施方式中,提供一种AVG生成器。一个接收器被配置为接收适用于在业务流程管理(BPM)软件包中生成的图形业务流程模型的信息。至少一个处理器被配置为根据(a)被所述接收器接收的适用于所述模型的信息,和(b)包含从属于其上显示所述模型的远程设备的平台但独立于接收的适用于所述模型的信息的代码的绘制器片段文件而生成AVG文件。所述至少一个处理器被进一步配置为将所述AVG文件构成为基于矢量的指令以使所述AVG文件可在所述远程设备上执行。根据特定的示例实施方式,可以提供包含AVG生成器和/或AVG绘制器的系统。这样的系统可选择地可能包括,如BPM软件包。根据特定的其它示例实施方式,可以为BPM系统提供这样的可选择地包括AVG绘制器,可选择地分配的AVG绘制器等中的一个或更多的系统。
例如,在特定的示例实施方式中,提供一种BPM系统,包括配置为用以生成图形业务流程模型的软件工具,并且所述图形业务流程模型被表示为XML文件。所述系统的AVG生成器包括配置为用以接收与所述生成的图形业务流程模型相应的所述XML文件的接收器;和至少一个配置为基于XML文件和从属于在其上显示所述模型的远程设备的平台但独立于接收的适用于所述模型的信息的和代码而生成AVG文件的处理器。所述至少一个处理器被进一步配置为将所述AVG文件构成为基于矢量的指令以使所述AVG文件可在所述远程设备上执行。也可能提供配置为接收AVG文件并使接收的AVG文件或其一部分在托管(hosting)所述AVG绘制器的设备上显示的可分配的、平台特定的AVG绘制器。在特定的示例实施方式中,提供一种生成抽象矢量图形(AVG)文件的方法。对应于图像中的一个或更多的图形元素的输入被接收。所述输入通过至少一个处理器被处理,以生成一组命令,当所述命令被执行时,引起它的图像或其一部分在显示设备上显示。该组命令被存储在永久计算机可读存储介质上的可执行文件内,以便后续在所述显示设备上执行。所述命令从一个绘制命令清单中中选择,所述绘制命令清单至少包括以下部分定义仿射变换矩阵并改变与显示设备相关的状态(state)的变换工具的 设定变换命令,连接增加(add)变换命令的参数与所述状态的当前的变换工具的增加变换命令,定义其中绘制命令具有效果的区域并改变所述状态的裁剪(clip)工具的设定裁剪(set clip)命令,连接所述增加裁剪命令的参数与所述状态的当前的裁剪工具的增加裁剪命令,在所述显示设备上绘制编码图像的绘制图像命令,一个设定所述状态的形状工具的设定形状命令,改变所述状态的字体工具的设定字体命令,改变所述状态的刷子工具的设定刷子命令,改变所述状态的铅笔工具的设定铅笔命令,改变所述状态的字母符号(alpha)工具的设定字母符号命令,使用所述状态的所述形状和刷子工具在所述显示设备上绘制填充的形状的填充命令,使用所述状态的形状和铅笔工具在所述显示设备上绘制形状的轮廓的绘制命令,使用所述状态的所述字体工具在所述显示设备上的特定的区域绘制字符串的绘制文本命令,拷贝完成的状态并将它推入状态堆栈的保存状态命令,和使顶端入口(topmost entry)从所述状态堆栈出栈并设定所述出栈的顶端入口的当前状态的恢复状态命令。在特定的示例实施方式中,提供一种在显示设备上显示储存在抽象矢量图像(AVG)文件内的图像或其部分的方法。所述AVG文件被接收。存储在AVG文件中的命令通过至少一个处理器被执行以便显示其图像或部分。所述命令至少包括以下的绘制命令定义仿射变换矩阵并改变与显示设备相关的状态(state)的变换工具的集(set)变换命令,连接增加(add)变换命令的参数与所述状态的当前的变换工具的增加变换命令,定义其中绘制命令具有效果的区域并改变所述状态的裁剪(clip)工具的集裁剪(set clip)命令,连接所述增加裁剪命令的参数与所述状态的当前的裁剪工具的增加裁剪命令,在所述显示设备上绘制编码图像的绘制图像命令,设定所述状态的形状工具的集(set)形状命令,改变所述状态的字体工具的集字体命令,改变所述状态的刷子工具的集刷子命令,改变所述状态的铅笔工具的集铅笔命令,改变所述状态的字母符号(alpha)工具的集字母符号命令,使用所述状态的所述形状和刷子工具在所述显示设备上绘制填充的形状的填充命令,使用所述状态的形状和铅笔工具在所述显示设备上绘制形状的轮廓的绘制命令,使用所述状态的所述字体工具在所述显示设备上的特定的区域绘制字符串的绘制文本命令,拷贝完成的状态并将它推入状态堆栈的保存状态命令,和使顶端入口(topmost entry)从所述状态堆栈出栈并设定所述出栈的顶端入口的当前状态的恢复状态命令。特定的示例实施方式也提供永久计算机可读存储介质有形存储用于执行以上概括的和/或其它方法的指令。这些方面和示例实施方式可以分别使用和/或以多种结合的方式应用以实现本发明的进一步的实施方式。


通过参考以下示例说明的实施例的详细描述并结合附图可以更好并且更完全地理解这些和其他特征及优点,其为图I是在ARIS内创建的特别地显示Scrum项目的冲刺阶段的示例模型;图2说明基于位图的图形怎么显示在网页浏览器的视区; 图3说明用于在网页浏览器的视区显示模型的基于瓷砖的方法;图4说明在网页浏览器的视区中显示模型的基于矢量图形的方法;图5显示按照浏览器端绘制技术被供应给用于在视区最终显示的绘制器的模型数据;图6显示传统的图形绘制技术,其中多个图形被传给绘制器,所述绘制器使用静态程序代码将这些图形解释为用于在窗口显示的图形数据;图7是根据特定的示例实施方式说明示例的AVG图形代码生成器的框图;图8显示根据特定的示例实施方式扩展适当的Java类的示例的AVG图形生成器;图9是根据特定的示例实施方式将第一输入图形格式转变为第二 Java描述语言类型AVG格式的JavaAVG生成器的示例;图10是根据特定的示例实施方式用于AVG的命令的示例的类层级的摘录版本;图11是根据特定的示例实施方式用于上述显示和描述的有关具有红色虚线边框的黄色方框的图像的AVG命令的示例的Java程序;图12是图9的修改版本,根据特定的示例实施方式也接受绘制器片段文件作为输A ;图13说明根据特定的示例实施方式使用Java描述语言作为目标语言的AVG的创建和分配。图14是根据特定的示例实施方式可以得益于嵌入在AVG内的辅助函数的示例的复杂图形;以及图15是显示根据特定的示例实施方式在不同的AVG文件中普通的代码部分怎样能够被共享的示意图。
具体实施例方式特定的示例实施方式涉及一种抽象矢量图形(AVG)格式。在此描述的所述示例的AVG格式可能被用于具体的基于矢量的图形格式,并且总体上被用于图形。此处描述的所述示例的AVG可能被用于生成在浏览器窗口或其它平台中显示的模型/图形。较优地,所述AVG格式可以为大的模型/图形快速且有效地工作,可以很好地缩放,并且可以具有减少的处理和/或内存负载要求。
在特定的示例实施方式中,对于每个AVG(A),创建一个单独的程序(Ap),其工作是将A显示在所述目标设备上。在特定的示例实施方式中,Ap包括需要显示A的一切并且不需要装入/输入任何附加的外部数据,在这个意义上Ap是独立的。在一些示例实施方式中,在Ap执行过程中处理的仅有的参数是所述目标设备。在特定的示例实施方式中,因为正被创建,由编程语言提供的特征可能被用于提高创建的程序,例如,通过减少使用的主内存的数量,CPU时间和/或编程大小。该方法使得AVG的定义被保持的简单,然而更多的智能被放入生成所述程序的流程。此处描述的所述示例技术可能被用于与任何编程语言相关,不论编译的或解释的语言。这样,比如此处描述的所述示例技术可能被用于与Java, C/C++,C#, JavaScript等相关。图6显示传统的图形绘制技术,其中多个图形被传给绘制器,所述绘制器使用静态程序代码将这些图形解释为用于在窗口显示的图形数据。但是,特定的示例实施方式的方法可能是较优的,由于不需要编写用于所述外部格式的分析程序。例如,不需要在低级 别文本表达(如用于XML表达的文件类型定义DTD)中定义所述格式。相反,所述图形格式的定义可以在更抽象的、语义的级别上被定义,但其可以在数学上较严格。另一个优点涉及以快速和有效的方式内建所述内部数据结构的能力,由于它可能直接在所述目标编程语言内进行并且从而可能得益于嵌入现代编译器和解释器的优化。还有另一个优点涉及编程语言共有的特征和技术可以被用于优化的事实,例如,如以下更详细的描述。图7是根据特定的示例实施方式说明示例的AVG图形代码生成器的框图。如图7所示,一个或更多的图形可以被提供给一个AVG程序生成器。所述AVG代码生成器可以帮助将一个或更多图形转换为只负责在所述目标平台上绘制所述图形的程序代码,例如,使用平台和设备特定的绘制API。所述生成的程序代码转而根据编程语言被格式化。所述使用的特定的编程语言和/或绘制API可能部分依赖于所述目标平台。所述API可以接收所述代码并格式化在所述窗口显示的图形。JavaScript对象符号(JSON)是用于应用之间的数据交换的轻量级的基于文本的格式。JSON来源于JavaScript编程语言并且可能描述简单的数据结构以及相关的阵列。JSON来源于JavaScript。它是语言独立的,并且用于大多数普通的编程语言的分析器是可用的。因为每个创建的JSON文件是语法上合法的JavaScript程序,它可以通过使用内建的JavaScript函数eval O在JavaScript程序中执行。在这种情况下分析所述JSON文件的所述程序也被写入JS0N,这使得可能分析JSON文件非常容易和快速。用JS0N,应该可能定义后续可能被JavaScript引擎评价的矢量图形格式。该方法使得可能非常快地分析一个矢量图形结构。但是,该结构必须后来被绘制器解释并且在图形命令中被翻译。这是需要的因为JSON被设计为表达数据结构并且没有提供哪种编程API。如上所指,特定的示例实施方式关于抽象矢量图形(AVG)技术。以下的说明帮助表明用于矢量图形的示例绘制技术(例如,怎样使所述格式显示给设备,例如计算机显示器)。但是,这里提出的所述示例技术独立于AVG具体的定义并且可以为所有或至少大范围的矢量图形格式工作。这样此处的术语“AVG”可以被替换为特定的矢量图形格式。虽然以下根据类似Java的语法表示特定的示例代码片段,将理解到可以使用任何其它的编程语言(例如,C,C++,C#,ActionScript等),例如,如果提供一些普通的抽象(t匕
如子程序/方法,全局变量和常量等)。第一示例涉及简单的具有红色虚线边框的黄色举行。下面的表达可能被用于创建这样的示例图像
set Brush { * # f f f ; O O ' I
setShape (Rectangles (338, 39 6 , 524, 3 08))fill (}
setPen (6, DASHED, * #ff0000')draw ()然后,如将理解的,所述AVG包括一组命令。相比之下,所述绘制器负责在特定的设备(例如,计算机显示器,打印机等)上显示所述AVG图形。这样,所述绘制器具有一个状态,由于这些命令改变所述绘制器的状态并且其它的命令间接地提到所述状态。例如,在其它的命令之间,所述绘制器的状态包含刷子。在上述示例的所述命令setBrush(/ #ffff00/ )将使所述绘制器的刷子改变为'#ffff00/ (即“黄色”)。所述绘制器的状态的另一个工具是所述形状。所述下一个命令setShape (Rectangle(338, 396,524,308))将使它改变为分别具有上述x位置,y位置,宽度和高度的矩形。所述下一个命令fill ()是间接地使用所述绘制器的状态的命令的示例,在这个意义上它将使用绘制器的当前的形状在所述目标设备上绘制一个形状,该形状被所述绘制器当前的刷子填充。所述下一个命令setPen (6,DASHED/ #ff0000/ )改变另一种绘制器状态的工具即铅笔。所述铅笔具有宽度出),还有类型和颜色。最后,所述drawO命令将使用所述绘制器的当前的形状并通过使用所述绘制器的当前的铅笔将它的轮廓绘制到所述屏幕上。矢量图形格式像AVG是足够强大的允许复杂的图形的表达,例如,对于在业务流程模型标记法(BPMN)或UML图表,还有由ARIS提供的模型类型中使用的图形。可以手动创建一个AVG。但是,早前(morn)通用的解决方案是编写具有比如适当的格式的BPMN或UML图表作为输入,并具有对应的AVG作为输出的程序。例如,一个可能被用于Java应用的Java模型(比如,ARIS Express)可以被用于生成AVG文件。所述创建的模型将所述Java图形API翻译为AVG图形命令。可能在Java字中发现用于创建SVG或其它基于矢量的图形格式的类似的方法。图8显示根据特定的示例实施方式,扩展适当的Java类的示例的图形生成器。所述Java抽象窗口工具包(AWT)组件包括支持在ARIS Express中传统图形格式显示的图形实现。但是,所述AWT组件也包括Java AVG生成器,其被配置为生成AVG格式(例如,使用HTML 5 Canvas的JavaScript代码)的可在网页内或合适的设备上显示的图形。图9是根据特定的示例实施方式将第一输入图形格式转变为第二 Java描述语言类型AVG格式的Java AVG生成器的示例。所述特定的示例实施方式的AVG生成器将JavaAffT图形命令翻译为AVG图形命令。这样,在特定的示例例子中可能在Java应用中和在网页浏览器中显示同样的图形。所述创建的AVG生成器的实现是简单的,因为在不同平台的不同的图形API和编程语言是非常类似的。这样,也可能将所述Java AWT图形命令翻译为AVG 图形命令。比如,Adobe Flex, Java AffT,和 JavaScript (HTML 5)的图形 API 提供类似的图形几何和命令。但是,将理解到其它的输入图形格式可能被用于不同的实现,和/或用于所述AVG的格式也可能在不同的实现中不同。在第一种方法中,AVG可能例如以文件的形式被递送给所述绘制器。该文件可能包括,比如所述AVG的XML实现。所述绘制器可能分析所述XML文件并内建一些包括所述AVG命令的列表的内部数据结构。图10是根据特定的示例实施方式用于AVG的 命令的示例的类层级的摘录版本。每一个包含在所述AVG的命令将由抽象超类AbstractCo_and的子类表示。比如,类SetPenCommand代表所述命令setPen,其具有单一的属性,即铅笔被设定。当采用该方法时,绘制(包括所述命令的执行)是简单的。比如,所述AbstractCommand可能具有抽象的方法execute,这样其通过每个子类实现。将使所述AVG显示给具体的设备的类Renderer的方法render,然后可能被构造如下
pubIic void renderiDevice device} {
Ab s t r a c t Comma η d coirmands ; ] = get Commands {); f o r \ Abs t r ac t Corainand corrunaiid c onuiia nds ) { commarici, execute (this );
I
}在AbstractCommand的多个子类中的所述方法execute的实现可以将其再次传送给所述类Renderer,它将知道怎样在所述设备上执行特定的操作。比如,在类DrawCommand中执行的实现可能被实现如下public void execute(Renderer renderer){renderer. draw ();}建立在这个如上所述的基础的方法之上,特定的示例实施方式包括可以在所述目标设备上直接执行的单独的程序(例如,编程语言),具有可以跳过AVG的所述分析步骤的优点。在特定的示例实施方式中,不需要分析所述AVG结构和内建一些包含所述AVG的命令列表的内部数据结构。图11是根据特定的示例实施方式用于上述显示和描述的有关具有红色虚线边框的黄色方框的图像的AVG命令的示例的Java程序。在上述的示例中,为了清楚所述类AbstractCommand和它的子类的定义已经被省略。所述可变的commands命令包括将通过所述绘制器显示的命令的列表。建立所有需要的具体的命令并将该阵列分配给commands通过程序代码被初始化。为了绘制所述图形(通过方法render ),可能迭代所所有的命令并在每一个这些命令上简单地调用execute。所述创建的程序包括一些独立于被显示的具体的AVG的恒定的部分,除所述具体的AVG的命令之外。这样,如上所述与图9相关的AVG的创建可以被调整为如图12所示。如图12所示,绘制器片段被提供给所示AVG生成器。所述绘制器片段包括独立于生成的图形的静态代码。所述绘制器片段也可能是平台依赖的并包括总体结构或框架,使可能在所述目标平台上执行所述图形程序或代码。换句话说,除所述图形之外,用于一种具体的目标语言的所述AVG生成器可能具有编程片段作为输入,并且它可以发出可能后续被编译或解释的一个或更多的程序文件。将理解到假如创建的输出格式具有更多的灵活性,所述目标程序语言可能被硬编码进所述生成器和/或可能是传给或从所述生成器选择的参数。所述AVG生成器可能包括用于执行这些和/或其它函数,和/或多个用于接收所述绘制器片段文件的接收器,一个所述图形模型的代表(其可能是例如BPMN,UML或其它可接受的格式的XML文件)等。也可能提供永久计算机可读存储介质用于至少临时存储这些和/或其它文件,比如包括所述输出AVG文件,用于它的创建的程序库、编译器、测试系统等。由于前文所述,将理解到特定的示例实施方式涉及创建用于显示单一的图形的程序的技术。如下文所示,该示例技术通过许多示例方案可能具有广泛的,实际的应用。图13说明根据特定的示例实施方式使用Java描述语言作为目标语言的AVG的创建和分配。在图13的示例方案中,所述AVG将被显示在网页浏览器内并且同样地,所述目 标设备是所述浏览器内的框架。在该示例中,Java描述语言被作为目标语言使用,这是有利的因为Java描述语言几乎被所有现代浏览器(尤其包括移动电话和平板电脑PC)支持,并且Java描述语言是一种解释性语言(比如,与将要求附加的编译步骤的ActionScript相反),并且从而可以从网页浏览器到网页浏览器直接发送所述程序。AVG将通过所述ARIS客户(当前是基于Java的应用)创建。所述AVG通过网页服务器(例如,所述ARIS社区服务器)分配给目标设备,在其中它被绘制。换句话说,所述AVG可能被执行并且从而所述图形将被绘制,使得模型被创建并被显示。依赖所述目标浏览器的性能,比如所述绘制器可以直接使用HTML5 Canvas命令或创建SVG或VML。所述绘制器不需要以100%的缩放水平显示所述图形。例如,所述绘制器可以提供附加值特征包括,例如缩放、滚动、全屏和或其它的视图。如上所指,可能通过使用编程语言提供的特征改进或优化。比如,那些改进或优化可能节省大量的CPU时间和主内存。所述AVG的分析的和解释的版本将未必能够影响这些改进或优化。示例的改进或优化描述如下。第一改进或优化涉及全局常量的使用。经常发生同样的命令反复与同样地参数一起被使用。例如,所述刷子被设定为黑色经常发生,如下例
new SetB r usliCoimnand I" # O O O O O O ) rnev/ Fl I iCoirunanci ( },
*m*
new SetBrushCommand " # 0 0 0 0 0 0!l ,
new SetBrushCommand (H #000000” t这可以通过单一的全局变量的定义替换,例如,如下pr ivat e f I Ti a I sta 11 c S cat Brns h Command SI =new SetBrushCommand (" #000000'1)
Si,
new F:^l I Command (),
SI,
SI,将理解到这个技术可以被应用到所有不具有参数的命令。也将理解到整个命令以及重复的模式、经常发生的后者可以被常量替换,例如,比如有关颜色、形状等的参数。实际上,当位图被重复使用,内存、运行时间和带宽的节省可能是非常大的。有关全局常量的使用的示例的优点包括节省主内存的能力(因为一些命令和数据结构必须只被内建一次),在运行时间达到更好的性能(再次,一些命令和数据结构必须只被内建一次),减少生成的代 码的大小(比如,可以减少编译器或解释器使用的分析时间,在所述程序代码必须通过网络连接比如因特网等发送的情况下减少带宽消耗),和/或类似的。另一个改进或优化涉及辅助函数的使用。由每个主要的编程语言提供的限制(constrict)是功能(或在面向对象语言中所称的“方法”)。这样的功能或方法可以被用于减少所述生成的代码的大小并且从而节省带宽。例如,每一个newSetBrushCommand(”#000000”)的发生可以以单一的对cl ( “#000000”)的方法调用代替,其中Cl被定义为public SetBrushCommand cl(String color) {return new SetBrushCommand(c);}除了能够以辅助函数代替单一的命令,也可能重复命令的序列。图14是根据特定的示例实施方式可以得益于嵌入在AVG内的辅助函数的示例的复杂图形。如图14中的示例图像所见,所述同样的符号被使用许多次。因为所述符号是十分复杂的(例如,包括3D效果、绘阴影、右上角的图标等),它可能包括许多AVG命令。因此新的辅助函数F可能被创建,所述辅助函数F包括那些命令。辅助函数F可能被调用到其中使用复杂的符号的每个地方。将理解到命令序列将不总算相同的,例如,因为用于符号的X坐标和y坐标可能不同。在这个例子中,可能包括以下的模式
可能通过为函数F提供用于X坐标和y坐标的两个参数来解决复杂性。这样,上
述的两个序列可能被以下示例的代码片段代替

如果在模式中有更多的不同,更多的参数可能提供给F。F可能被定义如下

因为两个命令被命令的子序列替换,F可能是从AbstractCommand继承的并且如下实现execute的新的类(例如,与成为函数本身相反),这样,比如private class P extends AbstractCommand {
private final int x, y;
public Flint x# int y} {this .X = x;this.y = y;
I
publ ic void, execute (JlenoorBT r J { new S^zl{
r;ev; Rec/cangl e (x, y, 52 4 { 3 08) j . execute {r;); new F i I I Conmanci () . execi:v.e ( r);
}
}将理解到这种技术可以被递归地使用,例如,在execute方法F内,其它合成的命令也可能被调用。这样,将理解到辅助函数的使用减少了所述生成的代码的大小,并且从而减少了编译时间和/或带宽消耗。另一个改进或优化涉及内联的使用。图13中列出的程序可以被实现如下
Ptiblie class Renderer {
pubIi c VGiGce device) {
r: ew S e t Br us hC onuncind {I - f f f f G CH} . exe cute {r.h is);
new SelShapeCoriuikitid (new Rectdngle !— 3 3 8 , 3 96, 524 r 3 08 ))
execuzeithIs!; r:e\v Pi I !Command ( ■ exec.ite {t h ; s);
r:ew SotPanCommand £. 6 f DASHEDf f1 #t f 0000 H) ,execute I this; inew DrawConmand(} ·execute I this ;
}
**a为了当前的这个例子,假设SetBrushCommand的实现构成如下public class SetBrushCommmiA extends AbstractCoimand {
private final String brush ·
public SetBrus'nCommand (String b) { this, brush = b *
}
public void execute{Renderer r) C
r.setBrush(brushI;
} }这样,将理解到所述execute方法简单地将它的任务再次委托(delegates)给所述绘制器。相应地,可能代替 new SetBrushCommand( “#ffff00”) · execute (this);在上述具有 SetBrush( “#ffff00”)的列表中。结果,可能移除AbstractCommand和它所有的子类。因此,也不需要在主内存中内建所有的命令。实际上,这可能通过所述程序替换。相应地,可能以程序大小为代价获得主内存。但是,将理解到所述生成的程序文本文件将不会显著改变。这个折衷对于大多数系统是合适的,因为通常静态程序代码的处理比动态数据结构的创建更有效率。实际上,编译器和解释器被训练为以多种方式优化代码。这个技术可能在多种情况下是非常有帮助的,例如,在新对象的创建较昂贵的系统上和在具有有限的或昂贵的无用单元收集设备(比如,在因特网浏览器6中的Java描述语目)的系统上。另一个改进或优化涉及分离常量和可变代码部分的使用。如上文所解释的,在特定的示例实施方式中,创建的程序代码由一些恒定不变的部分(用于命令、绘制器等的类定义)加上具体的AVG的(可变的)命令组合而来。如,假定多个AVG (—个接一个地或所有的在同一时间)在一个浏览器内显示。在这种情况下,反复下载常量部分是浪费带宽的。但是,可能将所述程序文件分离为包含然后被所有其它的脚本共享的常量部分和可变部分的单一文件。然后代理和网页浏览器缓存技术可以帮助确保所述常量部分以减少的或最低的次数被下载到所述客户。所述分离可能尤其在解释性语言中有利,比如Java描述性语言。图15是显示根据特定的示例实施方式在不同的AVG文件中普通的代码部分怎样能够被共享的示意图。如图15所示,考虑到所述普通部分的再使用,所述普通的部分被识别并只一次被传输给所述renderer. js文件。结果,为使所有图形被正确显示,只需要下载所述AVG的不同的部分。还有另一种改进或优化涉及所述视区外的分离命令。如上所讨论,在不同的缩放步骤中,所述绘制器可能在目标设备上显示所述AVG。在所述AVG和/或所述缩放系数较大的情况下,可能发生整个AVG将不完全适合所述目标设备(例如,屏幕或网页浏览器的框架)。在这种情况下,所述图形的部分将对于用户不可见,除非采用了后面的摇动镜头或缩放功能。当缩放系数改变或视区改变,依赖所述目标设备,所述绘制器可以完全从头开始创建所述图形。原则上,不需要执行在不可见的区域内创建图形输出的命令,例如,不在所述视区的范围内从而相当于不可见的所述AVG的部分。当提前知道一些可见的命令将不会在以后使用时,这是可能的。在某些情况下可能适应fill的实现以使它取得来自所述绘制器的当前的形状S并且首先检查S是否重叠所述视区。有一些情况可能跳过整组命令,因为大部分矢量图形提供比如,saveState (它保存所述绘制器的整体状态到堆栈上并且它也是所述绘制器的部分)和restorestate (它使顶端入口(topmost entry) E从所述堆栈出栈并恢复所述绘制器状态到E)的命令比如,当一组命令将被执行并且想要确定后续所述绘制器的状态与执行这些命令之前相同时,这些命令可能被使用。这样,比如,当实现上述辅助函数技术时,命令的这个模式可能被使用。考虑到下列例子,其中Cl,. . . Cn是任意命令·
saveState {)
Cl,*
C2|
ψ*
Cn;
restoreStare ();该命令序列可能被替换如下
Rec t Cing —I e bo unds = η ον·/ Rec tangle (...); i f ( rendere :, Cfe t Vi ew Port {) . o v e r I ap s (bounds}) { saveState{);
Cl ;
C 2 ;
Cn ;
restoreState{);
}这里,可变的边框包括用于命令Cl,... Cn的边框矩形,其可能通过静态分析Cl, . . . Cn 决定。将从以上理解到,所述AVG可以以任何适当的形状定义。形式的表达是可能的。但是以下所述是更高级别的抽象和不以严格的数学公式定义的语义。然而,将理解到,以下的说明包括所有允许本领域技术人员构建用于目标设备的AVG的绘制器需要的信息。关于所述绘制器的状态,将理解到一个AVG可能包括一个命令的序列,以下更详细地描述。每一个命令将改变所述输出设备的显示或者改变所述绘制器的状态。那些命令的语义将变得与下面描述的命令的语义一样清楚。所述绘制器的状态可能包括以下和/或其它工具铅笔、刷子、字体、形状、变换、剪裁、字母符号(alpha)、状态堆栈等。下面是一个采用巴克斯一诺尔范式的示例的AVG定义
AVG:;= [command]*
mmmanise tTrans f o rii(traiiifonn)|
addT r an s f ormC transform)I
/I
setClip(clip)(
addC lip(clip)| drawimagc{image, dx1, dyi, dx2; dy2, sxh s,,, sx2, sy2) I
set Shape (sliapc)(
se t Fon t(IbiiiNanie, fontFacc, fonfSiic)j
f i I iI
DrawJ
set Br ush( brush)|
se::Pen(pei”|
set Aip h a (do ub Ic)(
drav#T ex t (strm g, X,y >|
saveState|
权利要求
1.一种在远程设备上通过软件应用生成用于后续显示的抽象矢量图形文件的方法,所述抽象矢量图形文件对应于在业务流程管理软件包内生成的图形业务流程模型,所述方法包括 接收适用于所述模型的信息;以及 通过至少一个处理器,根据(a)所述接收的适用于所述模型的信息,和(b)包含从属于其上显示所述模型的远程设备的平台但独立于接收的适用于所述模型的信息的代码的绘制器片段文件而生成所述抽象矢量图形文件, 其中,所述抽象矢量图形文件包括用于使所述模型在所述软件应用中显示的可执行的指令。
2.根据权利要求I所述的方法,其中所述抽象矢量图形文件以解释性语言编写。
3.根据权利要求2所述的方法,其中所述抽象矢量图形文件以Java描述语言编写。
4.根据权利要求I所述的方法,其中所述抽象矢量图形文件被编译。
5.根据权利要求I所述的方法,其中所述抽象矢量图形文件包括多个基于矢量的命令,每个所述基于矢量的命令具有预定的语法和相关的语义。
6.根据权利要求I所述的方法,进一步包括通过网络连接将所述抽象矢量图形模型转送给远程设备。
7.根据权利要求6所述的方法,其中所述抽象矢量图形模型在托管所述业务流程管理软件包的设备上生成。
8.根据权利要求I所述的方法,进一步包括使得所述远程设备上的所述模型显示而不分析所述抽象矢量图形文件。
9.根据权利要求I所述的方法,其中适用于所述模型的所述信息以BPMN和/或UML格式被接收。
10.根据权利要求I所述的方法,其中适用于所述模型的所述信息作为XML文件被接收。
11.根据权利要求I所述的方法,其中所述可执行的指令根据选择的编程语言被提供,并且该方法进一步包括根据由于选择的编程语言可用的一个或更多的功能优化所述指令。
12.根据权利要求I所述的方法,进一步包括修改最初通过使用全局常量、定义辅助函数和/或依赖继承、执行内联、分离常量和可变的代码部分和/或跳过将使得元素在所述软件应用的可见区域外显示的命令而生成的所述指令。
13.—种在远程设备上显示图形模型的方法,所述方法包括 在所述远程设备上接收一个抽象矢量图形文件,所述抽象矢量图形文件已经根据(a)适用于所述模型的信息,和(b)从属于其上显示所述模型的远程设备的平台但独立于接收的适用于所述模型的信息的静态代码而被生成, 所述抽象矢量图形文件包括用于使所述模型在所述远程设备中显示的可执行的指令,所述指令包括与用于在所述远程设备上显示的所述模型的再创建相关的基于矢量的命令,每一个所述基于矢量的命令具有预定的格式;以及 在所述远程设备上执行所述指令以便使所述模型或其一部分在另外提供的显示器的可见区域内被再创建。
14.根据权利要求13所述的方法,其中所述模型是在业务流程管理(BPM)软件包中生成的图像业务流程模型。
15.根据权利要求14所述的方法,其中所述模型被显示在所述远程设备上运行的浏览器中。
16.根据权利要求13所述的方法,其中所述抽象矢量图形文件以解释性语言编写。
17.根据权利要求16所述的方法,其中所述抽象矢量图形文件以Java描述语言编写。
18.根据权利要求13所述的方法,其中所述显示在没有分析所述抽象矢量图形文件的情况下被实行。
19.一种抽象矢量图形生成器,包括 被配置为接收适用于在业务流程管理软件包中生成的图形业务流程模型的信息的一 个接收器;和 至少一个处理器,该处理器被配置为根据(a)被所述接收器接收的适用于所述模型的信息,和(b)包含从属于其上显示所述模型的远程设备的平台但独立于接收的适用于所述模型的信息的代码的绘制器片段文件而生成抽象矢量图形文件, 其中所述至少一个处理器被进一步配置为将所述抽象矢量图形文件构成为基于矢量的指令以使所述抽象矢量图形文件可在所述远程设备上执行。
20.根据权利要求19所述的抽象矢量图形生成器,其中所述抽象矢量图形文件包括通过所述远程设备上运行的软件解释的语言中的代码。
21.根据权利要求19所述的抽象矢量图形生成器,其中所述抽象矢量图形文件被编译用以后续在所述远程设备上的执行。
22.根据权利要求19所述的抽象矢量图形生成器,其中所述抽象矢量图形文件被构成用以通过在所述远程设备上运行的浏览器来执行,而不需要在所述浏览器上对所述抽象矢量图形文件做任何分析。
23.根据权利要求19所述的抽象矢量图形生成器,进一步包括编程语言优化器,其被配置为影响由于编程语言可用的优化功能,在所述编程语言优化器中所述指令被写入以修改所述指令,以便提高所述抽象矢量图形文件在其执行上的最终效率。
24.一种永久计算机可读存储介质,其有形地存储用于执行权利要求I的所述方法的指令。
25.一种永久计算机可读存储介质,其有形地存储用于执行权利要求11的所述方法的指令。
26.—种业务流程管理系统,包括 配置为用以生成图形业务流程模型的软件工具,所述图形业务流程模型可表示为XML文件;和 抽象矢量图形生成器,包括 配置为用以接收与所述生成的图形业务流程模型相应的所述XML文件的接收器;和 至少一个配置为基于XML文件和从属于其上显示所述模型的远程设备的平台但独立于接收的适用于所述模型的信息的代码而生成抽象矢量图形文件的处理器, 其中所述至少一个处理器被进一步配置为将所述抽象矢量图形文件构成为基于矢量的指令以使所述抽象矢量图形文件可在所述远程设备上执行。
27.根据权利要求26所述的系统,进一步包括一个可分配的、平台特定的AVG绘制器,其被配置为接收抽象矢量图形文件并使接收的抽象矢量图形文件或其一部分在托管所述抽象矢量图形绘制器的设备上显示。
28.一种生成抽象矢量图形文件的方法,所述方法包括 接收对应于图像中的一个或更多的图形元素的输入; 通过至少一个处理器处理所述输入,以生成一组命令,当所述命令被执行时,使得它的图像或其一部分在显示设备上显示;以及 将该组命令存储在永久计算机可读存储介质上的可执行文件内,以便后续在所述显示设备上执行, 其中所述命令从一个绘制命令清单中选择,所述绘制命令清单至少包括以下部分 定义仿射变换矩阵并改变与显示设备相关的状态的变换工具的设定变换命令, 连接增加变换命令的参数与所述状态的当前的变换工具的增加变换命令, 定义其中绘制命令具有效果的区域并改变所述状态的裁剪工具的设定裁剪命令, 连接所述增加裁剪命令的参数与所述状态的当前的裁剪工具的增加裁剪命令, 在所述显示设备上绘制编码图像的绘制图像命令, 设定所述状态的形状工具的设定形状命令, 改变所述状态的字体工具的设定字体命令, 改变所述状态的刷子工具的设定刷子命令, 改变所述状态的铅笔工具的设定铅笔命令, 改变所述状态的字母符号工具的设定字母符号命令, 使用所述状态的所述形状和刷子工具在所述显示设备上绘制填充的形状的填充命令,使用所述状态的形状和铅笔工具在所述显示设备上绘制形状的轮廓的绘制命令,使用所述状态的所述字体工具在所述显示设备上的特定的区域绘制字符串的绘制文本命令, 拷贝完成的状态并将它推入状态堆栈的保存状态命令,和 使顶端入口从所述状态堆栈出栈并设定所述出栈的顶端入口的当前状态的恢复状态命令。
29.—种在显示设备上显示储存在抽象矢量图像文件内的图像或其部分的方法,所述方法包括 接收所述抽象矢量图形文件;以及 通过至少一个处理器执行存储在抽象矢量图形文件中的命令以便显示其图像或部分, 其中所述命令至少包括以下的绘制命令 定义仿射变换矩阵并改变与显示设备相关的状态的变换工具的设定变换命令, 连接增加变换命令的参数与所述状态的当前的变换工具的增加变换命令, 定义其中绘制命令具有效果的区域并改变所述状态的裁剪工具的设定裁剪命令, 连接所述增加裁剪命令的参数与所述状态的当前的裁剪工具的增加裁剪命令, 在所述显示设备上绘制编码图像的绘制图像命令, 设定所述状态的形状工具的设定形状命令, 改变所述状态的字体工具的设定字体命令, 改变所述状态的刷子工具的设定刷子命令,改变所述状态的铅笔工具的设定铅笔命令, 改变所述状态的字母符号工具的设定字母符号命令, 使用所述状态的所述形状和刷子工具在所述显示设备上绘制填充的形状的填充命令,使用所述状态的形状和铅笔工具在所述显示设备上绘制形状的轮廓的绘制命令,使用所述状态的所述字体工具在所述显示设备上的特定的区域绘制字符串的绘制文本命令, 拷贝完成的状态并将它推入状态堆栈的保存状态命令,和 一个使顶端入口从所述状态堆栈出栈并设定所述出栈的顶端入口的当前状态的恢复状态命令。
30.一种永久计算机可读存储介质,其有形地存储用于执行权利要求28的所述方法的指令。
31.一种永久计算机可读存储介质,其有形地存储用于执行权利要求29的所述方法的指令。
全文摘要
在此描述的特定的示例实施方式涉及用于对应于由业务流程管理(BPM)程序包生成的业务流程的矢量图形的有效绘制的系统和/或方法。这样的图形可能以抽象矢量图形(AVG)的格式提供。在特定的示例实施方式中,矢量图形与包括静态代码的绘制器片段文件一起被提供给AVG生成器,所述绘制器片段文件独立于生成的图形但依赖于目标平台。在特定的示例实施方式中,所述AVG生成器产生可在目标设备上执行的流程逻辑以使图形显示。
文档编号G06F3/14GK102855136SQ201210167710
公开日2013年1月2日 申请日期2012年5月25日 优先权日2011年5月31日
发明者拉尔夫·施埃德豪尔, 罗科·德·安吉利斯 申请人:德商赛克公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1