CN1429362A - 通信服务供应方法和设备以及用于开发供应模块的对象编程语言 - Google Patents
通信服务供应方法和设备以及用于开发供应模块的对象编程语言 Download PDFInfo
- Publication number
- CN1429362A CN1429362A CN01809736A CN01809736A CN1429362A CN 1429362 A CN1429362 A CN 1429362A CN 01809736 A CN01809736 A CN 01809736A CN 01809736 A CN01809736 A CN 01809736A CN 1429362 A CN1429362 A CN 1429362A
- Authority
- CN
- China
- Prior art keywords
- signal
- supply
- task
- instance
- conversion
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M3/00—Automatic or semi-automatic exchanges
- H04M3/22—Arrangements for supervision, monitoring or testing
- H04M3/2254—Arrangements for supervision, monitoring or testing in networks
- H04M3/2263—Network management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q3/00—Selecting arrangements
- H04Q3/0016—Arrangements providing connection between exchanges
- H04Q3/0029—Provisions for intelligent networking
- H04Q3/0037—Provisions for intelligent networking involving call modelling techniques, e.g. modifications to the basic call state model [BCSM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/13039—Asymmetrical two-way transmission, e.g. ADSL, HDSL
Abstract
一种用于供应通信服务的供应引擎和用于配置供应引擎(100)的模式语言。可以集合多个对象来定义代表用于进行普通供应操作的状态机的供应模型。该状态机包括供应模型的多当前状态集(110)、用于生成信号的机制(132)、任务和用于定义执行(138)任务和在当前状态集(110)中增加或删除状态(136)的情况的至少一个转换。信号(132)可以被即刻执行,或者被安排在稍后执行,以允许用暂时的方式控制供应操作。供应模型可以作为特定的实例被执行,且实例可以包括对作为子实例被执行的其他模型的调用。
Description
相关申请资料
本申请和申请人早先于2000年3月17日提交的申请序列号No.60/189,988的专利申请有关,且其揭示被整体地引入这里供参考。
发明背景
发明领域
本发明涉及通信服务的供应,尤其涉及用于供应过程的暂时控制的方法和设备以及用于开发供应模型的对象编程语言。
相关技术描述
术语“供应”指的是完成为各方供应通信服务安装、配置和管理所必需的工作过程。例如,当消费者预定了新的电话服务,电话公司可能必须要做出各种物理连接,以建立电路及在客户数据库及计费系统等等中的各种数据条目。对于因特网服务而言,供应过程变得更加复杂。例如,当把拨号、电缆或者数字用户线路(DSL)因特网服务供应给新的消费者时,因特网服务供应商(ISP)必须完成多个工作过程,如配置和建立电子邮件帐户、配置和建立主机帐户以及建立DHCP(动态主机配置协议)。
美国专利5774689、5790633、5881131和5937048是通信供应系统中当前技术发展水平的代表。美国专利5774689揭示了一种供应系统,其中和基础设施部件有关的信息作为对象被存储在数据库中。但是,这些专利无法揭示灵活的供应引擎,或相应的编程方法。具体而言,常规的供应方法不允许对必须完成的各种工作过程进行灵活的暂时控制。例如,在成功地完成一些供应工作过程之前,经常需要多次尝试这些过程,这是由于复杂的通信网络其内在的差错和延时造成的。另外,在开始其他的工作过程之前,必须要成功地完成一些工作过程。出于这些原因,供应是非常复杂的,且常规地要求客户服务代表进行干涉,以从客户接受服务请求信息,并确保所有的工作过程以正确的次序成功地完成。
美国专利5946485、5019961、5862372和6014138揭示了用于便于灵活编程的各种面向对象的编程技术。这些专利,和其他面向对象编程例子一样,不支持工作过程的暂时控制,因此无法和供应工程的复杂性相适应。
美国专利5283896揭示了一种用皮特里网技术相互地控制诸如计算机外围设备等排它资源的系统。每个任务都是由具有单个标记(即状态)的基础状态机来表现的。根据任务将被执行的顺序,任务被循序地或者并行地安排。该引用和通信提供技术无关,且没有教导或建议供应系统中所需的工作过程暂时控制。
基于存在有无数的商业客户管理和网络设备配置系统这一事实,从而进一步限制了通信服务提供商处理服务安装量和服务传送需求管理的能力。为了最小化由于系统不兼容性而影响当前服务的可能性,服务提供商必须经常使用从一个供应商来的用于客户服务的应用的系统,以及从一个供应商来的用于网络解决方案的系统。但是,该方法把提供商锁定在长期的供应商关系中,并且限制了提供商建立和传送新的服务的能力。一种更灵活地供应引擎会降低这种限制。
发明概述
本发明的一个目的是管理通信服务供应并使之自动化。
本发明的另一个目的是便于通信服务的用户自我管理。
本发明的另一个目的是以暂时的方式非常有效地执行大量复杂的供应工作过程。
本发明的另一个目的是启用没有完成的供应工作过程的自动重新计划。
本发明的另一个目的是通过允许方便地配置供应模型以及用标准供应功能的对象重新配置供应模型来简化各种通信服务的供应。
本发明的另一个目的是精确地跟踪多个供应工作过程的当前状态。
本发明的另一个目的是允许供应包括多个从不同供应商来的系统的通信服务。
本发明的另一个目的是允许使用预先定义的对象对供应模块进行方便地配置。
这些目的和其他目的是通过本发明的第一方面实现的,本发明的第一方面是用于供应通信服务的一种供应引擎,它包括用于进行公共供应工作过程的供应模块。供应模块包括一个状态机,它包括供应模块的多个当前状态集,以及用于定义在当前状态集中增加或减少状态的情况的至少一个转换。
本发明的第二方面是用于通过开发进行公共供应操作的供应模块来供应通信服务的模式语言。该模式语言包括多个对象,它们每一个都代表一个状态机。每个对象包括一组多个当前状态和用于定义在当前状态集中增加或减少状态的情况以及执行用于进行工作过程的任务的情况的至少一个转换。
附图简述
本发明的是通过较佳实施例和附图来描述的,其中:
图1是根据较佳实施例的供应引擎的框图;
图2是图1的供应引擎的框图,它展示了响应于信号的可用转换的动作;
图3是较佳实施例的软件工具的框图;
图4展示了较佳实施例的过程浏览器的屏幕;
图5展示了较佳实施例的模型开发器的模型显示屏幕;
图6展示了较佳实施例的实例监视器的屏幕;
图7展示了较佳实施例的任务浏览器的屏幕;
图8展示了较佳实施例的模型开发器的模型开发屏幕;
图9展示了较佳实施例的模型开发器属性屏幕;
图10展示了较佳实施例的实例监视器的屏幕;
图11展示了较佳实施例的工作空间工具屏幕;
图12展示了较佳实施例的日志查看器屏幕;
图13展示了根据较佳实施例的简单模型;
图14展示了等效于图13的模型的简单模型和子实例;以及
图15展示了较佳实施例的模型开发器的模式视察器屏幕。
较佳实施例详述
图1是较佳实施例的供应引擎的框图。供应引擎100包括被设计成进行供应过程的供应模型102的执行实例110。例如,供应模型102可以被设计成为新的用户供应因特网拨号服务。模型102可以包括,例如,建立电子邮件帐号、建立主机帐号、DHCP配置以及类似的工作过程。供应模型102定义了一个状态机来管理复杂的供应过程。如下文所述,供应模型102采用了用于及时控制工作过程流程的机制。因此,供应引擎100可以管理通常和供应有关的复杂的暂时问题。
引擎100可以是在通用计算机上执行的软件代码,诸如服务器的形式。引擎100可以用各种已知的编程语言来编制,并得到汇编以在各种已知的操作系统下运行,如WindowsTM或Unix。模型102通过执行任务138来进行供应工作过程。在较佳实施例中,任务138可以是外部程序,脚本或者其他动态地从引擎100本身加载和卸载以提高总的吞吐量和灵活性的代码。任务138可以用常规的编程语言来编写,如JavaTM,或用专有脚本语言来编写。下面还将详细描述任务138。
引擎100可以被用于配置任何个数的供应模型102,它们每个都定义了一个计划,即,必须被遵循以完成特定供应操作的工作过程,如拨号因特网帐号的建立。另外,每个供应模型102可作为一个或更多执行实例110来执行。实例110负责进行用于特定供应操作的供应模块102的工作过程。如上面所指出的,模型102可以定义为了激活单独的拨号客户的因特网服务所需的工作过程。每当新的客户请求拨号因特网服务时,随后将建立和运行模型102的实例110,即,执行该实例。
较佳实施例的引擎100利用使用了改进皮特里网算法的状态机来允许引擎100方便地管理必须以暂时的方式进行控制的任务138。每个供应模型102都定义了这样的状态机,并且每个实例110都表示状态机的明确执行。每个模型102以及因此每个实例110都包括当前状态组120以及至少一个转换130。当前状态120可以简单地是对应于真实世界供应工作过程的状态的任意字符串,如“未完成”(过程未完成),或者“进行dhcp”(正在完成DHCP过程),“解除电子邮件”(正在解除电子邮件帐号设置)。下面还将更详细地描述当前状态120。
常规的状态机只有一个当前状态。本较佳实施例的供应引擎100用实例110作为具有一组多个当前状态120的状态机。例如,在本较佳实施例的实例110中,当前状态120包括“正在进行操作1”、“未完成操作2”和“完成操作3”。如下文所述,是用多当前状态组120而不是单个当前状态在控制工作过程(尤其以暂时方式进行的、且可能或者可能无法第一时间成功执行工作过程)时提供了独特的优点。当然,每个实例110独立地维持它自己的当前状态组120。
信号140(见图2)是发送到供应实例110的命令,它们可以被表示成字符串,如开始、启动、进行或者解除。信号140可以用下述的各种方法来生成。信号140可以触发转换130来控制工作过程执行和流程。转换130(图1中只展示了一个)定义了在实例110的当前状态组120中增加和删除状态以及进行定义工作过程的任务的情况。每个转换包括三个单元:信号类型132、原状态组134、目标状态组136。转换130还可以包括一个或多个任务138。
每个转换130精确地具有一个信号类型132。但是,给定的信号类型132可以和任意个数的转换130有关。原状态134和信号类型132定义需要进行转换130的先决条件。如果,且仅仅如果它的原状态134是实施例110的当前状态组120子集且接收到了对应于转换130的信号类型132的信号140,才进行转换130。当进行转换130时,它的目标状态136被加入实例110的当前状态组120,并执行它的任务138来完成供应过程的特定工作过程。转换130是由供应模型102定义的。结果,相同模型102的所有实例110将共享相同的转换组130。
只要当实例110接收到信号140,实例110通过相应供应模型102所定义的每个转换130重复。对于每个转换130,如果原状态134是当前状态120的子集且信号类型132对应于信号140,那么转换130就是“可用”的。通过从当前状态组120中除去可用转换130的原状态134,然后把可用转换130的目标状态136加入当前状态组120,实例110可以进行转换130。最后,执行可用转换130的每个任务138。作为简单转换过程的例子,可以考虑下列的表1,它表示了两个转换130:
表1:
转换号 | 类型 | 原状态 | 目标状态 | 任务 |
1 | 开始 | s | a,b | [任务1任务2] |
2 | 停止 | a,b | 完成 |
上面的1号转换指出无论何时接收到“开始类型”的信号140,如果状态“s”是当前状态组120的子集,那么实例110应该从当前状态组120中除去状态“s”,把状态“a”和“b”加入当前状态组120中,并执行“任务1”和“任务2”。2号转换表示的是无论何时接收到“停止类型”的信号140,如果“a”和“b”都是当前状态组120的成员,那么将从当前状态组120中除去“a”和“b”,并把状态“完成”加入当前状态组120中。要注意任务138列表在2号转换中是空的,这表示在转换到“完成”状态之后将不完成任何任务。
转换130的过程可以比结合表1所讨论的例子更加复杂。具体而言,本较佳实施例的供应引擎100确保无论以何种顺序处理转换,结果都将是一样的。这是通过一次处理所有的可用转换130来完成的,而不是通过经由它们的重复。“除去”状态组是通过形成所有可用转换130的所有原状态134的联合来建立。“加入”状态组是通过形成可用转换130的所有目标状态136的联合来建立。然后通过级联每个可用转换130的所有任务138来创建任务表。随后且仅仅随后,在当前状态组120中除去所有除去状态,在当前状态组120中加入所有加入状态,并执行可用转换130的所有任务138。
发送信号140给供应实例的过程这里被称为“信令”。如上所述,一旦接收到信号140,将触发可用转换130来执行任务138和修改当前状态120。很多信号140通过供应引擎100的外部API被发送给实例110。这种信号一般被用来启动实例110的活动或者更新实例110来反映变化的外部条件。可选地,转换130的任务138能够自动地生成并发送信号140。不考虑信号140的始发处(即,外部或内部)的话,信令API调用可以看作是相同的。例如,本较佳实施例的信令API用下列的简化Java形式表示:
signal(String instanceId,String signal);
这个码段表示用给定的识别符“instanceId”(实例Id)发送信号140给供应实例110指令。实际上,信令API允许每个信号可以和任意个参数相结合,参数可以词典或映像的形式来表示。这些参数(这里称为“信号参数”)的示范如下:
signal(String instanceId,String signal,Map signalArguments);
当处理上面格式的信号140时,如果它使得执行任务138,那么所执行的任务138将可以访问该映像的内容。这是从外部世界来的数据被通知给供应实例110的机制。执行任务138可以不受限制地修改它的“信号参数”映像内容。当任务138执行结束时,信号参数(修改或没有修改过的)被返回给生成或发出触发转换130来执行任务138的信号140的对象。这样,该信号方法的完整形式为:
Map signal(String instanceId,String signal,Map signalArguments);
因此,任何作为信号140的结果执行的任务138可能从调用时间开始修改信号API调用的返回值(是“signalArguments”(信号参数)参数)。信号参数可以简单地是包含有键/值对的映像。尽管可能用Java代码或其他方法来定义,但是为了清楚起见,可以使用在括号“{}”中表示映射,以及用冒号“:”隔开每个键和其相关的值的符号表示规定。作为一个例子,可以考虑下列的映像:{suplier:″Acme Tools,Inc.″address:″2523 G1enWood Rd.,Somewhereville″}
该映射定义了两个条目,键“supplier”和“address”。在该例子中,这些键的值都是字符串,但是这不是一定的。值可以是诸如字符串、整数、布尔表达和浮点数等简单的标量数据类型,或者它们可以是集合、列表或者其他映射。下列的例子定义了一键:值对的映射,其中值是集合的列表:
{schedulingDays:[(Monday Wednesday Friday)(Tuesday Thursday)]}
要注意用方括号“[]”来包括列表,用圆括号“()”包括集合。在供应引擎100中这种符号表示被发现是有用的。当把对信号140的API调用发送给供应实例110时,信号140通常立即被发送给实例110的转换130。但是,本较佳实施例包括对于信号140的API调用的第二种形式,被称为“计划API调用”,它增加了明确何时应该发送信号140的能力。这种形式允许很好的暂时控制,并且可以是以下的形式:
Map schedule(String instanceId,String signal,Map signalArguments,long timeStamp)
这个例子为信号140增加了额外的参数“timeStamp”(时间标签)。时间标签简单地就是从参考日期(如通用协调时间1970年1月1日)开始的以毫秒为单位的应该发送信号140的时间。当供应实例110处理这种API呼叫时,将不立即发送信号140给转换130,而是代之以在实例110内部维持的持久存储队列中设置信号140与它的参数。在所指出的时间之前,信号140将不会被传递给转换140,所指出的时间可以是在对信号140的API调用之后将来几毫秒到几年的任意时刻。把信号140安排在各种时间的能力是引擎100非常有效的特点,它在供应通信服务的工作中起了很大的作用。例如,信号140的计划允许在一个或更多的工作过程因为某些网络系统暂时离线、发生故障或者无法适当响应而一开始就失效的情况下重新安排任务138以重新执行。
要注意计划API调用返回类似于上述的简单信号的值。但是,计划API调用的返回值只是“signalArguments”输入参数的拷贝。API调用本身在作为调用结果执行的任何任务已经有机会修改参数之前立即返回。任务138无法知道它们是作为立即信号140还是作为队列信号140的结果被执行。但是,在队列信号140的情况下,因为信号140在未来某个时刻之前不会被分派,所以在返回计划调用之后的长时间内都不会执行任务138。因此即使任务138修改了信号140的参数,队列信号140的API调用将永远无法看见那些修改。
如同上面所指出的,任务138可以是响应于反映实例110中可用的转换130的信号140而执行的Java代码的任意单元的形式。例如,最基本形式的任务138可以简单地是实现Java接口的Java类。Java代码或任何其他标准代码的任务138是非常容易编写的,只需开发人员具有初步的编码知识。任务138可以具有看上去有点类似于下列形式的基本形式,并具有括号中的解释性注释:
[声明称为“myPackage”的包类型变量]
[导入允许编程者使用简化包名和类名的包]
[定义My Task类来实现Task]
[本函数是被称为服务的公共类。公共指的是它可以公共访问的,即,任务对象都可以调用该函数。void函数不返回值,而只简单地进行操作。该函数的参数是TaskContent类型的变量,名为context。{}简单地表示代码组的开始和结束,以帮助编译器来分析代码]
package myPackage;
import com.multiflow.task.Task;
import com.multiflow.task.TaskContext;
public class MyTask implements Task
{public void service(TaskContext context);
{//application specific code goes here}}
在该形式中,任务138应该从com.multiflow.task包中导入Task和TaskContext两者。任务138的类必须实现任务138的接口,该接口定义了一种方法,service(TaskContext)。当运行任务138时,执行从它的service方法开始。该方法是用一个参数调用的,该参数是实现了“TaskContext”接口的对象。该对象为任务编写者提供了丰富的API来使用引擎100,提供了用于检验和修改信号140的参数的方法,为实例110和相应的模型以及为发送和计划对信号140的单个API调用提供了数据。
如同上面所指出的,在定义用于完成供应操作的供应模型102时,任务138和转换130有关,并且可以通过指定它们URL形式的整体打包Java类名来定义。一般地,这将是以下形式的文件URL:
file://myPackage.MyPackage
在file://URL的情况下可以省略URL协议前缀,如http://或file://。由于每个任务138都是用单独的代码定义的,所以它们可以被加载、卸载以及重新载入到供应引擎100。
本较佳实施例的每个供应实例110维持一个可以被用于存储特定实例数据数据映像。该数据映像可以具有和用于用信号或计划API调用传递信号参数的映像结构完全相同的形式。该接口允许在实例数据映像中查询、增加、修改、或删除条目。类似地,每个供应模型102有它自己的用于存储特定模型数据的数据映像。要注意对模型102的所有实例110,模型的数据映像都是可见的。一般地,该映像被用于存储必须由模型102的所有实例110共享的信息,而实例110的数据映像将存储只和特定实例110有关的信息。
如同上面所指出的,当信号140被发送给供应实例110时,信号140伴随有任意的数据映射,被称为“信号参数”,它是作为信号140的结果运行的任何任务138都可用的。任务138可以访问类似的第二转换参数组,它被指定为供应模型的转换130的定义的一部分。更具体地,只要当任务138和转换130有关时,任意的数据映像可以和任务138相关,如下面的表2所示。
表2
信号 | 从 | 到 | 任务 |
启动 | (x) | (t) | [任务1{command:start}] |
完成 | (x) | (t) | [任务1{command:stop}] |
在该例子中,任务1和两个转换130相关。如果任务1作为第一个转换130的应用结果而运行,将把转换参数{command:start}提供给任务1。但是,如果任务1作为第二个转换130的应用结果而运行,将把转换参数{command:stop}提供给任务1。
转换参数有两个主要的功能。首先,转换参数允许编程者为任务138指定默认参数组。例如,如果任务138在它的单个参数中没有发现键:值对,它可以访问它的转换参数的默认定义。其次,转换参数允许开发者通过指定确定了任务应该完成什么功能的转换参数,使用相同的任务138来进行不同的转换中的不同功能。参见表2的例子,相同的任务138,即任务1,可以被编码成在一种情况下进行某些“开始”操作,而在另外的情况下进行某些“停止”操作。
上述的符号表示系统被大范围地用在较佳实施例的供应引擎100中。因此,供应引擎100包括分析器200(例如一个软件模块),用于读取符号并把它转换成数据(如Java数据结构)或者相反地把数据结构转换成符号。
可以用一种简单的规定来定义符号中的信号。再参见上面所讨论的信令API:
Map signal(String instanceId,String signal,Map signalArguments);
该API的signalArguments可以在规定中方便地表示,因为它们简单地只是映像。为了表示intanceId和signal,在signalArguments映像中要增加两个新的条目。第一个新的条目,键名为字符“id”,包含instanceId参数。第二个新的条目,键名为字符“signal”,包含signal参数。引擎100的分析器200包括这样的逻辑:在把具有定义的特殊键id和signal的符号映像传递给该逻辑时,它将把符号转换成适当的signal方法调用,并执行该方法调用。为了展示,下面给出了在符号系统中定义的信号140的例子:
{id:someInstanceId
signal:someSignal
datal:someData
...
}
另外,下面给出了第二个例子,其中信号140被安排在稍晚的某个时刻执行:
{id:someInstanceId
signal:someSignal
datal:someData
delay:1000L
}
在较佳实施例中,分析器200确定这是计划调用(即在计划的时刻执行信号)或是信号调用(即,即刻执行调用),这是仅根据是否出现延时键时间标签键或类似的做出的,延时键时间标签键以毫秒为单位指定了在将要实际地发送信号140之前从当前时间的偏移量,或者指定了将要发送信号140的绝对时间。用信令的符号系统有可能编程引擎100的整体。但是,这种编程效率比使用等效的基于Java API或者其他API的效率更低。
因此,本较佳实施例的供应引擎100包括作为软件模块的可扩展API210,它可以通过多种不同的协议传输,如RMI(远程方法调用)、CORBA(公共对象请求代理体系结构)、DCOM(分布式构件对象模型)以及各种套接字接口。通过上述的signal方法可以整体地访问API210。API210包括用于总的管理功能的管理API212以及用于特定实例功能的核心API214。
管理API212是通过发送“admin”信号到特殊的预先定义的供应实例110来调用的,该实例被称为“根实例”。根实例被自动地安装到较佳实施例的供应引擎100中,且因此总是可用的。根实例定义了如下的转换:
[admin()()[Admin]]
该转换是由“admin”信号触发的。它没有原状态134和目标状态136,且因此没有用于执行的条件,除了“admin”信号140的接收之外。接下来,只要当预先定义的根实例接收到“admin”信号140时,它将总是执行管理任务138。管理任务138本身能够提供管理API212的整体。通常,任务138被设计成进行单个操作。但是,管理任务138可以被设计成进行大量操作。它进行的特定操作是由它的“message”键的值来确定的。管理任务138简单地提取该键的值,然后分派给实现所需操作的方法。
作为例子,下面是将列出引擎中当前定义的所有模型的id的信号:
{id:root
signal:admin
message:getModels
}
管理API212中定义的许多方法预期除了“message”参数之外的附加参数。例如,将键/值对写入模型的数据映像的“setModelData”方法预期键“modelId”、键和值:
{id:root
signal:admin
message:setModelData
model ID:someModel
key:aKey
value:(this is a set)
}
核心API212是通过发送“core”信号给任何供应实例110来调用的。只要当建立模型时,它总要加入下列转换:
[core()()[Core]]
这意味着只要当系统中的任何实例接收到核心信号140时就将执行核心任务138。和管理任务138一样,核心任务138可以实现大量的操作,以及它所进行的由它的信号参数映像中的“message”键值确定的特定操作。作为例子,下面是将把键/值对写入模型的数据映像的信号:
{id:instanceId
signal:core
message:seData
key:aKey
value:[I an a list]
}
较佳实施例还包括用于为供应引擎100提供图形用户接口和用于以面向对象方法用工作过程对象编程供应引擎100的软件工具230。如图3所示,软件工具230包括过程浏览器240(允许用户显示定义的模型和其中的实例110,并询问任何实例的当前状态),任务浏览器250(允许用户加载和卸载任务138并获取关于加载的任务138的信息),模型开发器260(允许用面向对象方法开发模型,把公共状态机功能对象捆绑成工作过程对象并图形化地控制工作过程对象以定义供应模型),实例监视器270(可以用于检测、控制和监视实例110的执行)以及工作空间工具280(提供一种机制,通过它,命令可以用上述的命令语言直接调用)。软件工具230可以用任何合适的编程语言来编写,并可以被移植到任何合适的操作系统,如Windows95TM、Windows98TM、WindowsMETM、Windows NTTM、Windows2000TM、UNIX、LINUX或类似。软件工具230一般将安装和运行在客户计算机上,客户计算机通过网络和运行供应引擎100的计算机进行通信。
图4展示了过程浏览器240的截屏,过程浏览器240由模型列表窗格242、实例列表窗格244以及显示关于当前所选的模型102或实例110的详细信息的信息窗格246构成。根据标准Windows用户接口,菜单条248包含“文件”和“编辑”菜单。“文件”菜单被分成两个组。一个组提供用于建立、删除和编辑模型的工具,而另一个组提供对于实例的相同选择。“编辑”菜单可以包含用于编辑文本的标准的剪切、复制和粘贴选择。
用户可以通过在模型102上点击鼠标来从模型列表窗格242中选择模型102,以检验转换130和模型102的数据,或者启动模型开发器工具260(下面将详细描述)来编辑所选的模型102。当从模型列表窗格242中选择了模型102时,将从引擎100取来转换130和模型102的数据,并在信息窗格246的转换标签下方显示。点击转换标签241将显示转换130和模型102的数据(例如,用上述符号系统的形式的字符串)。点击模型数据标签243将以树浏览器的形式显示模型102的数据。为了汇聚数据类型,显示的图像将由映像的括号({n})、列表的括号([n])以及集合的圆括号((n))构成,其中n是表示汇聚的元素个数的整数。另外,从数据库取来所选模型102的单个实例110,并在实例列表窗格242中显示。
其他的两个“文件”菜单项专门用于对模型102的工作。“建立模型”选项启动请求将建立的模型102的URL的输入对话。一般地,这将是指出已经用模型开发器260建立的模型的路径的文件URL。一般的文件URL具有下列形式:
file://file_path(例如,“file://myPath/myModel.wdI”)
变量“file_path”可以在运行供应引擎100的服务器的文件系统上解析,而不能在客户机的文件系统上解析。如果在引擎100中已经存在具有给定ID的模型102,一个对话框将询问用户是否在继续下一步之前删除前一个模型102。如果已经存在具有相关已有实例110的模型102,对话框将提示在继续下一步之前是否删除实例110和模型102。“删除模型”选项删除当前所选的模型102。如果该模型102有已存的实例110,对话框将询问用户是否删除它们。为了从过程浏览器240启动模型开发器260,用户可以从文件菜单选择“编辑模型”。图5是以相互连接的图标形式显示供应模型102的模型开发器260的截屏,每个图标都代表对象300。图5中的对象300是工作过程对象,即,形成小组以完成特定供应工作过程的状态机功能,如设置电子邮件帐号。要注意,一些对象300是内嵌在其他对象中的,因此被称作“子对象”。下面还将详细描述工作过程对象及其组织。
用户可以从实例列表窗格244检验实例110的数据。用鼠标单击从实例列表窗格244选择单个工作流程将使得从引擎100读出所选实例110的数据,并将其显示在信息窗格246中。例如,可以用数据的分层次的树形结构图显示当前状态组120、转换130及其状态、信号队列和所选实例110的数据,这样通过展开或收缩分枝可以查看所需的尽可能多或尽可能少的数据。“建立实例”文件菜单项启动一个输入对话框来提示输入将要建立的实例110的id。实例110将和当前所选的模型102相关联。对话框可以包括复选框,询问是否应该把初始化信号发送到新建的实例110。“删除实例”菜单项将删除当前所选的实例110。为了启动实例110的实例监视器270(描述见下),用户可以从实例列表244选择实例110,并从文件菜单选择“编辑实例”。图6是实例监视器270的截屏,展示了作为互连对象300(工作过程对象)的实例110以及它们的状态(描述见下)。
任务浏览器250是用于监视任务138的工具。它允许加载和卸载任务138,并用它来访问关于当前所加载的任务138的信息。如图7所示,任务浏览器250的屏幕包括显示了正在处理的任务138列表的任务列表窗格254,以及显示了任务列表窗格254中所选的每个任务138的属性的属性窗格256。
任务浏览器250的菜单条包含“文件”菜单,它有四个菜单选项:载入、重新载入、无效和关闭。载入和重新载入被用于安装和重新安装所选的任务138。“无效”选项使得删除选定的一个任务138,即,卸载。“关闭”被用于关闭任务浏览器250。为了把任务138加载到实例110,用户将从文件菜单选择“载入”,并在对话框中输入将要载入的任务138的URL类名。URL可以是下列的形式,例如:
“file:d/usr/xyz/multiflow/com.abc.task.Mytask”
为了重新载入或卸载任务138,用户从“文件”菜单分别选择“重新载入”或“无效”。如果任务映像中的“CanExpire”属性值为“是”,任务138将只能重新载入或卸载。当工作流程中发生转换130时,就有机会执行用户定义的任务138,这些任务会随着用于任务138的编程语言(如Java)的不同而变化。如上所述,任务138可以是响应工作流程中的可用转换130而执行的任意代码单元。当使用Java编程任务138时,任务138可以简单地是实现任务138的接口的Java类。每个用户定义的动作必须符合上述API所定义的限制组。
如上所述,可以集合代表状态机功能的对象300来建立供应过程工作流程,该工作流程在某些方面和通用编程语言的表现相类似,即它们在给定的点开始执行并依次执行直到结束,除非采取一些特定的措施。根据对象300的特定类型,工作流程可以被分成两个或更多的独立工作流程,它们重复地循环在一系列的内嵌在其他对象300中的子对象302(下面有时把这两者都称为对象300)。和编程语言流程不同,本较佳实施例中的控制流程可以前向或反向地运行。亦即,一旦基于模型102的任何工作流程已经完成了它可以备份的某些工作,反向地执行逻辑将取消它已经完成的工作。在通信供应中,该特性可能是比较重要的。表示状态机功能的对象300可以被配置成完成任何的供应工作过程(如设立电子邮件帐号,设立计费帐号,收集调制解调器和PC信息,DHCP配置和类似)。同样,为了给供应模型中增加灵活性和能力,对象300可以被配置成“do while”,“or split”或其他的逻辑操作。
在任一时刻,对象300将只能处于下列四个状态中的一个:notDone(表示对象定义的工作还没有完成);doing(表示正在进行对象定义的任一工作);undoing(表示正在取消对象完成的任一工作);done(表示完成了对象的工作,且控制已经交给接下来的对象300)。在任一时刻,对象300将响应信号“do_id”或“undo_id”,其中id就是对象300的id。如果当对象300接收到do_id信号140时它正处于notDone状态,它将转换至doing状态并开始它将完成的工作过程。如果当对象300处于doing状态时它接收到do_id信号140,它将继续它的工作。类似地,如果对象300处于done状态时它接收到undo_id信号140,它将开始取消它已经完成的任何事物。如果对象300处于undoing状态时它接收到undo_id信号140,它将简单地继续取消它的工作。因此,经由任意实例110的工作流程可以是两个方向中任一方向的,并且可以完成或取消供应工作过程。
每当对象300结束它的工作过程时,它将从doing状态转换至done状态。同时,对象300将发送信号“did_id”给工作流程,以使其他的对象300得知它已经结束了。类似地,每当对象300结束取消它的工作时,它将从undoing状态转换至notDone状态,并发送undid_id信号给工作流程。如果对象300在处于done状态时接收到do_id信号140,它将简单地发送did_id信号140,以表示它已经完成了供应过程。类似地,如果它在处于notDone状态时接收到undid_id信号140,它将简单地发送undid_id信号140,以表示它已经取消(或者它一开始就从没有完成过)。最后,对象300在处于undoing状态时接收到do_id信号140,它将转换至doing状态,并开始它的工作过程。类似地,doing状态下的undo_id信号140将使得转换至undoing状态,并使得任一的undoing逻辑开始执行。
本较佳实施例的供应模型102在完成其他的任何事之前首先接收到初始信号。该初始信号把每个对象300初始化到notDone状态,并发送do_id给根序列。这将使得根序列进入doing状态并开始它的工作过程。具体而言,它将发送do_id信号给模型配置中的第一对象300,使得第一对象300进入它的doing状态并开始它的工作过程。
供应模型102是用模式语言开发的,以把代表状态机功能的对象300聚集成希望的用于完成所需供应工作过程的工作流程,该模式语言使用模型开发器工具260。图8展示了模型开发器260的模型开发屏幕。该模型开发屏幕包括菜单条310、对象工具条320和工作空间330。菜单条310包含“文件”、“编辑”、“视图”和“工具”菜单。文件菜单包含用于在文件系统中建立、打开和保存供应模型的“新建”、“打开”、“保存”和“另存为”菜单项。打开模型选项允许访问安装在引擎服务器的数据库中的模型102。安装模型选项使得模型102被载入数据库中,在数据库中模型变成可用于建立新的实例。视图菜单只有一个“显示结构”选项,它是启用和禁用模型的结构显示的开关。工具菜单允许选择其他的软件工具。
对象工具条320包含多个图标,每个图标都代表用于建立模型102的可用对象300组。对象300是状态机操作组,即,进行特定逻辑功能的转换103。对象300可以通过按照下面结合图9所述的关联信号类型132、任务138和其他参数被配置成完成特定的工作过程。用图标400表示的AndSplitAndJoin对象300接收到do_id信号,它发送do_id信号给它的每个子对象302(即内嵌在AndSplitAndJoin对象300中的对象),子对象然后将并行地执行它们的功能(操作的“and split”部分)。AndSplitAndJoin对象300将不交出控制,只到它的所有子对象已经进入了done状态(操作的“and join”部分)。之后AndSplitAndJoin对象300才发送did_id信号140。取消AndSplitAndJoin对象300只是简单地逆转该逻辑。这里所说的并行执行指的是子对象302将相互独立地执行,而在它们之间没有次序的限制。这并不一定意味着所有子对象302将实际上同时地执行。
用图标410表示的OrSplitAndJoin对象300类似于开关地进行工作,它把控制从给定的子对象302组交给选定的最接近的子对象302(操作的“orsplit”部分)。每个选定的最接近的子对象302随后接收到do_id信号140。每个字节选定的子对象302随后必须在OrSplitAndJoin对象300自己发送did_id信号140之前完成它们的执行(操作的“and join”部分)。当取消时,只有那些处于doing或done状态的子对象将接收到undo_id信号。OrSplitAndJoin对象300具有唯一的属性,这里被称为SelectTask。SelectTask是为确定哪个子对象302将接收控制而执行的任务138。当被执行时,将作为映像传递SelectTask,称之为signalMap,它可以被用于确定对象300的所有子对象302的显示名。该映像通过从任务138的转换参数中提取SignalMap键来获得。
序列(Sequence)图标420表示用于依次地把控制从一个子对象302传递给下一个子对象302的对象300。当序列对象300接收到do_id信号140时,它依次发送do_id信号给它的每个子对象302。每个子对象302随后必须在下一个子对象302可以接收它的do_id信号140之前完成它的工作,转换到done状态并发送did_id信号140。类似地,当序列对象300接收到undo_id信号140时,它发送undo_id信号140给它最后的子对象302,然后再发给前一个子对象302,依此类推,直到序列对象300的全部工作都已经取消了。
循环(Loop)图标430表示的是大致和很多编程语言中可以找到的普通循环结构相类似的对象300。一般地,这种循环重复地评估一些条件逻辑来确定是否执行循环的主体。如果条件逻辑为真,那么将执行主体部分。如果条件逻辑为假,那么将不执行主体部分,且控制继续至循环之后。循环对象300情况下的条件逻辑是通过一个或多个任务138提供的。循环对象300的主体部分由一个或多个子对象302构成。根据循环对象300是如何配置的,它将表现为条件逻辑在循环主体之前的do循环,或者条件逻辑在循环主体结尾的while循环。和do循环不同,while循环总是至少执行它的主体部分一次。为了建立do循环,任务138被指定为对象300的预先任务(pre task)值。另外,为了建立while循环,任务138被指定为对象300的后任务(posttask)属性值。在两种情况中,任务138可以包含发送特定的成功或失败信号140的代码。如果发送了成功信号,那么循环执行将通过发送do_id信号给循环体而继续。如果发送了失败信号,循环执行将结束。简言之,预先任务是在对象300进doing状态之前执行的任务138,而后任务是在对象300进入done状态之后执行的任务。在循环类型对象300的情况中,预先任务定义了一个属性,并且在该情况中,循环将在do循环中执行,且后任务定义了do while循环中的属性。
分支(Branch)图标440表示使得工作流程分成两个分开的、独立的执行路径的对象300。主路径导向在模型102中跟随在分支对象300之后的对象300,而另一路径导向分支对象300的子对象302。和AndSplitAndJoin对象300不同,分支对象300之后的两条路径再也不会重新交汇。进行撤销(DoUndo)图标450表示用于执行单个供应操作的对象300。和下面描述的进行(Do)对象300不同,进行撤销对象300被用于需要特定作撤销执行后的供应操作的情况。如果,例如,供应操作要在数据库中写入一条记录,那么它的响应撤销操作可能是删除该记录。进行撤销对象300定义了两个任务138;进行任务(doTask)和撤销任务(undoTask)。这些任务类似于在完成对象300上定义的进行任务而工作。这两者都要求计划成功信号140或失败信号140。如果撤销任务失败了,将重新计划稍后的执行。
完成(Do)图标460表示用来执行单个供应操作的对象300。它定义了称之为“进行任务”的单独的属性,它包含执行供应操作的代码。进行任务必须包含根据供应操作是否成功而发送特定成功或失败信号140的代码。如果发送了成功信号140,进行对象300将进入完成状态,并发送did_id信号140。但是,如果供应操作失败了,进行对象300将安排失败信号140,它将让进行任务在将来的某个时刻再次执行。一般地,在失败的情况下,将用一个上述的异步信号消息(即,scheduleAt或scheduleDelay)把失败信号140安排在将来的某个时刻。进行对象300的操作不是“可撤销的”。具体而言,一旦进行对象300进入了done状态,它将无法和其他过程对象一样被撤销。该规则的一个特例是如果进行对象300是循环的子对象302。一般地,进行对象300被用于将从不需要被撤销的操作。例如,把网页的URL返回给网页服务器。
信号(Signal)图标470表示被设计成中断对象300的执行的流程,直到从某一外部源接收到特定信号类型132的对象300。一般地,这个源是通过基于网络的传输机制和供应引擎100进行通信的某一外部客户应用。当信号对象300处于doing状态时,它将不做任何事,直到接收到预期的信号140。信号对象300预期接收的特定信号类型132是信号对象300的doSignal属性的值。默认地,这被设置为字符串“go”,尽管它只要被设置为适于操作完成的值。如果doSignal属性被设置成空字符串“”,那么信号对象300将有不同的表现。代替把执行停止到接收到doSignal值的是,控制流程将继续经过过程对象300。更具体地,如果doSignal是空字符串,并且如果信号对象300在处于notDone状态时接收到do_id信号,它简单地转换至done状态并发出did_id信号。
信号对象300还定义了撤销信号属性。如果定义了该属性,那么过程执行流程将阻止于信号对象300,直到接收到具有该值的信号140。如果没有定义该属性,将自动撤销信号140。亦即,如果在处于done状态时发送了撤销信号140,将简单地转换至notDone状态,并发送did_id信号140。外部信号的转换将只在信号对象300处于doing状态(对于doSignal)或处于undoing状态(对于undoSignal)时发生。如果实例110在信号对象300处于notDone状态(或done状态)时接收到给定的进行(撤销)信号140,将忽略信号140。更加简单地说,这意味着如果信号对象300已经被“装备”了(即,如果已经把执行传给了它),它将只对信号140发生反应。
终端(Terminal)图标480表示终止了对象300的执行流程的对象300。当终止对象300接收到do_id信号140时,它将立即转换至done状态,但是不发出did_id信号140。如果终端对象300是序列的一部分,一旦执行了终端对象300,将不执行序列中它之后的任何对象。要注意,上面所讨论的任务138(如进行任务)可以是上述的单个任务或者多任务138组。
子实例(Subinstance)图标475被用来建立子实例。图13展示了根据本较佳实施例的子实例800的例子。子实例800类似于模型102且由对象300构成。但是,可以从模型102的实例110远程调用子实例800,且因此子实例800可以提供编程和供应的极大的灵活性、分布性和有效性。例如,可以从多个实例110调用子实例800,并因此便于代码的重用。另外,子实例800可以简单地根据它们自己的线程执行,并因此提供并发性,即,多任务。子实例800的使用允许把复杂的供应过程分成较小的,更加可管理的功能单元。一旦被定义了,可以从其他执行实例110例示和信令这些单元(即,子实例800)。
具体而言,子实例800是间接从某一调用实例110例示和信令的模型102的实例。所有的例示和信令逻辑都是具体化在嵌入调用实例110的子实例对象中的。任何模型102可以从任何实例110被例示成子实例800。子实例800可以被看成已经从它们的模型102中除去的对象300组,并作为独立的单元执行。图13展示了包含用信号图标470、两个进行撤销图标450和终端模式图标480表示的四个对象300的模型102的简单例子。
图14展示了具有和图13的模型102等效的功能的模型102,但是它被分成了两个独立的模型102。第一个模型102包含子实例图标475(表示子实例对象300),来代替两个进行撤销图标450。第二个模型102由两个原始的进行撤销图标450构成,它们是从原始模型102中分解出来的,作为子实例800来运行。
任何模型102可以被用作子实例800;而不需要模型102中的特殊编码。因此,给定的模型102可以根据情况作为实例110和子实例800两者执行。只要在另外的实例110中被子实例对象300的转换调用,即,建立时,实例100就被看成是子实例800。要注意,子实例800只是暂时的。只要在它们的调用实例110转换至doing状态时,它们就被自动从模型102建立了,而在它们的调用实例110转换至done状态时,它们就被自动删除了。
更加具体地,只要当子实例对象300接收到Do信号时,子实例800的生命周期就开始了。子实例对象300进入它的doing状态,然后检验它的子实例URL(下面将详细描述)来确定例示(即,调用执行)什么模型102以及调用什么网络服务来进行例示。在很多情况中,子实例800将在和具有调用子实例对象300的模型102相同的供应引擎100上例示,但是使用URL来定义子实例800允许子实例800在任何适合的供应引擎100上可被远程地例示。
一旦子实例800被例示了,将发送初始化信号140给它的根实例。根实例中的转换130把子实例800中的所有对象300设置为notDone状态,然后发送do信号给子实例800以启动它的执行。调用子实例对象300将一直保持doing状态,直到子实例800的根实例转换到done状态。此时,调用子实例对象300将进入它自己的done状态并除去所调用的子实例800。
调用子实例对象300在它处于doing状态时所接收到的任何do或undo信号被中继给被调用的子实例800。关于这两个信号,调用子实例将就像它已经被编码嵌入调用实例110一样地工作。当子实例800的根实例进入done状态时,它发信号通知它的调用实例110,使得它进入它自己的done状态。被调用的子实例800现在已经结束了它的工作,并且被信号140从调用实例110中除去。
子实例对象300以和上面的逻辑相反的方式响应undo信号。只要当子实例对象300转换至它的unDoing状态时,它就建立作为指定的模型102的实例110的子实例800。子实例800是用解除初始化信号来执行的,该信号把它的所有模式设置成done状态,然后发送undo信号给调用实例110。最后,当子实例800的根实例进入notDone状态时,子实例对象300将进入它自己的notDone状态并除去子实例800。
控制本较佳实施例的子实例800的信号140服从于和所有信号140一样的上述安全机制。这意味着在子实例对象300可以建立子实例800之前,它可以验证子实例800将要在其上执行的引擎100。在本地子实例800运行在和调用实例110相同的主机上的情况下,这是相当直接的过程,因为调用实例110可以简单地递交它自己的安全凭证来建立子实例800。然而,对于远程执行的子实例800,子实例800必须发送明确的authenticateUser信号来建立它自己的凭证。
模型开发器260可以包括包含转换130的对象300来透明地处理安全机制,即,不需要进一步的编程或配置。在较佳实施例中,引擎100的配置映像参数可以定义两个键,子实例登录(subinstancelogin)和子实例密码(subinstancepassword),子实例对象300可以用他们来验证(潜在是远程的)引擎100,如下文所示:
subinstancelogin:{value:someUserId}
subinstancepassword:{value:somePassword}
该登录和密码对还可以被子实例800用来验证调用实例110的引擎100。将通过子实例800相互发信号通知的所有引擎100的这些键应该具有相同的值,且这些键应该表示所有这些引擎100的有效登录/密码对。在很多情况下,子实例800将从调用实例110请求输入数据。类似地,在子实例800已经结束了执行之后,子实例800很可能具有需要返回给调用实例110的输出数据。在两种情况下,这种数据可以上述的方法被传递给信号参数。
为了传递数据给子实例800,在子实例对象300转换至doing状态之前,输入数据可以被写到调用实例110中的信号参数。调用实例110中在这一点之前执行的任何方便任务130可以进行该功能,尽管子实例对象300可以包括特别为该目的设计的,并且将只在建立子实例800之前执行的预先任务。
在它的子实例对象300转换至doing状态时调用实例110的信号参数中的任何数据可以被复制到被调用子实例800的信号参数中。然后子实例800的第一任务138可以把该数据用作信号参数。当然,如果该任务138传播它的信号参数,那么数据还将被提供给接下来的任务138。按照子实例的800的要求,预先任务用来安置信号参数。为了把输出数据从子实例800交回给它的调用实例110,当子实例800结束执行时,即,当子实例800的被调用的根实例转换至done状态时,该数据必须在信号参数中被定义。在调用子实例对象300中,在子实例对象300进入它的done状态之后执行的第一任务138将在它的信号参数中发现该数据。
子实例800的后任务是找到安放这样的任务138的方便的地方。如果非空的话,后任务将在子实例对象300从doing状态转换至done状态后执行,以及在除去子实例800之前立即执行。当它的根实例转换至done状态时被写入子实例800的信号参数的任何数据将被提供给后任务的信号参数。
和预先任务一样,子实例800的后任务自己应该不发送成功或失败信号。它的唯一目的是按照子实例800的要求捕获信号参数。成功和失败信号所提供的定序是由子实例对象300中定义的转换隐含地提供的。
默认地,模型开发器为子实例对象300后任务属性安装以下的默认值:
com.widget.taskCore{message:apply}
该消息探测键instance:和model:的信号参数。如果两个都被定义了,它们的值将被作为应用到调用实例110的实例数据映像和/或模型数据映像的列表。该技术作为被调用的子实例800的信号参数和调用实例110的模型数据映像之间的桥梁而起作用。它使得子实例800中计算出的数据和结果可以方便地修改实例数据映像和/或对应于调用实例110的模型数据映像。
在模型开发器260中,每个子实例对象300可以用图15所示的模式视察器屏幕结合把模型102指派成作为子实例800运行的子实例URL802来进行配置。子实例URL802的协议、主机、和端口部分指派了引擎服务,并因此指派了子实例800将在其上执行的主机引擎100。子实例800自己是在被指定为子实例URL802的查询字符串的数据映像中定义的。该数据映像可以包含指派子实例800的模型102的字符串值键。引擎忽略映像中出现的任何其他的键:值对,但是这些键值对被提供给例示的子实例800,以用于特定的应用。
在引擎100中,子实例URL802的协议部分总是默认为本地。因此,将在和它的调用实例102一样的一个引擎100中建立的子实例URL802只需要如下地指定查询字符串存储:
?{subinstance:aModelId}
在很多情况下,子实例URL802可以方便地用“prp:”伪协议(pseudo-protocol)来指定。该协议是通过使用子实例URL802的文件部分作为引擎100的配置参数中的键,然后查找相关的值来解析的,如下文所示:
prp URL:prp:somekey
configArgs:
someKey:{value:“socket://sparky:1067?{subinstance:aModelId}”}
prp:伪协议提供了一种间接寻址的形式,把子实例800的实现模型100的最终规范留给了配置参数机制。甚至还有可能把prp:URL解析成另一个prp:URL,来提供双重(三重、四重等)间接寻址。为了防止无限的循环,引擎可以把这种间接寻址的总次数限制为设计的值,例如10。
子实例URL802在模式视察器窗口中可以被指定用于相应的子实例对象300。但是,也有可能以任务138的码动态地指定子实例URL802。如果在子实例对象300从notDone转换到doing期间在信号参数中定义了键com.widget.util.EngineCostants子实例URL,信号参数定义将有比模式视察器中所设置的子实例URL属性更高的优先级。在大多数情况下,这是通过在子实例对象300的预先任务中设置信号参数键来完成的。
在本较佳实施例的引擎100中,每个实例102都是单线程的。即使当任务138被嵌入OrSplitAndJoin或AndSplitAndJoin对象300中时,它们也不必并行地执行(尽管如果分开的分支中的任何任务138在计划的重试过程中失败了,控制将立即传送至一个其他的分支)。该语义简化了程序员的工作。尽管如此,本发明可以具有多线程的能力。
但是,子实例800把真正的并发能力(即,多线程)提供给了本较佳实施例的模型102,因为每个被调用的子实例800在它自己的线程中执行。用子实例800代替一个分离对象300的Do和DoUndo对象利用了并发性。
在子实例对象300和它的被调用子实例800之间发生的所有信令在较佳实施例中都是异步的。这大大减小了分线程和非分线程都死锁的可能性。只要当子实例800中的用户定义任务138用同步信号调用它的调用实例102时,线程死锁就变成实际上可能了。出于这个原因,最好子实例800和其他实例102之间的所有通信都如上所述地通过信号参数来进行。
工作空间330是用对象300的模式语言实际构建模型102的地方。当用户点击工具条320中的图标时,光标将变成十字准线或其他的指示符来表示已经选择了表示对象300的图标。在工作空间330中点击将使得在模型102中插入相应的对象300。可以用显示的或隐藏的基础结构来观察模型102。当显示结构时,模型102被显示成图5和图6中所示的一系列堆叠的矩形。可选地,该结构可以被隐藏起来,以用不同的方式观察基础模型,如下面结合图9将要讨论的。工具菜单上的隐藏结构/显示结构按钮使得可以在两种视图之间切换。
可以在模型102中通过鼠标点击对象300,并把它用鼠标拖曳到工作空间330中的所需位置来重新排列对象300的顺序。工作空间330中的所有布局都是自动的。尤其在拖曳操作后松开鼠标键时,模型开发工具260将精确地确定应该把对象300放在什么地方。例如,可以使用按网格对齐的特点。很多对象300可以相互堆叠在其他对象上,以此来安置对象300中的子对象302。在这种堆叠的可以达到的深度方面没有限制。模型开发器工具260按照从左至右,从上至下的顺序安排对象300。在工作空间330中点击一个对象将选择该对象300。在任一时刻,当前所选择的对象300可以用陷入的环绕框、高亮或类似来标识。此外,每个对象300具有唯一的标识符,它是由对象300的类型构成,并跟有机器生成的字符序列。当前选定(或首先选定,在多选的情况下)的对象300的标识符被显示在模型开发器工具260的工具屏幕的左下角。
图9展示了模型开发器属性屏幕,它以表格的形式显示了当前模型的对象300并允许为特定的供应工作过程配置对象300,即,配置工作过程对象。对于每个对象300,该模型开发器属性屏幕包括510栏中的对象300类型。程序员可以指定对象300的显示名,来描述520栏中的对象的供应过程。在530栏中可以输入对象300的更详细的描述。在栏540中可以输入和显示对象300的任务138。在550栏中可以输入和显示对象300的任一预先任务,而在560栏中可以输入和显示对象300的任一后任务。高亮一个对象将在编辑窗格590中呈现显示名、描述和任务138来用于编辑。屏幕右下角的应用按钮570将使得编辑被接受。而重设按钮580将忽略编辑窗口中所做的任何修改,并清除它。要记住,对象300的任务可以是上述的形式,并确定对象所完成的供应工作。例如,图9中的高亮的进行撤销对象300的DoTask被展示成对窗口590中的Java Code的调用。
在对象300上双击将呈现和选定对象300相关的属性列表。尽管这些属性中的一些最好是只读的,但是很多仍然可以被编辑,并将影响模型工作的方式。所有的对象300共享公共的属性集,该属性集可以被检验,并且在某些情况下,可以被编辑。可以编辑的属性包括颜色(用来指定表示对象300的图标的显示颜色)和显示名(用于为将显示在屏幕上的对象300指定有意义的标签,该标签跨过表示对象300的图标的项部,例如如图6所示)。最好不能改变的属性包括id(引擎100分配给对象300的唯一id),以及类型(表示了相应对象300的类型)。
如图10所示,实例监视器270的显示类似于模型开发器260的显示,除了实例监视器270的显示被链接到模型102的特定实例110。在任一时刻,实例110中包含的每个对象300必须处于四个当前状态120中的一个:notDone、doing、undoing或done。对象300还可以处于很多其他的状态,但是它必须一直处于这四个状态之一。实例监视器270中显示的每个对象300有状态图标600,它显示了四个按钮602、604、606或者608,它们分别对应于这四个状态中的一个。对应于每个对象300的当前状态的图标602、604、606或608被高亮显示,以揭示对象300的当前状态。按钮604和606是“可点击”的。点击按钮604将发送do_id信号140给相关的对象300(以完成对象功能),而点击按钮606将发送undo_id信号140(以撤销功能)给相关的对象300。当然,这应该只用实例110的测试形式来尝试,以避免干扰操作模型。
如图11所示,工作空间工具280提供了具有普通文本编辑功能的文本编辑器窗口282,包括从盘片打开和保存文本文件、剪切和粘贴以及定位行号等。此外,可以选择任意的一片文本(称为“命令文本”),并发送给供应引擎100用于解释和执行。为了发送命令文本给引擎100,用户要点击发送选择(SendSelection)按钮284。在执行了命令文本之后,从供应引擎100返回的任何响应被插入到紧跟在命令文本之后的文本中。如果没有响应的话,那么将代之以插入空字符串。命令文本将被解除选择,并且将选择响应。为了从工作空间除去响应,用户可以按下回车或退格键来删除它。供应引擎100以例外的形式来返回错误。当工作空间工具280接收到例外时,它将在弹出窗口中显示例外类型,以及说明性文本(例外消息)。在解除了该窗口之后,例外消息本身被插入紧跟在命令文本之后的文本中,并被选中。工作空间工具280允许操作者访问整个API,而不仅仅是API的一个子集,其他的GUI组件简化了API的操作。
工作空间工具280还具有用于自动选择完整句法单元(包括映像、列表和集合)的功能。可以通过在这种单元内用control键结合点击来选择整个所附的映像、列表或集合。而在这种单元中用shift键结合点击将具有类似的功能,但是所选的单元也将被发送。工作空间工具280的使用要求理解上述的信令符号系统,以及该语言是如何被用于定义形成引擎100的API210的信号,如同上面所详细讨论的。引擎100的API210是通过上述的它的信令接口被访问的。
可以提供日志查看器屏幕(图12)来允许用户检查引擎100正在进行的用于调试和解决问题的操作。引擎100通过把这些事件根据它们的类别写入各个文件和输出流来记录它的操作(称为“事件”)。日志查看器屏幕700是用于查看任何的这些日志的用户接口,且由日志事件列表702和信息文本区域704构成。标题条704列出了在圆括号中显示的事件类别,以及日志所应用的引擎100。菜单条708提供了文件、视图和工具的菜单选项。事件列表702包含列出的日志,它们被分成三列,描述了事件的分类和时间以及事件消息。通过点击合适的列,可以按照这些因素中的任一因素来排序该列表。第二次点击将逆序地排列该列表。在列表中选择任一事件将使得它被高亮显示,并在信息文本区域中显示说明或附加的信息。
可以有多个能被记录用来跟踪引擎100的事件的事件分类。系统可以预先定义分类,或者由用户定义分类。可以按照需要来定义分类,以提醒用户各种情况。可以过滤该日志并且/或者预期分析出相关信息。
下面是这些分类的例子:
FATAL:造成引擎100的致命的关闭的事件
CRITICAL:没有造成引擎100退出,但仍然被视为对引擎100的运行有严重影响的日志事件
WARN:值得特别注意,但关系程度小于critical事件的事件
TASK_EXCEPTION:任务没有按照预计的执行
LOG:对于引擎100的运行属于正常的事件
DEBUG:对于调试引擎100有用的事件消息
可以看出,本发明提供了一种面向对象的模式编程语言,以及供应引擎的相关图形接口。具有多状态组的状态机的使用和把任务安排在稍后执行的能力允许供应引擎以暂时的方式完成和控制工作过程。供应引擎和模式语言可以被实现为用任何语言编写的、并且可以在任何合适的硬件平台上执行的计算机软件。各种信号、数据、映像和类似可以是任何的形式的或者协议的。转换或其他状态机可以用任何合适的方式组合,以定义进行各种供应功能或工作过程的对象。状态机可以定义和执行各种任务。任何合适的设备可以用任何的方式生成信号。
通过较佳实施例和附图,已经对本发明进行了描述。但是,对于本领域的技术人员来说,很显然,在不离开所附权利要求的范围及有关的法律权利等价物的范围的情况下,可以做出各种修改。
Claims (26)
1.一种用于供应通信服务的供应引擎,供应通信服务包括用于进行普通供应工作过程的至少一个供应模型,所述供应模型定义了状态机,其特征在于,包括:
所述供应模型的多当前状态集;
用于生成信号的装置;
用于定义在所述当前状态集中增加或减少状态的情况的至少一个转换。
2.如权利要求1所述的供应引擎,其特征在于,所述转换包括信号类型、原状态集和目标状态集,所述转换用于在所述模型的执行实例接收到和所述信号类型匹配的信号且所述原状态是所述当前状态集的子集时,把所述目标状态加入所述当前状态集以及把所述原状态从所述当前状态集中删除。
3.如权利要求2所述的供应引擎,其特征在于,所述转换用于修改信号的参数以及把信号返回给所述用于生成信号的装置。
4.如权利要求1所述的供应引擎,其特征在于,所述用于生成信号的装置包括供应引擎的外部API。
5.如权利要求1所述的供应引擎,其特征在于,所述用于生成信号的装置包括所述转换之一。
6.如权利要求1所述的供应引擎,其特征在于,所述用于生成信号的装置包括用于生成信号API调用的装置和用于在相应信号API调用之后的预定时刻发出信号的装置。
7.如权利要求1所述的供应引擎,其特征在于,所述模型包括多个执行实例,它们每一个都具有用于存储特定实例的数据的装置。
8.如权利要求7所述的供应引擎,其特征在于,所述模型包括用于存储每个所述实例使用的数据的装置。
9.如权利要求2所述的供应引擎,其特征在于,所述转换进一步包括至少一个任务,以及用于在所述模型的实例接收到和所述信号类型匹配的信号且所述原状态是所述当前状态的子集时执行所述至少一个任务的装置。
10.如权利要求9所述的供应引擎,其特征在于,所述转换包括转换参数,这些转换参数被传达给所述用于执行的装置所执行的所述至少一个任务。
11.如权利要求7所述的供应引擎,其特征在于,至少一个所述实例包括对于作为子实例的另外的模型的调用。
12.如权利要求11所述的供应引擎,其特征在于,所述子实例包括用于和所述至少一个实例进行通信的装置。
13.如权利要求12所述的供应引擎,其特征在于,所述至少一个实例的转换被配置成在所述子实例执行时停止执行以及在所述子实例完成执行时继续执行。
14.一种对用于供应通信服务的引擎进行编程的模式语言,供应通信服务包括定义了用于进行普通供应操作的状态机的供应模型,所述模式语言包括多个对象,它们代表状态机功能,其特征在于,每个所述对象包括:
所述供应模型的多当前状态集;
用于定义在所述当前状态集中增加或减少状态的情况的至少一个转换。
15.如权利要求14所述的模式语言,其特征在于,至少一个所述对象是子实例对象,它包括对于作为子实例的另外的供应模型的调用。
16.如权利要求15所述的模式语言,其特征在于,所述子实例对象包括用于和所述子实例进行通信的装置。
17.如权利要求16所述的模式语言,其特征在于,所述调用包括指派所述子实例的id的URL。
18.如权利要求17所述的模式语言,其特征在于,所述调用进一步包括参数。
19.如权利要求18所述的模式语言,其特征在于,所述用于进行通信的装置包括用于改变所述参数的装置。
20.如权利要求11所述的模式语言,其特征在于,所述转换包括信号类型、原状态集和目标状态集,所述转换用于在所述模型的执行实例接收到和所述信号类型匹配的信号且所述原状态是所述当前状态集的子集时,把所述目标状态加入所述当前状态集以及把所述原状态从所述当前状态集中删除。
21.如权利要求2所述的模式语言,其特征在于,所述转换用于修改信号参数并把信号返回给信号始发源。
22.如权利要求13所述的模式语言,其特征在于,所述信号始发源是供应引擎的外部API。
23.如权利要求13所述的模式语言,其特征在于,所述信号始发源是所述转换之一。
24.如权利要求11所述的模式语言,其特征在于,进一步包括用于生成信号API调用的装置和用于在相应信号API调用之后的预定时刻发出信号的装置。
25.如权利要求12所述的模式语言,其特征在于,所述转换进一步包括至少一个任务,以及用于在所述模型的执行实例接收到和所述信号类型匹配的信号且所述原状态是所述当前状态的子集时执行所述至少一个任务的装置。
26.如权利要求17所述的模式语言,其特征在于,所述转换进一步包括转换参数,这些转换参数被传达给所述用于执行的装置所执行的所述至少一个任务。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18998800P | 2000-03-17 | 2000-03-17 | |
US60/189,988 | 2000-03-17 | ||
US09/809,084 | 2001-03-16 | ||
US09/809,084 US7624089B2 (en) | 2000-03-17 | 2001-03-16 | Communications services provisioning method and apparatus and object programming language for developing provisioning models |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1429362A true CN1429362A (zh) | 2003-07-09 |
CN1252592C CN1252592C (zh) | 2006-04-19 |
Family
ID=26885685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB018097367A Expired - Fee Related CN1252592C (zh) | 2000-03-17 | 2001-03-16 | 通信服务供应方法和设备 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7624089B2 (zh) |
EP (1) | EP1282858A4 (zh) |
JP (1) | JP2004505333A (zh) |
CN (1) | CN1252592C (zh) |
AU (1) | AU2001247225A1 (zh) |
CA (1) | CA2402854A1 (zh) |
WO (1) | WO2001071493A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100451980C (zh) * | 2005-01-11 | 2009-01-14 | 惠普开发有限公司 | 产生触发信号的系统和方法 |
US8930885B2 (en) | 2008-10-30 | 2015-01-06 | Hewlett-Packard Development Company, L.P. | Reconfiguring a model |
CN110998526A (zh) * | 2017-10-04 | 2020-04-10 | 谷歌有限责任公司 | 用户配置的且自定义的交互式对话应用 |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6931111B1 (en) | 1999-11-24 | 2005-08-16 | Netgen Communications, Inc. | Methods and systems for providing communications services |
US7937655B2 (en) * | 2000-12-22 | 2011-05-03 | Oracle International Corporation | Workflows with associated processes |
US7802174B2 (en) | 2000-12-22 | 2010-09-21 | Oracle International Corporation | Domain based workflows |
JP2003108731A (ja) * | 2001-09-28 | 2003-04-11 | Osaka Gas Co Ltd | 電子決裁システム |
US20040205151A1 (en) | 2002-12-19 | 2004-10-14 | Sprigg Stephen A. | Triggering event processing |
US7448022B1 (en) | 2004-02-10 | 2008-11-04 | Prasad Ram | Dynamic software composition in a component-based software system |
US8863137B2 (en) * | 2005-09-23 | 2014-10-14 | International Business Machines Corporation | Systems and methods for automated provisioning of managed computing resources |
US8087021B1 (en) * | 2005-11-29 | 2011-12-27 | Oracle America, Inc. | Automated activity processing |
JP5095629B2 (ja) * | 2005-12-28 | 2012-12-12 | テレコム・イタリア・エッセ・ピー・アー | 特に通信ネットワーク介入用としてのワークフローモデルの自動作成方法 |
DE112007000878A5 (de) * | 2006-02-03 | 2009-01-22 | Teles Ag Informationstechnologien | Änderungsverfahren der Arbeitsweise einer Technischen-Kommunikations-Gruppen-Plattform (TKGP) eines Telekommunikations-Netzes (TK-Netztes) |
US8200715B1 (en) * | 2006-06-30 | 2012-06-12 | Sap Ag | Using status models with adaptable process steps in a computer system |
US8365200B1 (en) | 2006-06-30 | 2013-01-29 | Sap Ag | Using cancellation status models in a computer system |
US8706776B1 (en) | 2006-06-30 | 2014-04-22 | Sap Ag | Extending status models in a computer system |
US20080005743A1 (en) * | 2006-06-30 | 2008-01-03 | Frank Michael Kraft | Using Status Models with Status Transitions in a Computer System |
US20080005625A1 (en) * | 2006-06-30 | 2008-01-03 | Frank Michael Kraft | Using Status Models with Preconditions in a Computer System |
US8522261B2 (en) | 2006-06-30 | 2013-08-27 | Sap Ag | Using status models with state guards in a computer system |
US7966621B2 (en) * | 2006-06-30 | 2011-06-21 | Sap Ag | Using multiple status models in a computer system |
US8020172B2 (en) * | 2006-06-30 | 2011-09-13 | Sap Ag | Using status models having status derivations in a computer system |
US20080005739A1 (en) * | 2006-06-30 | 2008-01-03 | Wasim Sadiq | Defining a Status Model for a Computer System |
US8122063B2 (en) * | 2006-06-30 | 2012-02-21 | Sap Ag | Using status models in a computer system |
US8219650B2 (en) * | 2006-12-28 | 2012-07-10 | Sap Ag | Communicating with a status management component in a computer system |
US7915126B2 (en) * | 2007-02-14 | 2011-03-29 | Micron Technology, Inc. | Methods of forming non-volatile memory cells, and methods of forming NAND cell unit string gates |
US8561088B2 (en) * | 2008-04-08 | 2013-10-15 | Microsoft Corporation | Registering network applications with an API framework |
US20090254670A1 (en) * | 2008-04-08 | 2009-10-08 | Microsoft Corporation | Providing access to network applications for standardized clients |
US8504980B1 (en) | 2008-04-14 | 2013-08-06 | Sap Ag | Constraining data changes during transaction processing by a computer system |
US20110153788A1 (en) * | 2009-12-23 | 2011-06-23 | Jacobus Van Der Merwe | Method and System for Automated Network Operations |
US8996472B2 (en) | 2012-04-16 | 2015-03-31 | Sap Se | Verification of status schemas based on business goal definitions |
US8996473B2 (en) | 2012-08-06 | 2015-03-31 | Sap Se | Checking compatibility of extended and core SAM schemas based on complex goals |
US9747448B2 (en) * | 2013-04-02 | 2017-08-29 | Microsoft Technology Licensing, Llc | Cryptographic mechanisms to provide information privacy and integrity |
US10417594B2 (en) | 2013-05-02 | 2019-09-17 | Sap Se | Validation of functional correctness of SAM schemas including action chains |
US11720283B2 (en) | 2017-12-19 | 2023-08-08 | Western Digital Technologies, Inc. | Coherent access to persistent memory region range |
US10929309B2 (en) | 2017-12-19 | 2021-02-23 | Western Digital Technologies, Inc. | Direct host access to storage device memory space |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5021968A (en) | 1987-01-13 | 1991-06-04 | Robertson-Ceco Corporation | Graphics-based wire-cable management system |
US5019992A (en) * | 1987-08-24 | 1991-05-28 | International Business Machines Corp. | System for designing intercommunication networks |
JPH0769842B2 (ja) | 1989-02-13 | 1995-07-31 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 資源の相互排他制御方法及びシステム |
US5019961A (en) * | 1989-04-05 | 1991-05-28 | Cadware, Inc. | Computer apparatus and method for logical modelling |
US6005576A (en) | 1989-09-29 | 1999-12-21 | Hitachi, Ltd. | Method for visual programming with aid of animation |
US5301303A (en) * | 1990-04-23 | 1994-04-05 | Chipcom Corporation | Communication system concentrator configurable to different access methods |
JPH0727504B2 (ja) | 1990-12-10 | 1995-03-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | ネットワークの構成を定義するシステム、ネットワークのための構成パラメータを生成する方法及びネットワークを構成するためのシステム |
US5317568A (en) * | 1991-04-11 | 1994-05-31 | Galileo International Partnership | Method and apparatus for managing and facilitating communications in a distributed hetergeneous network |
US5317742A (en) * | 1991-06-21 | 1994-05-31 | Racal-Datacom, Inc. | Dynamic translation of network management primitives to queries to a database |
JP3160017B2 (ja) | 1991-08-28 | 2001-04-23 | 株式会社日立製作所 | 網管理表示装置 |
US5247347A (en) * | 1991-09-27 | 1993-09-21 | Bell Atlantic Network Services, Inc. | Pstn architecture for video-on-demand services |
US5452415A (en) | 1992-03-26 | 1995-09-19 | Alcatel Network Systems, Inc. | Method and system for automatically displaying and configuring a network monitoring system |
US5687315A (en) | 1992-04-16 | 1997-11-11 | Hitachi, Ltd. | Support system for constructing an integrated network |
US5905494A (en) | 1992-08-12 | 1999-05-18 | International Business Machines Corporation | Method and system within an object oriented programming environment for enhanced efficiency of entry of operator inputs utilizing a complex object |
US5442690A (en) | 1992-08-25 | 1995-08-15 | Bell Communications Research, Inc. | Telecommunication service record structure and method of execution |
US5490097A (en) | 1993-03-22 | 1996-02-06 | Fujitsu Limited | System and method for modeling, analyzing and executing work process plans |
US6038378A (en) * | 1993-07-29 | 2000-03-14 | Digital Esquipment Corporation | Method and apparatus for testing implementations of software specifications |
CA2128387C (en) | 1993-08-23 | 1999-12-28 | Daniel F. Hurley | Method and apparatus for configuring computer programs from available subprograms |
US5953389A (en) | 1993-11-16 | 1999-09-14 | Bell Atlantic Network Services, Inc. | Combination system for provisioning and maintaining telephone network facilities in a public switched telephone network |
US5881131A (en) * | 1993-11-16 | 1999-03-09 | Bell Atlantic Network Services, Inc. | Analysis and validation system for provisioning network related facilities |
US5790633A (en) | 1995-07-25 | 1998-08-04 | Bell Atlantic Network Services, Inc. | System for proactively maintaining telephone network facilities in a public switched telephone network |
US5499343A (en) * | 1993-12-17 | 1996-03-12 | Taligent, Inc. | Object-oriented networking system with dynamically configurable communication links |
US6014138A (en) | 1994-01-21 | 2000-01-11 | Inprise Corporation | Development system with methods for improved visual programming with hierarchical object explorer |
US5630025A (en) * | 1994-07-13 | 1997-05-13 | Unisys Corporation | Generalized configurator using a declaratively constructed two-level bi-partite graph as a knowledge representation |
US5802154A (en) | 1994-08-10 | 1998-09-01 | Comsat Corporation | Provision of proprietary and enhanced capabilities in Group 3 facsimile for mobile satellite communications |
US5862372A (en) | 1994-11-16 | 1999-01-19 | Morris; Robert M. | Visually oriented computer implemented application development system utilizing standardized objects and multiple views |
US5561752A (en) | 1994-12-22 | 1996-10-01 | Apple Computer, Inc. | Multipass graphics rendering method and apparatus with re-traverse flag |
US5574779A (en) | 1995-05-01 | 1996-11-12 | Bell Communications Research, Inc. | Method and apparatus for provisioning network services |
US5778056A (en) | 1995-05-01 | 1998-07-07 | Bell Communications Research, Inc. | Broadband network and method for connecting information providers |
US5774689A (en) * | 1995-09-22 | 1998-06-30 | Bell Atlantic Network Services, Inc. | Network configuration management system for digital communication networks |
CA2165893C (en) | 1995-12-21 | 2001-03-13 | Richard Denison Mcdonald | Visual application partitioning for creating distributed object oriented applications |
US5768284A (en) * | 1995-12-29 | 1998-06-16 | At&T Corp | Monitoring of periodic patterns |
US5946485A (en) | 1996-02-09 | 1999-08-31 | Intervoice Limited Partnership | Enhanced graphical development environment for controlling program flow |
US5940487A (en) | 1996-04-10 | 1999-08-17 | Alcatel Usa Sourcing, L.P. | Programmable call processing system and method |
US6014379A (en) | 1996-06-26 | 2000-01-11 | Bell Atlantic Network Services, Inc. | Telecommunications custom calling services |
US6018570A (en) | 1997-05-12 | 2000-01-25 | Nynex Science And Technology Inc. | Methods and apparatus for regulating the remote ordering, authorization, access and control of services and service features associated with a terminal |
US5937048A (en) | 1997-06-05 | 1999-08-10 | Bell Atlantic Network Services, Inc. | Program controlled switch provisioning |
US5958016A (en) | 1997-07-13 | 1999-09-28 | Bell Atlantic Network Services, Inc. | Internet-web link for access to intelligent network service control |
US6009322A (en) | 1997-07-21 | 1999-12-28 | Telefonaktiebolaget Lm Ericsson (Publ) | Automated Private Numbering Plan (PNP) subscription provisioning |
US6018574A (en) | 1997-10-27 | 2000-01-25 | Bellsouth Intellectual Property Corporation | System and method for activation of an enhanced telecommunication service |
US6016334A (en) | 1997-10-29 | 2000-01-18 | Alcatel Usa Sourcing, L.P. | Method and system for automatically verifying provisioning of telecommunications services |
US6018737A (en) | 1997-12-18 | 2000-01-25 | Alcatel Usa Sourcing, L.P. | Universal personal telecommunications service for an advanced intelligent network |
US6023464A (en) | 1997-12-23 | 2000-02-08 | Mediaone Group, Inc. | Auto-provisioning of user equipment |
DE19955004A1 (de) * | 1998-12-01 | 2000-06-29 | Ibm | Ableitung und Ausführung von Workload-Manager-Enklaven aus Workflows |
US6321133B1 (en) * | 1998-12-04 | 2001-11-20 | Impresse Corporation | Method and apparatus for order promising |
US6349335B1 (en) * | 1999-01-08 | 2002-02-19 | International Business Machines Corporation | Computer system, program product and method for monitoring the operational status of a computer |
-
2001
- 2001-03-16 CA CA002402854A patent/CA2402854A1/en not_active Abandoned
- 2001-03-16 CN CNB018097367A patent/CN1252592C/zh not_active Expired - Fee Related
- 2001-03-16 WO PCT/US2001/005815 patent/WO2001071493A1/en active Application Filing
- 2001-03-16 EP EP01920140A patent/EP1282858A4/en not_active Withdrawn
- 2001-03-16 JP JP2001569619A patent/JP2004505333A/ja active Pending
- 2001-03-16 US US09/809,084 patent/US7624089B2/en active Active
- 2001-03-16 AU AU2001247225A patent/AU2001247225A1/en not_active Abandoned
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100451980C (zh) * | 2005-01-11 | 2009-01-14 | 惠普开发有限公司 | 产生触发信号的系统和方法 |
US8930885B2 (en) | 2008-10-30 | 2015-01-06 | Hewlett-Packard Development Company, L.P. | Reconfiguring a model |
CN102203767B (zh) * | 2008-10-30 | 2015-07-01 | 惠普开发有限公司 | 重新配置模型 |
CN110998526A (zh) * | 2017-10-04 | 2020-04-10 | 谷歌有限责任公司 | 用户配置的且自定义的交互式对话应用 |
US11676602B2 (en) | 2017-10-04 | 2023-06-13 | Google Llc | User-configured and customized interactive dialog application |
CN110998526B (zh) * | 2017-10-04 | 2024-03-22 | 谷歌有限责任公司 | 用户配置的且自定义的交互式对话应用 |
Also Published As
Publication number | Publication date |
---|---|
US7624089B2 (en) | 2009-11-24 |
CN1252592C (zh) | 2006-04-19 |
JP2004505333A (ja) | 2004-02-19 |
WO2001071493A1 (en) | 2001-09-27 |
US20020013777A1 (en) | 2002-01-31 |
EP1282858A1 (en) | 2003-02-12 |
AU2001247225A1 (en) | 2001-10-03 |
EP1282858A4 (en) | 2006-11-02 |
CA2402854A1 (en) | 2001-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1252592C (zh) | 通信服务供应方法和设备 | |
CN1280716C (zh) | 计算机处理方法、分布式计算方法和网络计算方法 | |
CN100351822C (zh) | 用简化视图定义、处理和表示用户界面组件的方法和工具 | |
CN101052956A (zh) | 在标记语言环境中使用可撤消命令来编辑文档的文档处理和管理方法 | |
CN1627257A (zh) | 用于创建模块化web应用的框架 | |
CN101052948A (zh) | 对象过程图应用程序开发系统 | |
CN1419675A (zh) | 用于自上而下的企业过程定义和执行的方法和系统 | |
CN1811702A (zh) | 开发门户应用和自动部署门户应用的系统和方法 | |
US8850383B2 (en) | Navigation-independent access to elements of an integrated development environment (IDE) using uniform resource locators (URLs) | |
CN1740970A (zh) | 无缝地比较对象的系统和方法 | |
CN1105507A (zh) | 模型化系统 | |
AU4363693A (en) | System development support | |
CN1961288A (zh) | 用于存取过程控制数据的方法和设备 | |
CN1211364A (zh) | 一种管理互配单元及生产该单元的方法 | |
CN1766835A (zh) | 用于在设计和运行时间无缝制作和编辑工作流的框架 | |
CN1711522A (zh) | 图形用户接口建模系统 | |
CN1942860A (zh) | 在分布式网络体系结构中建模和动态部署服务的系统和方法 | |
CN1914630A (zh) | 作为数据类型的基于行为的多代理系统 | |
CN1591404A (zh) | 多版本数据处理系统 | |
CN1554046A (zh) | 用于具有事务特性特征的事务处理的系统和方法 | |
CN101777004A (zh) | 面向服务环境中基于模板实现bpel子流程复用的方法及系统 | |
CN1825343A (zh) | 创作和执行基于流程且基于约束的工作流的统一模型 | |
CN1585948A (zh) | 用于系统整合的应用程序视窗部件 | |
CN1682186A (zh) | 技术无关的信息管理 | |
CN1870028A (zh) | 工作流程系统、工作流程处理方法和工作流程处理程序 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060419 Termination date: 20150316 |
|
EXPY | Termination of patent right or utility model |