专利名称::面向反应的电信系统接口的制作方法
技术领域:
:本发明通常涉及综合不同的电信系统和业务的技术。特别地,本发明涉及一个标准接口,它使得在一个业务生成环境(SCE)中产生的电信业务应用在许多不同的执行环境(EE)中。电信业务可通过执行在诸如电话网络交换机和计算机的电信硬件中的机器码来提供。执行机器码的电信硬件通常指执行环境(EE)。比如说,EE可以是发送数据通信网络内的数据信息包或引导电话网络交换系统中的呼叫。一组EE可以给网络用户提供交互业务,和通过网络,发送数据、文件及图象。示范性的EE包括业务切换处理器(SSP),业务节点(SN),智能外设(IP)和业务控制点(SCP)。它们都可以是一个智能网络(IN)体系的组成部分。关于IN更详细的情况,比如说可在Proc.oftheInternationalCouncilforComputerCommunicationIntelligeatNetworksConference,May4-6,1992的第430-440页,O.Miauno等人的文献“ServiceSpecificationDescriptionandServicesLogicProgramGenerationforIntelligentNetworks”中发现,该文献在这里用作对比文件。当前情况下,在每个EE中所提供的电信业务通常都是在高级编程环境中,使用特定的开发工具编程的。高级编程环境通常指业务生成环境(SCE)。示例性的开发工具包括决策图编辑程序,扩展卡,计算机辅助系统工程(CASE)工具和有限态自动机(FSM)编辑程序。一种示例性类型的FSM编辑程序使用标准CCITT业务规范描述语言(SDL),它以图形格式表示电信业务,便于业务的开发。要在每个EE中提供的业务通常是使用一个专用SCE开发的,该专用SCE在计算机工作站上运行,并且提供一套基于特定用户规范的业务开发工具。SCE通常以由卖方开发的合适格式产生业务描述文件。然后,合适业务描述文件被转换为低级码,该低级码适用于指导一个EE去提供所希望的业务,因此,通常只能用相同或相关卖方的相应的EE。当前实际应用中SCE和EE的深度耦合存在很多问题。一个问题是,在一个SCE开发的网络业务通常只能应用在一个相应的EE,不能在不同的EE中再用。另一个相关问题是,一个卖方SCE和EE通常不能与其他卖方的相接口。了提供一个当前存在的网络业务和许多不同EE的接口,因此需要重新设计现存业务以实现该接口。由于这些问题,网络提供者,如本地交换机公司(LEC),长途公司和国外邮政、电话和电报公司(PTT)都有困难以即时可靠的方式提供电信业务。这些问题比如在Proc.oftheInternationalCouncilforComputerCommunciationIntelligentNetworksConference,May4-6,1992第162-174页,D.SinghandD.Garrison的文献“RequirementsforSetviceCreationPlatforminanOpenSystemsEnviroment”中有描述。上述文献在这里用作对比文件。几种不同的解决SCE-EE接口问题的方法已被发现。一种可能的方法涉及使用一个通用的面向应用的语言(UAOL)设计编程所有SCE中的业务。一个相关的方法涉及使用一个标准化的业务执行处理器(SEP)。在Proc.oftheInternationalCouncilforComputerCommunicationIntelligentNetworksConference,May4-6,1992的第441-450页,S.Esaki等人的文献“ServiceLogicExecutionofINMulti-VendorEnviroment-IntroductionofSLPExecutionProcessor”中公开了一个示范性标准SEP。该文献在这里用作对比文件。虽然如果电信工业最初建立在一个标准的UAOL或SEP上,上述这些方法是可施行的,但这种标准当前并没被广泛使用。另外,能够适用于多种业务应用的UAOL通常是一个复杂的高级语言,因此不容易使用。目前要实现UAOL或标准SEP方法可能将需要重新设计使用非标准语言或处理器编程的网络业务。另一种接口能在不同的SCE和EE之间转换目标码。目标码的转换通常涉及把源目标码转换为通用的汇编语言,然后以汇编语言产生最终的目标码。目标码转换对于业务使用者具有透明的优点,并且具有特定EE要求的用于生成低级码的有效装置。但是,这种方法在应用中不容易于改变,并且不能很好地适用于运行时解释的程序。在现有技术电信系统接口中所使用的技术是交叉编译。通常,交叉编译涉及设计一个不同的编译器,用于有每个SCE和每个EE之间转换代码。对于每个接口使用分离的编译器,任何SCE中开发的业务可以在任何其它的EE上使用,因此避免了上述很多问题。但是,这种方法在应用上非常昂贵,它包括大量的SCE和EE。编译器开发的造价通常是SCE和EE数量的二次方。例如,如果电信系统包括m个SCE和n个EE,交叉编译方法通常需要开发和支持m×n个编译器。当前使用在高级编程语言中的接口技术是基于公用中间语言的。这种在1961年使用的方法用以开发一种通用计算机有向语言(UNCOL)。参看1961年Proc.WesternJointComp.Conf.第371-377页,To.Steel的文献“AFirstVersionofUNCOL”。公用中间语言通常包括n个前端,每个前端把编程语言中的高级码转换为中间语言;它还包括m个后端,每个后端把公用中间语言的程序转换为特定的机器语言或目标码。结果,只需要n+m个编译,就可把n个SCE的每一个与m个EE的每一个连接起来,而不需要交叉编译方法中使用的n×m编译器。例如,参看CommunicationsoftheACM,Vol,26,No.9,September1983中,A.Tanenbaum等人的文献“APracticalTodkitforMakingPortableCompilers”(后面称“Tanenbaum”)。一个相似的方法被用在美国专利4,667,290号的文章“CompilersUsingAUnirersalIntermediateLaugnage”(后面称“Goss”)中,该专利被授予Goss等人。但现存的公用中间语言存在许多突出的问题,因此,在电信业务应用中的使用受到限制。Tanenbaum方法的一个主要问题是,当把接口输入码转换为中间语言时,将丢失原始输入信息。原始输入信息的丢失,是因为Tanenbaum使用了基本上是用于简单堆栈机的汇编语言。Goss专利主要是指导把增强型的或过程型格式的高级编程语言与不同数据处理器接口起来。Goss使用带有4个操作字段的“quad”作为中间语言的基本码结构。参见Goss的第6行第5栏到第38行第6栏。这种不灵活结构不能充分地表示特定的SCE输出,如非过程型编程码。另外,Goss的中间语言是按照高级编程语言码的自上而下分析而设计的。参见Goss的第34-36行的第5栏。因此,Goss方法不能很好地适用于产生代表典型SCE输出码的中间码。例如,产生于SCE输出码的Goss中间码不能完全地保存SCE输出码的全部信息,从而不能使有效中间码最优化。因此,Goss专利不能提出一个合适的中间语言结构用于接口,比如电信业务的SCE和EE。从上面可知,需要一个有效且灵活的电信系统接口,它能使在不同SCE开发的业务应用在不同的EE中,而不需要SCE和EE之间的分离的接口,并且没有现存中间语言技术中的问题。本发明提供了在电信系统中接口不同SCE和EE的一种方法和装置。本发明的方法包括如下步骤定义一组中间码操作,该中间码操作适于表示在选择的SCE中开发的电信业务。分析从一个选择的SCE中的输出码,用以形成一个具有多个节点的分析树,所述分析树表示在SCE中开发的一种电信业条。从该套中间码操作和分析树中产生表示分析树的节点的中间码,从而中间码就可基本上保存包含在SCE输出码内的所有信息;以及从中间码产生用于每个EE的目标码,从而在选择的SCE中开发的电信业务可提供给每个EE。按照本发明的一个方面,提供了一个电信系统接口,它包括要与多个业务EE接口的至少一个SCE;分析SCE的输出码,以形成分析树的分析程序,该分析树表示在SCE中开发的电信业务,产生表示分析树节点的中间码的中间码生成器,从而使SCE输出码中包含的基本上所有的信息保存在中间码中;以及目标码发生器,用于从中间码中生成用于每个EE的目标码,从而在SCE中开发的电信业务可以提供给每个EE。按照本发明的另一方面,通过使用一行中间码-这里指字节组,中间码基本上保存了包含在SCE输出码的所有信息,用以表示SCE输出码分析树的每个节点。因此,本发明的电信系统接口包括一种中间语言,它能表示诸如SCE输出码分析树的语句和说明节点。因此,为产生一个最优化中间码提供了足够的信息。作为本发明的一个进一步特征,在特定的SCE上开发的电信业务可以使用在多种不同的EE中。SCE和EE之间的深度耦合被消除,因此不再需要设计一个位于SCE和EE间的分离的接口。业务接口设计、操作和维持费只是SCE和EE数量的线性函数,而不是当前使用的交叉编译方法的二次方函数。作为本发明的另一个特征,所提供的系统接口在SCE上没有操作的限制,并且不使用特有的格式,所以SCE和EE的选择可与卖方无关。该接口可允许卖方设计一个单一业务,它能在一组不同的EE上并行使用,并且允许卖方有效地维护和更新他们的业务。作为本发明的另一个附加特征,提供一个接口可以在不同的EE上重新使用当前存在的业务,而不用重新设计或改变现存业务。可以设计中间码以适应多个当前使用的SCE输出语言。于是,业务库可被维护。因此,比如说当开发不同的EE时,不需重新设计业务。作为本发明的进一步特征,提供了一个面向应用的程序语言(AOPL),它包括能很好地表示多个不同SCE输出码的中间码结构。依照本发明的中间码结构是基于一个灵活AOPL码行,这里指字节组,它有多个可变化的字段。比如说,该结构比上面所述的通常需要4个字段的Goss四元组结构更灵活。本发明的字节组结构特别适于表示SCE输出码的分析树,它经常用非过程型的程序语言。本发明因此比现存中间语言编译器提供了更多的优点,比如提高了中间码的最优化以及在多种EE中更有效的生成目标码。上述特征以及附加特征和本发明的优点,通过参照下面详细描述以及附图将变得更加明显。图1是按照本发明电信系统的示例性框图。图2是按照本发明电信系统接口的更详细框图。图3是按照本发明的,用以说明在电信系统接口内一组示例性码处理步骤的框图。图4是在SDL图形表示法中开发的部分示例性业务应用的流程图。图5到图8说明用于示例性电子表决业务应用中的SDL图形表示法。按照本发明,它可以与多个不同EE接口。本发明提供了一种在电信系统中用于把不同的SCE和EE进行接口的方法和装置。尽管下面的描述说明了电信系统接口在特定的SCE和EE中的使用,但应明白本发明还可以应用到更多种其它电信系统中。而且,尽管这里使用多个简单的编程设计语言为例用以说明目的,但应明白本发明特别适用于电信系统应用。图1给出了按照本发明的电信系统的方框图。该示例性系统包括一个具有多种不同的开发工具的业务生成环境(SCE)10。在SCE10中的示例性开发工具包括一个决策图编辑程序12,一个扩展卡工具14和一个有限态自动机(FSM)编辑程序16。决策图编辑程序和FSM编辑程序通常被认为是图形编辑程序。SCE也可以包括其它类型的开发工具,如计算机辅助系统工程(CASE)工具。通常,不同系统的卖方可以使用每一个开发工具12、14和16用以开发电信业务。使用不同的开发工具在SCE10中开发的电信业务在一组不同的执行环境(EE)20中被执行。在EE组20中示例性的EE包括一个业务交换处理器(SSP)22,一个业务控制处理器(SCP)24和一个信息外设(IP)26。通常,SCP24附有一个业务结点(SN)或与其组合一起来使用。IP26可以是比如一台计算机,一台传真机,一个视频终端或是一个文字到语音的转换机。通常EE22,24和26被作为智能网络(IN)单元。关于IN的其它详细情况,可以在AT&TTechnicalJournal,Vol.70,Nos.3-4,Summer1991中,M.Morgan等人的“ServiceCreationTechnologiesfortheInteligentNetwork”文章和AT&TTechnicalJournal,Vol.70,No.5,Summer1991中,G.Wyatt等人的“TheEvolutionofGlobalIntelligentNetworkArchitecture”文章中发现。上述两文章都在这里用作对比文献。在现有的电信系统中,通常一个分离的接口用以把在SCE10中使用每个开发工具12,14和16开发的业务与每个EE22,24和26相结合在一起。例如,决策图程序12可以设计成具有一个接口以允许该程序只用SSP22运行。在当前系统接口方法中,比如说,把一个电信系统的卖方的决策图程序12与另一个卖方设计的SCP24一起使用是不可能的。本发明部分通过使用一个基于面向应用的程序语言(AOPL)的系统接口30,从而避免了现有技术的这些问题。本发明的AOPL是以这样一种方式构成的,它能容易地把由使用不同的SCE开发工具产生的业务与多种EE综合在一起。这里所使用的术语“AOPL”是指以合适方式定义的公用中间代码的一种类型,用以表示SCE输出码分析树。图2是本发明电信系统接口30的一个示例性实施例。接口30包括一个SCE侧42和一个EE侧44,该接口用以把一个SCE与一个或多个EE互连。SCE侧42可以表示,比如说图1所示的决策图程序12的输出,而EE侧44可以表示SSP22的输入。决策图程序12还可以被当作位于SCE侧42内的一个图形用户接口(GUI)。通过AOPL46定义的一个公用中间语言,接口30的SCE侧42和EE侧44被互连。通常,SCE侧42可以根据在从一个SCE的线路48上接收的SCE输出码,从AOPL码的形式生成一个业务说明文件。从SCE输出码到AOPL码的转换是在分析程序50中完成的。其中分析程序50目前处在接口30的SCE侧42内。分析程序50把决策图程序12的高级SCE输出码转换为一个合适的AOPL码。然后,通过接口30把AOPL码传输到接口的EE侧44。在EE侧44,AOPL码驱动码发生器52,该码发生器把AOPL码转换成一个希望的目标码。然后,通过连线54,把目标码提供给一个合适的EE。一般来说,可以使用不同的分析程序50把特定SCE的操作码转换为公用中间AOPL码。同样,可以使用不同码发生器52来接收AOPL码。并为每个EE产生一个合适的目标码。因此,接口30的SCE侧42和EE侧44可以在SCE和EE内实现,而不是在,例如说一个独立的接口单元内。但是,现存的SCE和EE中,希望在一个独立的接口单元内包括分析和码生成功能。通过使用系统接口30,在SCE10中用每个开发工具12,14和16形成的业务,可以与每个EE22,24和26接口起来,如图1所示。此外,通过分析程序50,AOPL46和码发生器52,可以把先前以高级语言SCE开发的现存业务转换为特定的EE的希望目标码。用这种方式,在不同SCE中产生的电信业务就可以在多种不同的EE中被再使用,而不需要重新设计SCE。现存的电信业务,如那些已在特定的SCE中开发,用以在电话网络SSP和SCP中执行的业务,可使用一个合适的分析程序50,通过简单地把特殊SCE的业务说明文件转换为AOPL码进行重新使用。图2所示的AOPL46将在下文中更详细地描述。本发明的电信系统接口使用一个面向应用的中间语言-AO-PL,其结构特别适合于某些电信应用。总得来说,AOPL是有效描述SCE输出码分析树的语言。在本领域中,分析编程码以产生分析树是已公知的。例如在Addison-Wesley,March,1988的第40-42页,A.Aho等人的文章“Compilers,Principles,Techniques,andTools”中所描述的。上述文章在这里作为对比文件。本发明的接口使用一个中间码结构,它表示给定的电信业务的SCE输出码分析树的节点。通过表示分析树节点,中间码基本上保存了在SCE输出码内的所有信息。SCE输出码中的术语“基本上所有”是指那些通常在输出码分析树中所发现的信息,比如象SCE输出码的结构,说明、语句和运行等信息。对于一个给定的接口,可以选择多种不同的SCE,然后限定一组适于代表在一个所选择的环境中开发的电信业务的中间码操作。大多数SCE可通过限定一组合适的中间码操作进行调节。下面将给出几个中间码操作的例子。本发明的AOPL包括一个通用语法,结构和设计指南。尽管在给定应用中使用的AOPL的特定实施例通常将按照被接口的SCE和EE而变化,但语言的通用结构可以如下描述。一个示例性的AOPL文件通常包括许多不同的码行,在这里指字节组,它代表SCE输出码的分析树。每个AOPL字节组都被分号分开,并且包括许多由逗号分隔的不同字段。一个示例性的AOPL字节组包括三个字段,它们分别相应于字节组的标号、类型和操作。标号字段包括除逗号和分号以外的任何可印刷的字符序列,并且提供方便的方法用以标识特定的字节组。按照本发明的类型字段,既可以是P-node,也可以是S-node。该类型字段用以表明由特定的字节组表示的分析树节点的类型。P-node类型字节组可以包括说明、表达式和语句,而S-node型字节组常包括较长的程序序列,比如数据结构。AOPL字节组的操作字段包括一个操作符,它可以表明如在SCE输出节点分析树的一个节点的操作。操作字段还可以指示在那种操作中使用的操作数。示例性的AOPL操作符例如可以包括LEAF、VARREF、CONSTREF和SEQUENCE。一个AOPL字节组还可以包括许多附加的字段。例如,字节组可以包括在操作字段内标识的每个操作符的附加字段。这些附加字段这里称为操作数字段。操作数字段可根据标号来标识,比如与SCE输出码分析树的其它节点所对应的不同字节组。操作数字段代表由操作符字段上规定的操作符运行的其它字节组。可在特定AOPL字节组上包括的其它附加字段是名称和数值属性字段。名称属性字段通常包括一个字符串,它对应于SCE输出码的一个记号。数值属性字段通常包括一个整数值,指示,比如在字节组中运行的数据的大小和地址。本发明的AOPL识别三个不同种类的记号。这些记号是在SCE输出码中具有集合意义的字符序列。由AOPL识别的记号包括标识符、文字和分隔符。标识符可以是字母、数字、和/或特殊符号的任意序列。标识符的第一字符可以是除了数字以外的任何字符。在上述操作符字段内使用的操作符被留作AOPL关键字,因此不能作为在SCE输出码中的标识符。文字可以是两种类型之一,即字符串(也被称作串文字)或整(integer)文字。被本发明AOPL识别的第三类记号是分隔符。分隔符可以包括一些的字符,如“;”、“,”、“(”和“)”。AOPL以SCE的高级语言或输出码标识这些记号,并且产生代表记号的功能性互连的分析树。通过取出与任何特定记号相关的最长字符串,以SCE输出码标识这些记号。SCE输出码的某些部分,称为“白色空间”,是不作为记号的。这些白色空间包括空格、制表、换行和换页。在下面语言模块中总结了上面所描述的AOPL的语法。<AOPL-program>:<AOPL-node>|<AOPL-program><AOPL-node><AOPL-node>:<node-head><node-tail>;<node-head>:<label>,<node-type>,<opcode>,<node-list><label>:identifier<node-type>:P_node|S_node<opcode>:<AOPL_opcode>(integer-literal)<AOPL_opcode>:keyword<node-list>:<label>|<node-list>,<label><node-tail>:empty|<attribute-list><attribute-list>:<list-entry>|<attribute-list>,<list-entry><list-entry>:<name-attribute>|<value-attribute><name-attribute>:string-literal<value-attribute>:integer-literal在上述语言模块中,符号“<>”包围所示的每个示例性字节组的某些元素,并且符号“|”表示逻辑“或”操作符。本发明的AOPL使用一个简单的C程序加以说明。但是,必须再一次强调,AOPL结构特别适合于电信系统应用,并且这里显示用以说明AOPL的示例性C程序主要是为了说明目的。在这个C语言程序例子中,SCE10中使用的一个开发工具提供了如下格式输出码main(){intX;intY;y=2;x=y*y+2;printf("%d",x);}使用如上面描述的本发明的AOPL结构,上面所示的示例性C程序可以中间AOPL码的形式如下表示main,P_node,SEQUENCE(5),x_decl,y_decl,stm1,stm2,stm3;x_decl,P_node,INTDECL(1),x_var;x_var,P_node,VARREF(2),x_leaf,x_decl;x_leaf,P_node,LEAF(1),int,'x';y_decl,P_node,INTDECL(1),y_var;y_var,P_node,VARREF(2),y_leaf,y_decl;y_leaf,P_node,LEAF(1),int,'y';stm1,P_node,ASSIGNMENT(2),y_var,2_const;2_const,P_node,CONSTREF(1),2_leaf;2_leaf,P_node,LEAF(1),int,'2';stm2,P_node,ASSIGNMENT(2),x_var,r_stm2;r_stm2,P_node,PLUS(2),expr1,2_const;expr1,P_node,MULT(2),y_var,y_var;stm3,P_node,FUNCTION(2),printf,printf_arg;printf,P_node,LEAF(1),int,'printf';printf_arg,P_node,ARG_LIST(2),arg1,x_var;arg1,P_node,CONSTREF(1),%f_leaf;%f_leaf,P_node,LEAF(1),string,'%d';在上面的AOPL码中,字节组“main”表示示例性C程序的分析树的根节点。AOPL码还包括许多不同的操作符,以大写字母的方式显示。一个示例性的操作符是SEQUENCE操作符。SEQUENCE操作符引导AOPL接口,为跟随其后的五个示例性操作数产生顺序码。正象上面提到的,跟随一个AOPL操作符的操作数还与在SCE输出码分析树中的各种节点相对应。在给出的示例性程序中,顺序操作符的每个操作数或是C程序中的说明,或是语句。因此,这些操作数的每一个代表输出码分析树的一个节点。每个还与在中间AOPL码中的不同字节组或基本码行相对应。包括LEAF形式的操作符的字节组代表SCE输出码分析树的终端节点,在AOPL语言的特定实施例中预先定义了该终端节点的操作数。在给出的示例性AOPL码中,预先定义的操作数以斜体方式表示,并且代表象整数和字符串那样的原始数据类型。通常,操作符和预先定义的操作数将随着SCE的功能度和所使用的开发工具的不同而变化。上例中仅使用了P-node-type字节组。下面给出了一个具有AOPL码表示的包括S-node-type字节组的第二示例性C程序。structdate{intday;intmonth;intyear;}due_date;下面给出了与第二C程序相应的示范性AOPL码。due_decl,P_node,RECDECL(1),due_var;due_var,P_node,VARREF(2),due_leaf,due_decl;due_leaf,P_node,LEAF(1),date_record,'due_date';date_record,S_node,RECORD(4),field1,field2,field3,date_leaf;field1,P_node,RECFIELD(2),day_leaf,date_record;day_leaf,P_node,LEAF(1),int,'day',4;field2,P_node,RECFIELD(2),month_leaf,date_record;month_leaf,P_node,LEAF(1),int,'month',4;field3,P_node,RECFIELD(2),year_leaf,date_record;year_leaf,P_node,LEAF(1),int,'year',4;date_leaf,P_node,LEAF(1),date_record,'date',12;在上述示例性AOPL码中,操作符RECORD规定记录本身的名称和大小,而操作符RECFIELD(2)表明在记录中的每个字段的名称和类型。与RECORD操作符相应的操作数确定了记录字段。与运算符LEAF相对应的每个终端节点包括一个数值属性字段,该字段用以标识终端节点的大小。为了有效地构造如上所述的AOPL码,本发明可以使用图3所示的一个多级结构。可以把系统接口60分成几个不同的码转换操作或传送。每次传送可以包括一个进行码转换的独特的操作设置。比如说,来自任意开发工具12、14和16的SCE输出码可被提供到线路64。在第一传送66,把SCE输出码转换为第一传送码,通过输出68,把第一传送码提供给第二传送70。使用第一传送66,把来自特定SCE的SCE输出码转换为能很容易地被转换为公用中间语言的语言。因此,在第一传送66使用的操作设置可以被限定,以使得它贴近地反映产生SCE输出码的SCE的特征。这样,在产生公用中间AOPL码之前,很容易改变接口,使得它适应于SCE中的任何变化,并且能标识和报告SCE码级的错误。后面将给出用于电子表决业务应用的SDL表示的一个示例性第一传送操作设置。在第一传送66使用的操作设置可以存放在业务生成环境其本身内。第二传送70接收第一传送66产生的第一传送码,并且将用在所有的SCE中使用的公用中间语言产生第二传送码。第一传送70通常包括比在第一传送66中所用的操作设置更宽更一般的操作设置。因此可以在第一传送66引入新的操作而不影响第二传送70。第二传送数据库72可以包括,比如用以扩展第一传送码中的一些节点的第二传送宏指令。第二传送70在输出74上提供将在第三传送中被处理的公用中间AOPL码。第三传送76设计成简化每个EE的目标码生成。通常定义第三传送码的操作设置更接近于反映特定的EE属性。在第三传送中,存储在第三传送数据库78的一组第三传送宏指令可用于扩展第二传送码的节点。通过连线80,可以把所得到的目标码提供给特定的EE,如在电话交换网络中的SCP或SSP。尽管图3给出了一个示例性的3级结构用以实现接口60,但应明白在一个给出的应用中,接口可以包括更多的级用以把SCE输出码转换为EE目标码。在图3中所示的三次传送可以分布在SCE和EE上,其中第一传送码发生器在SCE中而第一传送码发生器在EE内,所以SCE产生来源于第二传送70的公用中间码,并且EE接收该公用中间码。这样第一传送66可在每个SCE内进行,而第三传送76可在每个EE中进行。为了产生公用中间码,SCE的输出部分使用第一传送程序和预先定义的操作设置。在第二传送中,中间码发生器用于产生并且优化公用中间码。最后,EE接收该中间码并产生合适的目标码。通常,每次传送都涉及把先前传送的码转换为一个更合适的码。因此,图3中的3级结构的第一、第二和第三传送与图2的分析程序50、AOPL码发生器46和目标码发生器52各自所执行的操作相对应。在有些情况,没必要在每个传送都执行转换过程。作为替代,可以使用表示象“Case”和“if”的典型程序结构的模块作为直接置换。于是在数据库72和78中存储的操作设置可以包括简单的宏指令,用以把SCE输出码分析树的节点从高级SCE输出码转换为低级EE目标码。本发明的电信系统接口已应用于多种不同的SCE和EE。图4表示使用CCITT业务规范描述语言(SDL)的示例性业务状态机的流程图。当用于图形表示形式时,SDL语言指SDL/GR,当用在文字、正文表示形式时,SDL语言指SDL/PR。使用常规文字编辑器可以产生SDL/PR格式的程序。但是,SDL/GR程序通常用,例如专为操作SDL/GR符号而设计的图形编辑器来开发。图4到图8,使用了SDL/GR图形符号。SDL/GR图形符号通常提供以图形符号格式表示电信业务功能的手段。例如,在CCITT蓝皮书Vol.X,FascicleX.1,“FoctionalSpecificationandDescriptionLanguage,”RecommendationZ.100和AnnexesA.B.C.andE,和RecommendationZ.110,1988中,将有更详细的描述,在这里,它们构成对比文件。SDL/GR图形表示法通常类似于分析树,因此它可以用字节组描述。用“起始”标注的标号100与用第一字节组表示的SDLSTATE符号相对应。标号102、104是SDL/GR图形表示法中的INPUT符号,并且可用不同的字节组表示它们。标号106、108也表示SDL/GR图形表示法的STATE符号。每个STATE符号100、106、108的内容标识一个状态,个而每个INPUT符号102、104的内容标识一个事件。可以用字节组的形式表示SDL/GR图形表示法,从而这种表示法内的每个标号都可与一个唯一AOPL操作相对应,其中AOPL操作的操作数反映了与标号的连接。STATE和EVENT操作分别表示STATE和INPUT标号内执行的操作。每个操作符包括许多与每个标号输出相对应的操作数。图4所示的示例性的SDL/GR符号,第一传送码发生器内被转换为下面的第一传送码。state,P_node,B_STATE(2),event1,event2,'Initial';event1,P_node,B_INPUT(1),state1,'bri!terminating_call';event2,P_node,B_INPUT(1),state2,'bri!send_answer_completed';state1,P_node,B_STATE(0),'Send_Answer';state2,Pnode,BSTATE(0),'Wait_For_Vote';象上面所述,第一传送码可通过分析SCE输出的高级码产生。此外,在系统接口单元内使用分析程序也可以产生第一传送码。使用第二传送把上面的第一传送码转换为下面能够提供给任何不同的EE的公用中间AOPL码。state1,P_node,STATE(2),state1_leaf,event_list1;state1_leaf,P_node,LEAF(1),state,'Initial';event_list1,P_node,SEQUENCE(2),event1,event2;event1,P_node,EVENT(2),event1_var,handler1;event1_var,P_node,VARREF(2),event1_leaf,event1_decl;event1_leaf,P_node,LEAF(1),event1_record,'bri!terminating_call';handler1,P_node,NEXTSTATE(1),state2;state2,P_node,STATE(2),state2_leaf,event_list2;state2_leaf,P_node,LEAF(1),state,'Send_Answer';event2,P_node,EVENT(2),event2_var,handler2;event2_var,P_node,VARREF(2),event2_leaf,event2_decl;event2_leaf,P_node,LEAF(1),event2_record,'bri!send_answer_completed';handler2,P_node,NEXTSTATE(1),state3;state3,P_node,STATE(2),state3_leaf,event_list3;state3_leaf,P_node,LEAF(1),state,'Wait_For_Vote';上面的第二传送码,或中间AOPL码,特别适于表示用业务逻辑语言(SLL)开发的业务。SLL是开发用以按照互相关的FSM描述电信业务应用的面向应用的语言。图4所示的SDL符号的不同状态是用操作符STATE表示的。与标号102、104相应的事件是用操作EVENT表示的。在STATE操作符中,第一操作数标识用以确定状态名称的LEAF节点,第二操作数标识由SEQUENCE节点表示的事件处理程序清单。EVENT操作符有用以标识VARREF节点的第一操作数和在一个事件处理程序内标识一个动作特殊子树的根的第二操作数。VARREF操作符有用以标识规定事件名称的LEAF节点的第一操作数和标识用于说明特殊事件的DEFEVENT节点的第二操作数。应注意在上述AOPL码中没有指定标号event-list2和event-list3,这是由于与它们相产的状态只在前面提到,并没有在本例的SCE输出码示例性段中定义。图4中所示的标号的内容是用于说明的目的,并不与一个特定的程度语言相对应。总的来说,图4中示例性图形符号内的文字可以使用任何程序语言的语法。在上面示例性的中间码中,一些说明和记录节点,如在event1-decl、event1-record、、event2-decl和eveat2-record中的那些假定被预先定义。从上例中可以看出,附加码操作出现在第二传送码上。第二传送码更加通用,它可以描述,例如多种不同的FSM。相反,第一传送产生的码与SCE输出码更加相关,它可以不适于表示其它SCE的码。上面给出的中间AOPL码可以转换为一个希望的EE的特定的目标码。另外,比如说,如果目标码与SLL非常相似,就不需要转换目标码。另外,一个用在很多SCE中的示例性开发工具是决策图编辑程序。决策图编辑程序如FSM编辑程序,是在业务设计和开发过程中作为辅助用以描述各种电信业务流程的一种图形编辑程序。通常,决策图的结构类似于分析树,因此,可以用一个AOPL字节组有效地表示每个决策图。决策图可包括各种不同的决策图节点,它们对应于业务操作并且由分支互连。每个操作可以包括多个子操作,如示例性操作的时间、日期和百分比。示例性操作这里称为DECISION。在决策图中用于百分比(percent)子操作符的第一传送码可以如下给出Percent-1,P-node,DECISION(2n),Val1,br1,…Valn,brn,′Percent′,其中n表示来自百分比节点的分支输出的数目。该码行还包括对于每个分支的一对操作数,它们用以确定从分比决策图节点到一个特定分支的分支相似性。在决策图中,时间子操作符节点的第一传送码可以如下给出time-1,P-node,DECISION(2n+1),Val1,br1,…Caln,brn,value,‘time’。对于时间节点,DECISION操作符有一个附加操作数“value”,它用以确定一个时间。在这个时间后,特定决策图节点将被连结到一个特定的分支。在第二传送后,第一传送码的上述两个示例性行被扩展成下面所示的第二传送码。对于百分比子操作符,第二传送可以产生下面的码percent-2,P_code,DGNODE(2),percent_call,br_list;percent_call,P_code,FUNCTION(2),percent_leaf,arg_list;percent_leaf,P_code,LEAF(1),int,'percent';arg_list,P_code,'ARG_LIST(n),const1,...,constn;br_list,P_node,LIST(n),br1,...,brn;对于时间子操作符,第二传送可以产生如下的码time-2,P_code,DGNODE(2),time_call,br_list;time_call,P_code,FUNCTION(2),time_leaf,arg_list;time_leaf,P_code,LEAF(1),int,'time';arg_list,P_code,ARG_LIST(n+1),const1,...,constn+1;br_list,P_node,LIST(n),br1,...,brn;在本发明的另一个实施例中,系统接口可以产生由用于特定的EE的汇编语言组成的目标代码。为了简化汇编码的产生,可以选择相应的第三传送操作,使它包括一个给定分析树的被预先定义终端的操作数。作为一个例子,特定的EE可以包括双地址格式的指令操作符源目的地这种格式的指令中,“操作符”是指汇编语言的操作符,“源”和“目的地”表示操作数字段。示例性的汇编语言操作符包括MOVE,MULT和ADD。因此,对于上面给出的第一示例性C程序,可以产生目标码。所得的第三传送码,或目标码,可以如下面所示label1,P_node,move(2),y_leaf,register_leaf;label2,P_node,mult(2),y_leaf,register_leaf;label3,P_node,add(2);2_leaf,register_leaf;label4,P_node,move(2),register_leaf,x_leaf;x_leaf,P_node,leaf(1),memory,'x';y_leaf,P_node,leaf(1),memory,'y';2_leaf,P_node,leaf(1),int,'2';register_leaf,P_node,leaf(1),register,'r6';在这个示例性的第三传送码中,操作数“memory”、“register”和“INT”假设被预先定义,并且它们分别表示储器位置、寄存器和一个常量。本发明便于实现在很多不同EE中的电信业务,而不需要为每个EE设计一个分离的接口。图5到图8给出了用于示例的“电子表决”业务的完整的SDL/GR表示法。其中电子表决业务能使选民在电信系统上进行表决。例如,电子表决业务可以在电话交换系统上完成。但是,业务本身通常是以图形表示法(如SDL/GR)被最先开发。通常,SL表示法包括许多不同的内部相关符号,按照逻辑流程图描述该业务。这些符号依一定顺序或优选级来安排,该顺序确定了符号的范围。在图形编辑程序中,位于接近编辑屏幕的左上角的给定符号要比在这个符号下面或右面的其它符号具有更高的优先级。例如,图5中的DECLARATION符号500,在该例中表示全局说明,这是因为该符号位于其它象由START符号508定义的FSM的符号之上。符号508比符号506有更高的优先级,因此,在标号506中的说明的范围是与START符号508相应的FSM。在SDL/GL表示法中的每个标号通常包括有文字。一个标号中的文字可能对应于,例如一个状态,事件或FSM的标识符,一个数据说明,一个在SLL语法中的语句或一个注释。为了适当在一个符号内可能容不下的长行文字,使用字符“\”指示一行的连续。比如说,当把SDL/GR转换为SLL用以在特定的EE内执行时,可以删去行连续字符“\”。象图4所地的这个例子中,这些符号包含了与一个SLL语法相应的文字。当然,所使用的该特定语言可随着应用的不同而变化。图5包括在描述电子表决业务的SDL/GR中的几个DECLARATION标号500到506。在SDL/GR中的DECLARATION符号相当于标号500和506,并且被用以在SDL/GR程序内说明和初始化数据。比如,标号500说明一组动态变量,该动态变量对应于该电子表决例中五个不同候选者的每一个的选择计数器,而标号504表明每个字符串长度为80个字符的以字符串的形式表示的五个候选者的名称。图5中标号508在SDL/GR表示法中称作一个START符号,而标号510是一个STATE符号。START符号通常用以定义一个FSM,并且连接到一个明确规定FSM的初始状态的STATE符号上。因此,START和STATE符号内的文字分别规定了FSM的名称和它的初始状态。因为FSM的范围是其定义的整个SDL/GR程序,所以在SDL/GR程序内,FSM必须是唯一的。但是,由于STATE的范围是与它相联的FSM,所以可以在SDL/GR程序内复制STATE名称。标号508和510定义了名称为“选举”的FSM,其有一个“空闲”初始状态。图5也示出了一个缺省的STATE符号550,它定义对应于缺省事件处理程序的一组INPUT符号552、554和556。缺省事件处理程序接收各种系统输入如一个未连接指示符,并终止FSM操作如STOP符号558所示。例如,当用户终止一个呼叫时,缺省事个处理程序提供一种用于终止FSM处理的方法。图6(a)表示“空闲”状态后的处理步骤。从STATE符号602,FSM可以接收两个不同输入之一。图6(a)的标号604是SDL/GR表示法的一个INNPUT符号。INPUT符号内的文字规定了对应于事件处理程序的名称。由于事件处理程序总是与一个状态有关,因此象标号604的一个INPUT符号前必须有STATE符号。如果前面的状态是缺省状态,即由一个包含星号的STATE符号来指示的,则事件处理程序就是指缺省事件处理程序。INPUT符号604指示出一个事件处理程序“bri!sendanswer-completed”接收到一个用以开始电子表决业务的一个可能输入。图6(a)中的标号606是SDL/GR表示法的一个DECSION符号,可以表示“if”或“test”复合语句。在“if”复合语句情况下,标号内的文字包括关键字“if”和布尔(boolean)逻辑表达式,并且至多有两个分支从DECISON符号分出。该标号606是“if”型的。另外,在“test复合语句的情况下,标号内的文字包括关键字“test””和表达式,并且可从这个符号分出许多分支。图7(c)的DECISION符号是“test”型的。图6(a)的DECISION符号指示出当接收到在INPUT符号604中规定类型的输出时,根据变量“Called-dn”作出判断。其中“Called-dn”指用户输入的电话号码。如果“Calledd-dn”不等于用户所拔的用以接收总表决计数信息的数字“Tally-No”,则进入PROCEDURECALL符号608,并且调用过程“not-tally”。发调用的过程执行后,FSM就进入STATE符号610所示的状态“Wait-For-Vote”。另外,如果该计数数字已被用户调用,则调用PROCEDURECALL符号612所指示的过程“is-tally”,然后FSM进入STATE符号614所示的状态“Wait-for-PIN”。过程“not-tally”和“is-tally”分别示于图7(a)和7(b)。从起始的“Idle”状态,该“选举”FSM也可接收如INPUT符号616所示的“bir!terminating-call”输入。如果接收到这个输入,PROCEDURECALL符号618就将FSM引入过程“bt-call”。执行完该过程后,FSM返回STATE符号620中用“-”所指示的当前状态。在SDL/GR表示法使用的短线是表示FSM当前状态的简写。过程“bt-call”在图7(e)中给出。图6(b)给出了STATE符号614所示的'Wait-For-PIN状态后的处理步骤。INPUT符号616接收由业务用户输入的数字。这此数字,例如可通过使用按键电话的双音多频(DTMF)命令输入。DECISON符号618指示所接收到的数字是否与,比如说,被授权接收关于决表决计数信息的个人识别码(PIN)表一致。如果是,PROCEDURECALL符号620指示执行“is-col-pin”过程,然后FSM返回到STATE符号622所指示的当前状态。否则,如果接收到的数字不符合一个授权的PIN,用户则接收一个如TASK符号624所示的消息,拒绝其接收总表决计数信息的权利。SDL/GR表示法的TASK符号用以指示比如以SLL语句格式的事件处理程序的操作。然后FSM如STATE符号628所示返回当前状态。图6(c)表示通过与图6(a)的STATE符号610相应的“Wait-For-Vote”状态所访问的符号。INPUT符号642指示出从STATE符号640所示的状态“Wait-For-Vote”接收到一个输入“Collected-digits”。该输入可对应于由可从电话进入的系统用户对特定候选人的选择。比如,以DTMF命令格式的几个数字。如果接收到该输入,DECISION标号644指出对照变量“Max-Cand”来检验数字计数器,其中“Max-Cand”对应于大一个给定的选举中最大可能的候选人选择号。如果数字计数器大于“Max-Cand”,则输入对应一个有效的候选人选择,而DECISION符号646表示,要进行另一个决策看看是否输入数字“9”。在这个例子中,数字“9”表示用户想要达到的总表决计数信息。如果输入数字“9”,则根据所输入的数字,TASK符号648向用户提供一个通知,即做出了一个不正确的选择。然后FSM返回由DECISION符号630所表示的当前状态。另一方面,如果输入了数字“9”,TNSK符号654指示出要提示用户输入一个PIN用以验证,比如说,用户被授权接收总的表决计数。在提示用户输入PIN后,FSM进入STATE符号656所示的状态“Wait-For-PIN”。如果所收集的数字计数器指示用户已输入一个有效的候选人选择数字,那么PROCEDURECALL符号658就指示应执行图7(c)所示的“it-max-cand”过程。执行完该过程后,FSM返回STATE符号660所示的当前状态。图7示出了更详细的在示例性电子表决的SDL/GR表示法中所调用的过程。标号700、716、724、740和756对应于PROCEDURESTART符号,而标号715、723、739、755和759对应于PROCEDURESTOP符号。图7(a)示出了从图6(a)的PROCEDUCECALL符号608处调用的过程“not-tally”的处理步骤。比如,TASK符号702可以引导文字-语音转换器,把消息提供给用户。该消息用对应于SDL/GR表示法中一个COMMENT符号的括号示于TASK符号的右边。示例性的消息是向用户指出他们正表决的选举的名称。为了标识选举中的5个候选人,几个不同MACROCALL符号704到712是顺序接入的。与符号704到712相应的宏功能在图8(a)中给出,并且引导用户输入一个合适的数字以对一个特定的候选人进行表决,然后TASK符号714可以提示用户输入一个特定的数字,此例中为“9”,以进入每个候选人的当前的表决计数。图7(b)示出从图6(a)的PRROCEDURECALL符号612调用的过程“is-tally”的步骤。TASK符号720提示用户输入一个PIN,然后MACROCALL符号722调用图8(b)所示的一个宏指令“tts-digits”。图7(c)示出从图6(c)的PROCEDURECALL符号658调用的过程“it-max-cand”的步骤。。DECISION符号726指示出,对收集的数字进行测试以确定用户选择了哪一个有效的候选人。例如,通过输入“1”,用户可以选举第一候选人。于是,MACRDCALL符号728到736指示出调用图8(c)所示的一个宏指令“send(n,s)”。图7(d)示出了从图6(b)的PROCEDURECALL符号620调用的过程“is-col-pin”的步骤,表明用户被授权接收总的表决计数。TASK符号702提供一个消息给用户,即将给出每个候选人当前的总数。大MACROCALL符号744到754,调用一个宏指令“cand-text”,以向用户提供每个候选人的正确的总数。图8(d)中更详细地给出了宏指令“cand-text1”。图7(e)表示从图6(a)的PROCEDURECALL符号618调用的过程“bt-call”618的步骤。图8更详细地给出了在电子表决SDL/GR程序中调用的每个宏指令的处理步骤。图8(a)到图8(d)分别给出了宏指令“cand-text(s,r,n)”,“tts-digits”,“send(n,s)”和“cand-textl(s,r)”其它的详细情况。标号800、810、820和830对应于MACROSTART符号。而标号809、813、823和837对应于MACROSTOP符号。标号808和836相当于出连接符,它们分别指示对应于DDECISION符号802和832的决策操作的结束。应注意到上述示例性电子表决的SDL/GR表示法和用于符号文字的语法可以随着应用的不同而改变。但是,上述电子表决示例用以说明本发明接口所提供的优越性。象在SDL/GR图形编辑程序中开发的诸如电子表决的业务应用,作为这里所提供的面向应用的接口结果,现在可以应用在任何一组不同的EE中。按照本发明的图5至图8的电子表决业务所产生的一组第一传送码如下面所示Pls1,P_node,B_TEXT_G(1),Pls5,dynamic';Pls5,P_node,B_TEXT_G(1),NULL,rc';Pls2,P_node,B_START(2),Pls4,Pls3,'election';Pls4,P_node,B_TEXT_F(1),Pls12,access';Pls12,P_node,B_TEXT_F(1),NULL,dynamic';Pls3.Pnode,BSTATE(0),'Idle';Pls6,P_node,B_STATE(3),Pls9,Pls11,Pls7,'*';Pls9,P_node,B_INPUT(1),Pls17,completed';Pls11,P_node,B_INPUT(1),Pls17,'bri!disconnected';Pls7,P_node,B_INPUT(1),Pls17,'collect_failed';Pls17,P_node,B_STOP(0),'';P2s1,P_node,B_STATE(2),P2s6,P2s2,'Idle';P2s6,P_node,B_INPUT(1),P2s13,answer_completed';P2s2,P_node,B_INPUT(1),P2s4,terminating_call';P2s13,P_node,B_DECISION(4),P2s14,P2s13T1,P2s16,P2s13T2,Tally_No';P2s13T2,P_node,B_TEXT(0),'false';P2s13T1,P_node,B_TEXT(0),'true';P2s4,P_node,B_P_CALL(1),P2s5,'bt_call';P2s5,P_node,B_STATE(0),'-';P2s16,P_node,B_P_CALL(1),P2s17,'not_tally';P2s14,P_node,B_P_CALL(1),P2s15,'is_tally';P2s17,P_node,B_STATE(0),'Wait_For_Vote';P2s15,P_node,B_STATE(0),'Wait_For_PIN';P3s1,P_node,B_STATE(1),P3s2,'Wait_For_PIN';P3s2,P_node,B_INPUT(1),P3s3,'collected_digits';P3s3,P_node,B_DECISION(4),P3s4,P3s3T3,P3s7,P3s3T4,COL_PIN';P3s3T3,P_node,B_TEXT(0),'true';P3s3T4,P_node,B_TEXT(0),'false';P3s7,P_node,B_TASK(1),P3s6,'tts!send(port=port_num,text="Sorry,noauthorization.")';P3s4,P_node,B_P_CALL(1),P3s5,'is_col_pin';P3s5,P_node,B_STATE(0),'-'P3s6,P_node,B_STATE(0),'-'P4s1,P_node,B_STATE(1),P4s2,'Wait_for_Vote';P4s2,P_node,B_INPUT(1),P4s3,'collected_digits';P4s3,P_node,B_DECISION(4),P4s6,P4s3T7,P4s9,P4s3T8,Max_Cand';P4s3T8,P_node,B_TEXT(0),'true';P4s3T7,P_node,B_TEXT(0),'false';P4s6,P_node,B_DECISION(4),P4s4,P4s6T5,P4s7,P4s6T6,"9"';P4s6T6,P_node,B_TEXT(0),'false';P4s6T5,P_node,B_TEXT(0),'true';P4s9,P_node,B_P_CALL(1),P4s10,'lt_max_cand';P4s10,P_node,B_STATE(0),'-';P4s7,P_node,B_TASK(1),P4s8,'tts!send(port=Port_num,text="Sorry,incorrectchoice.")';P4s4,P_node,B_TASK(1),P4s5,port=Port_num,prompt=speech_text,max_digits=4)';P4s5,P_node,B_STATE(0),'Wait_For_Pin';P4s8,P_node,B_STATE(0),'-';P5s14,P_node,B_M_START(1),P5s15,'cand_text(s,r,n)';P5s8,P_node,B_M_START(1),P5s9,'tts_digits(a,b,c,d)';P5s25,P_node,B_M_START(1),P5s26,'cand_text1(s,r)';P5s15,P_node,B_DECISION(2),P5s16,P5s15T9,"-"';P5s9,P_node,B_TASK(1),P5s13,'tts!collect_digits(port=a,dialing_terminator=b,prompt=c,max_digits=4);P5s15T9,P_node,B_TEXT(0),'true';P5s16,P_node,B_TASK(1),P5s20,","."';P5s26,P_node,B_DECISION(2),P5s27,P5s26T10,"-"';P5s26T10,P_node,B_TEXT(0),'true';P5s13,P_node,B_M_STOP(0),'';P5s27,P_node,B_TASK(1),P5s29,string(r)';P5s20,P_node,B_TASK(1),P5s23,n';P5s1,P_node,B_P_START(1),P5s3,'is_tally';P5s29,P_node,B_LABEL(1),P5s30,'*';P5s23,P_node,B_LABEL(1),P5s24,'*';P5s30,P_node,B_M_STOP(0),'';P5s3,P_node,B_TASK(1),P5s5,PIN"';P5s24,P_node,B_M_STOP(0),'';P5s49,P_node,B_P_START(1),P5s50,'bt_call';P5s5,P_node,B_M_CALL(1),P5s7,(Port_num,"#",speech_text,4)';P5s50,P_node,B_TASK(1),P5s51,bri!send_answer(port=Port_num)';P5s7,P_node,B_P_STOP(0),'';P5s51,P_node,B_P_STOP(0),;P6s1,P_node,B_P_START(1),r''G'ly;P6s3,P_node,B_TEXT_EXP(0),":';P6s2,P_node,B_TASK(3),P6s5,P6s3,P6s4,';P6s4,P_node,B_TEXT_EXP(0),election."';P6s5,P_node,B_M_CALL(1),P6s6,(E_Cand1,"1",1)';P6s6,P_node,B_M_CALL(1),P6s8,(E_Cand2,"2",2)';P6s8,P_node,B_M_CALL(1),P6s9,(E_Cand3,"3",3)';P6s9,P_node,B_M_CALL(1),P6s10,(E_Cand4,"4",4)';P6s11,P_node,B_TASK(1),P6s12,tts!collect_digits\'J'J1'_=r'J1'_11U1')1')1=',111C1X._U1y11'P6s10,P_node,B_M_CALL(1),P6s11,(E_Cand5,"5",5);P6s12,P_node,B_P_STOP(0),'';P7s12,P_node,B_P_START(1),P7s13,'is_col_pin';P7s13,P_node,B_TASK(1),P7s16,are,"';P7s16,P_node,B_M_CALL(1),P7s23,(E_Cand1,Election_Counter1);P7s23,P_node,B_M_CALL(1),P7s24,(E_Cand2,Election_Counter2);P7s24,P_node,B_M_CALL(1),P7s25,(E_Cand3,Election_Counter3);P7s25,P_node,B_M_CALL(1),P7s26,(E_Cand4,Election_Counter4);P7s26,P_node,B_M_CALL(1),P7s21,(E_Cand5,Election_Counter5);P7s21,P_node,B_TASK(1);P7s22,'tts!send(port=Port_num,text=spech_text)';P7s22,P_node,B_P_STOP(0),'';P8s6,P_node,B_P_START(1),P8s2,'it_max_cand';P8s2,P_node,B_DECISION(10),P8s3,P8s2T11,P8s4,P8s2T12,P8s5,P8s2T13,P8s7,P8s2T14,P8s8,P8s2T15;P8s2T15,P_node,B_TEXT(0),'5';P8s2T14,P_node,B_TEXT(0),'4';P8s2T13,P_node,B_TEXT(0),'3';P8s2T12,P_node,B_TEXT(0),'2';P8s2T11,P_node,B_TEXT(0),'1';P8s7,P_node,B_M_CALL(1),P8s9,'send(E_Cand4,Election_Counter4)';P8s5,P_node,B_M_CALL(1),P8s9,'send(E_Cand3,Election_Counter3)';P8s3,P_node,B_M_CALL(1),P8s9,'send(E_Cand1,Election_Counter1)';P8s4,P_node,B_M_CALL(1),P8s9,'send(E_Cand2,Election_Counter2)';P8s8,P_node,B_M_CALL(1),P8s9,'send(E_Cand5,Election_Counter5)';P8s9,P_node,B_LABEL(1),P8s10,'*';P8s10,P_node,B_P_STOP(0);P8s11,P_node,B_M_START(1),'SlG,sencl'n,s);P8s12,P_node,B_TASK(1),P8s13,tts!send(port=Port_num,text=speech_text)';P8s13,P_node,B_M_STOP(0),'';用于示例性的电子表决业务应用的一组示例性公用中间AOPL码如下面所示:@94840,P_node,S11PROG(2),@109072,@109296;t''7@109072,P_node,SEQUENCE(2),@109104,@109240;@109104,P_node,SIGNATURE(0),dynamic';@109240,P_node,SIGNATURE(0),rc';@109296,P_node,SEQUENCE(1),@109328;@109328,P_node,S11FSM(5),@109360,@109488,@109552,@109728,@110320;@109360,P_node,LEAF(1),$fsm,'election';@109488,P_node,STATE(2),@109520,@110352;@109520,P_node,LEAF(1),$state,'Idle';@110352,P_node,SEQUENCE(2),@110384,@79976;@110384,P_node,EVENT(2),@110416,@110472;@110416,P_node,LEAF(1),$event,'bri!send_answer_completed';@110472,P_node,SEQUENCE(1),@110504;@110504,P_node,IF(4),@110536,@110592,NULL,@112312;@110536,P_node,SIGNATURE(0),Tally_No';@110592,P_node,SEQUENCE(2),@110696,@112280;@110696,P_node,SEQUENCE(2),@110728,@111944;@110728,P_node,SIGNATURE(0),PIN"';@111944,P_node,SEQUENCE(1),@111976;@111976,P_node,SIGNATURE(0),'tts!collect_digits(port=Port_num,dialing_terminator="#",prompt=speech_text);@112280,P_node,NEXTSTATE(1),@112224;@112224,P_node,STATE(2),@112136,NULL;@112136,P_node,LEAF(1),$state,'Wait_For_PIN';@112312,P_node,SEQUENCE(2),@112416,@79912;@112416,P_node,SEQUENCE(7),@112448,@76688,@77304,@77968,@78600,@79232,@79680;@112448,P_node,SIGNATURE(0),election."';@76688,P_node,SEQUENCE(1),@76720;@76720,P_node,IF(4),@76752,@76832,NULL,NULL;@76752,P_node,SIGNATURE(0),"-"';@76832,P_node,SEQUENCE(2),@76864,@77016;@76864,P_node,SIGNATURE(0),","."';@77016,P_node,SIGNATURE(0),1';@77304,P_node,SEQUENCE(1),@77336;@77336,P_node,IF(4),@77368,@77448,NULL,NULL;@77368,P_node,SIGNATURE(0),"-"';@77448,P_node,SEQUENCE(2),@77480,@77632;@77480,P_node,SIGNATURE(0),","."';@77632,P_node,SIGNATURE(0),2';@77968,P_node,SEQUENCE(1),@78000;@78000,P_node,IF(4),@78032,@78112,NULL,NULL;@78032,P_node,SIGNATURE(0),"-"';@78112,P_node,SEQUENCE(2),@78144,@78296;@78144,P_node,SIGNATURE(0),","."';@78296,P_node,SIGNATURE(0),3';@78600,P_node,SEQUENCE(1),@78632;@78632,P_node,IF(4),@78664,@78744,NULL,NULL;@78664,P_node,SIGNATURE(0),"-"';@78744,P_node,SEQUENCE(2),@78776,@78928;@78776,P_node,SIGNATURE(0),","."';@78928,P_node,SIGNATURE(0),4';@79232,P_node,SEQUENCE(1),@79264;@79264,P_node,IF(4),@79296,@79376,NULL,NULL;@79296,P_node,SIGNATURE(0),"-"';@79376,P_node,SEQUENCE(2),@79408,@79560;@79408,P_node,SIGNATURE(0),","."';@79560,P_node,SIGNATURE(0),5';@79680,P_node,SIGNATURE(0),tts!collect_digits(port=Port_num,prompt=speech_text,max_digits=1);@79912,P_node,NEXTSTATE(1),@79856;@79856,P_node,STATE(2),@79768,@113360;@79768,P_node,LEAF(1),$state,'Wait_For_Vote';@113360,P_node,SEQUENCE(1),@113392;@113392,P_node,EVENT(2),@113424,@113480;@113424,P_node,LEAF(1),$event,'collected_digits';@113480,P_node,SEQUENCE(1),@113512;@113512,P_node,IF(4),@113544,@113600,NULL,@117456;@113544,P_node,SIGNATURE(0),Max_Cand';@113600,P_node,SEQUENCE(1),@113704;@113704,P_node,SEQUENCE(1),@113736;@113736,P_node,TEST(3),@113768,@113800,NULL;@113768,P_node,SIGNATURE(0),collected_digits.digits';@113800,P_node,CASE(10),@113864,@113920,@115496,@115584,@115992,@116048,@116456,@116544,@113864,P_node,SIGNATURE(0),'1';@113920,P_node,SEQUENCE(1),@115248;@115248,P_node,SEQUENCE(1),@115280;@115280,P_node,SIGNATURE(0),tts!send(port=Port_num,text=speech_text);@115496,P_node,SIGNATURE(0),'2';@115584,P_node,SEQUENCE(1),@115744;@115744,P_node,SEQUENCE(1),@115776;@115776,P_node,SIGNATURE(0),tts!send(port=Port_num,text=speech_text);@115992,P_node,SIGNATURE(0),'3';@116048,P_node,SEQUENCE(1),@116208;@116208,P_node,SEQUENCE(1),@116240;@116240,P_node,SIGNATURE(0),tts!send(port=Port_num,text=speech_text);@116456,P_node,SIGNATURE(0),'4';@116544,P_node,SEQUENCE(1),@116704;@116704,P_node,SEQUENCE(1),@116736;@116736,P_node,SIGNATURE(0),tts!send(port=Port_num,text=speech_text);@116952,P_node,SIGNATURE(0),'5';@117016,P_node,SEQUENCE(1),@117176;@117176,P_node,SEQUENCE(1),@117208;@117208,P_node,SIGNATURE(0),tts!send(port=Port_num,text=speech_text)';@117456,Pnode,SEQUENCE(1),@117488;@117488,P_node,IF(4),@117520,@117576,NULL,@117840;@117520,P_node,SIGNATURE(0),"9"';@117576,P_node,SEQUENCE(2),@117608,@117808;@117608,P_node,SIGNATURE(0),tts!collect_digits(port=Port_num,prompt=speech_text,max_digits=4@117808,P_node,NEXTSTATE(1),@117752;@117752,P_node,STATE(2),@117664,NULL;@117664,P_node,LEAF(1),$state,'Wait_For_Pin';@117840,P_node,SEQUENCE(1),@117872;@117872,P_node,SIGNATURE(0),'tts!send(port=Port_num,text="Sorry,incorrectchoice.")';@79976,P_node,EVENT(2),@80008,@80064;@80008,P_node,LEAF(1),$event,'bri!terminating_call';@80064,P_node,SEQUENCE(1),@80168;@80168,P_node,SEQUENCE(1),@80200;@80200,P_node,SIGNATURE(0),bri!send_answer(port=Port_num)@109552,P_node,SEQUENCE(2),@109584,@109640;@109584,P_node,SIGNATURE(0),access';@109640,P_node,SIGNATURE(0),dynamic';@109728,P_node,SEQUENCE(3),@109760,@109936,@110112;@109760,P_node,EVENT(2),@109792,@109848;@109792,P_node,LEAF(1),$event,'tts!send_completed';@109848,P_node,SEQUENCE(1),@109880;@109880,P_node,SIGNATURE(0),'end_call';@109936,P_node,EVENT(2),@109968,@110024;@109968,P_node,LEAF(1),$event,'bri!disconnected';@110024,P_node,SEQUENCE(1),@110056;@110056,P_node,SIGNATURE(0),'end_call';@110112,P_node,EVENT(2),@110144,@110200;@110144,P_node,LEAF(1),$event,'collect_failed';@110200,P_node,SEQUENCE(1),@110232;@110232,P_node,SIGNATURE(0),'end_call';@110320,P_node,SEQUENCE(3),@109488,@80320,@79856;@80320,P_node,STATE(2),@80232,@80376;@80232,P_node,LEAF(1),$state,'Wait_For_Pin';@80376,P_node,SEQUENCE(1),@80408;@80408,P_node,EVENT(2),@80440,@80496;@80440,P_node,LEAF(1),$event,'collected_diqits';@80496,P_node,SEQUENCE(1),@80528;@80528,P_node,IF(4),@80560,@80616,NULL,@113240;@80560,P_node,SIGNATURE(0),CO1_PIN';@80616,P_node,SEQUENCE(1),@80720;@80720,P_node,SEQUENCE(7),@80752,@82088,@82584,@83128,@83640,@84152,@113152;@80752,P_node,SIGNATURE(0),are,"';@82088,P_node,SEQUENCE(1),@82120;@82120,P_node,IF(4),@82152,@82232,NULL,NULL;@82152,P_node,SIGNATURE(0),"-"';@82232,P_node,SEQUENCE(1),@82264;@82264,P_node,SIGNATURE(0),string(Election_Counter1);@82584,P_node,SEQUENCE(1),@82616;@82616,P_node,IF(4),@82648,@82728,NULL,NULL;@82648,P_node,SIGNATURE(0),"-"';@82728,P_node,SEQUENCE(1),@82760;@82760,P_node,SIGNATURE(0),string(Election_Counter2);@83128,P_node,SEQUENCE(1),@83160;@83160,P_node,IF(4),@83192,@83272,NULL,NULL;@83192,P_node,SIGNATURE(0),"-"';@83272,P_node,SEQUENCE(1),@83304;@83304,P_node,SIGNATURE(0),string(Election_Counter3);@83640,P_node,SEQUENCE(1),@83672;@83672,P_node,IF(4),@83704,@83784,NULL,NULL;@83704,P_node,SIGNATURE(0),"-"';@83784,P_node,SEQUENCE(1),@83816;@83816,P_node,SIGNATURE(0),string(Election_Counter4);@84152,P_node,SEQUENCE(1),@84184;@84184,P_node,IF(4),@84216,@112920,NULL,NULL;@84216,P_node,SIGNATURE(0),"-"';@112920,P_node,SEQUENCE(1),@112952;@112952,P_node,SIGNATURE(0),string(Election_Counter5);@113152,P_node,SIGNATURE(0),'tts!send(port=Port_num,text=speech_text';@113240,P_node,SEQUENCE(1),@113272;@113272,P_node,SIGNATURE(0),'tts!send(port=Port_num,text="Sorry,noauthorization.")';用于电子表决SDL/GR的上述中间码保存了原始SDL/GR表示支的足够细节,比如说能有效地优化中间码。还有,通过简单地把中间码转换为一个给定EE的合适目标码,中间码可以在任何不同EE内执行。原始SDL/GR表示法和中间码的基本结构不需要重新设计,或是改变以适合一个特定类型的EE。尽管上面详细描述主要按照特定的SCE和EE的应用来描述本发明,但应强调,所讨论的实施例仅仅是示例性的。在所给的结构中可以作许多改变,包括比如电信系统的类型,业务生成和执行环境的类型,中间码语法和在系统接口中用以转换和产生码的传送的次数。对于本领域中的熟练技术人员来说,这些和其它的改变和变化将是很显然的,因此本发明只是被附加的权利要求所限制。权利要求1.用于接口电信业务生成环境和业务执行环境的方法,包括下列步骤标识要被接口的一组所选择的业务生成环境;定义一组适于表示在所述选择的业务生成环境中开发的电信业务的中间码操作;分析来自所述选择的一个业务生成环境的输出码,以形成具有多个节点的分析树,所述分析树表示在所述业务生成环境中开发的所述电信业务之一;根据所述的一组中间码操作和所述分析树,生成用以表示所述分析树所述节点的中间码,以使所述中间码保存在所述业务生成环境的输出码所包含的基本上所有信息;以及根据所述中间码,为每个执行环境生成一个目标码,从而在所述选择的业务生成环境之一上开发的所述电信业务可以在每个所述执行环境内提供。2.根据权利要求1的方法,其中用于生成中间码的步骤进一步包括,生成具有多个字节组的中间码。每个所述字节组对应于所述输出码分析树的一个节点。3.根据权利要求1的方法,其中所述生成中间码的步骤进一步包括,生成能够表示所述分析树的语句节点的中间码。4.根据权利要求1的方法,其中生成中间码的所述步骤进一步包括,生成能够表示所述分析树的说明节点的中间码。5.根据权利要求1的方法,其中分析输出节点,生成中间码和生成一目标码的步骤,进一步包括步骤分析所述业务生成环境输出码,以产生第一传送码;使用所述第一传送码和储存在第二传送数据库的第二传送宏指令,生成第二传送码,所述第二传送码对应于所述中间码;使用所述第二传送码和储存在第三传递数据库的第二传送码,生成第三传送码,所述第三传送码对应于述执行环境的所述目标码。6.根据权利要求2的方法,其中所述业务生成环境是一个图形编辑程序,它使用多个相互关联的符号以图形表示法的方式描述所述电信业务。7.根据权利要求6的方法,其中用在所述图形编辑程序的每个所述符号对应于所述中间码的每个所述字节组。8.根据权利要求7的方法,其中所述字节组中的一个操作符的操作数,指示出一个所述符号与所在所述图形编辑程序的所述图形表示法的其它符号之间的相互关系。9.根据权利要求6的方法,其中所述图形编辑程序是一个决策图编辑程序,其使用由分支相互连接的许多决策图节点,以决策图的方式表示所述电信业务。10.根据权利要求9的方法,其中所述决策图节点之一是百分比节点,并且所述字节组包括每个所述分支的一对操作数,表示连接到一个特定分支的特定决策图节点的相似程度。11.根据权利要求9的方法,其中所述决策图节点之一是时间节点,并且所述字节组包括用于指示时间的操作数,在该时间后,一个特定的决策图节点将被连接到一个特定的分支。12.根据权利要求7的方法,其中所述图形编辑程序是一个有限态自动机编辑程序。13.根据权利要求1的方法,其中所述中间码被用以生成适用于在所述业务执行环境中直接执行的业务逻辑语言码。14.根据权利要求1的方法,其中所述电信业务是电子表决业务。15.根据权利要求14的方法,其中所述电子表决业务是在有限态自动机编辑程序中,使用业务规范描述语言来开发的。16.电信系统接口包括至少一个要接口到多个业务执行环境的业务生成环境;分析程序,用于分析所述业务生成环境的输出码以形成具有多节点的分析树,所述分析树表示在所述业务生成环境中开发的电信业务;中间码生成器,用于根据一组中间码操作和所述分析树产生表示所述分析树的所述节点的中间码,以使所述中间码保存包含在所述业务生成环境输出码中的基本上所有信息;以及目标码生成器,用于根据所述中间码生成一个目标码,该目标码用于每一所述执行环境,从而在所述业务生成环境开发的所述电信业务可以提供给每个所述执行环境。17.根据权利要求16的接口,其中所述中间码包括多个字节组,每个所述字节组对应于所述分析树的一个节点。18.根据权利要求16的接口,其中所述业务生成环境是一个图形编辑程序,它描述以图形表示法表示的所述电信业务。19.根据权利要求16的接口,其中所述执行环境是一个电信系统业务交换处理器。20.根据权利要求16的接口,其中所述执行环境是一个电信系统业务控制处理器。全文摘要本发明提供了电信系统中用于接口不同业务生成环境(SCE)和执行环境(EE)的方法和装置。本发明的接口包括接口到多个业务EE的一个SCE;分析SCE的输出码以形厉分析树的分析程序,产生表示分析树节点的中间码的中间码生成器,以使中间码保存包含在SCE输出码的基本上所有信息;以及从中间码生成用于每个EE目标码的目标码生成器,从而在SCE中开发的电信业务可以提供给每个EE。文档编号H04M3/42GK1113625SQ94119530公开日1995年12月20日申请日期1994年12月17日优先权日1993年12月20日发明者迈克·P·卡普兰,陆慧兰,李·斯拉兹曼申请人:美国电报电话公司