具体实施方式
带有动态用户界面的终端用户控制配置(EUC)系统解决了关于向消费者隐藏VoIP网络服务的复杂性同时允许消费者能轻松地请求、自设和管理VoIP服务的技术难题。除了减少包括自设网络服务的周期时间、辅助用户完成需要激活的任务和管理VoIP和IP多媒体服务之外,带有动态用户界面的终端用户控制配置(EUC)系统还隔离了错误处置和新网络平台的开发。EUC系统减小了引入新网络技术的复杂性,并且使用户不再需要理解业务处理的复杂性和激活网络服务所需的网络技术。
EUC系统使用面向服务架构(Service Oriented Architecture,SOA)和标准web服务(即,SOAP,XML和WSDL),以将系统功能分配到不同的逻辑层之间,从而简化了数据连接、数据交换和工艺整合(process integration)。EUC系统使用基于SOA的软件模块来使用web服务进行交流以分离逻辑层,从而使引入新的网络技术和服务变得更加容易,并在整合层处使对系统的影响最小化。采用SOA提供层分离和组件隔离,从而使每层可以执行并行的开发而不会造成操作冲突,因此,有利于减少新的网络服务上市的时间。逻辑层代表物理分布式系统(physically distributed system),其可包括水平和竖直分布。EUC系统使用在竖直和水平方向上可测且可重复使用的处理和服务来部署新的网络技术,而该新的网络技术降低了整合成本并改善了平台性能。EUC系统还在业务层和整合层之间使用同步呼叫(例如,用Java消息服务(JMS)队列来实现),以减少业务层的硬件资源需求。
在EUC系统识别出在服务启动之前可能需要用户交互才能完成的任务的情况下,EUC系统基于从数据库取得的信息和从之前完成的任务或工作流步骤中识别出的上下文信息(context information)(例如,状态转变信息),产生工作列表并建立运行时的动态GUI渲染。EUC系统利用状态转变信息来创建工作流步骤的动态序列,而最终产生动态GUI渲染。工作流步骤包括由于将建立在用户界面规则文件(例如,XSLT-基于可扩展样式表语言的文件)中的规则应用到用户界面成分数据文件(例如,XML-基于可扩展标记语言的文件)中识别的数据上而产生的一个或多个转变。用户界面规则可与用户界面成分数据组合到一个文件中。业务层管理用户界面规则文件和用户界面成分数据文件,动态地组成动态用户界面(例如,JSP-Java服务器页面)并动态地安排动态用户界面的格式,其中用户界面规则文件和用户界面成分数据文件一起存储了定义为完成每次转变而要执行的任务和工作流步骤的序列的信息。然而,表示层和业务层都无需维护工作流步骤的静态编码置换、状态转变或静态GUI渲染。相反,业务层可将用户定制与错误处置隔离开、将EUC系统的工作列表任务和工作流步骤与用户界面成分数据文件和用户界面规则文件隔离开。
工作流管理器,在错误处置子系统的配合下,产生用户恢复任务和GUI渲染以辅助用户应对错误或需要用户交互的情况,最终导致激活IP多媒体服务。恢复任务的实例可包括,在完成前一个任务或前多个任务之后,用户在他所接收到的WUI中输入代码。用户界面成分数据文件和用户界面规则文件定义了以下方面:可视数据的集合;能修改的数据的集合;对用于构成用户界面(GUI渲染)的数据所应用的名字的集合;和转变状态。用户界面成分数据和用户界面规则文件可以被修改,以定制动态用户界面的错误处置和任务列表特征,而无需在表现层、业务层或整合层编程或开发其他组件。
此外,尽管将要描述带有动态用户界面的终端用户控制配置(EUC)系统的具体组件,但是与该系统一致的制造方法、系统和制品可包括其他的或不同的组件。例如,处理器可被实现为微处理器、微控制器、专用集成电路(ASIC)、离散逻辑,或电路或逻辑的其他类型的组合。类似地,存储器可以是DRAM、SRAM、闪存或其他类型的存储器。实施处理的逻辑和以下描述的程序可(例如,作为计算机可执行指令)存储在诸如光盘或磁盘或其他存储器等的计算机可读介质上。可替代地或者附加地,逻辑可以被实现在能在实体间传输的电磁信号或光学信号中。标记、数据、数据库、表格和其他数据结构可分开存储和管理,也可合并到单个存储器或数据库中,可分布存储,也可在逻辑上和物理上以多种不同的方式来组织。程序可以是单个程序的各部分、多个独立的程序、也可以分布在几个存储器和处理器上。此外,程序或程序的任何部分可以更换为用硬件来实现。
图1示出了带有动态用户界面的终端用户控制配置(EUC)系统102。EUC系统102包括耦合到通信接口106的处理器单元104、存储器108和数据库110。EUC系统102可通过与错误处置子系统112进行通信的通信接口106来接收用户对规定服务和管理错误的请求。错误处置子系统112包括能对工作流处理错误做出响应的错误处置引擎114。错误处置引擎114确定与一个或多个恢复任务118相关联的状态转变116,其中恢复任务118可能需要在EUC系统102能继续尝试完成请求或工作订单以前完成。工作流管理器120从先前完成的恢复任务118或工作流156中识别出状态转变116。EUC系统102使用状态转变信息来创建工作流步骤的动态序列,并最终产生动态GUI渲染144。工作流步骤156包括一个或多个状态转变116。EUC系统存储器108可包括工作流管理器120,该工作流管理器120从错误消息队列124中提取工作流处理错误,从服务配置管理器128中获得用于规定任务的服务配置信息126,分析服务配置信息126和工作流处理错误,并生成用户界面成分数据文件146,该用户界面成分数据文件146指定与终端用户完成的恢复任务118相关联的状态转变116。
通信接口106接收并发送例如用户对规定服务的请求,并可直接连接到诸如互联网等的网络128。通信接口106可包括键盘、鼠标、或任何其他通信接口装置。在一种实施方式中,EUC系统102能够经由通信接口106与订单管理系统130、外部系统132(即,也称为网络元素或传送被规定的服务的系统)和远程用户设备134(例如,通过用户界面渲染接收器135)进行通信。
EUC系统102可包括动态GUI渲染程序136,动态GUI渲染程序136提取用户界面成分数据138和用户界面规则数据140,并将该信息存储到存储器108中,其中用户界面成分数据138指定状态转变116。用户界面成分数据138和用户界面规则文件142可包括定义为了完成状态转变116而要执行的恢复任务118的信息,以及状态转变116的开始点和结束点。动态GUI渲染程序136可基于用户界面成分数据138和用户界面规则140产生GUI渲染144,其中用户界面规则140是在用户界面规则文件142中被识别出的应用到用户界面成分数据138中被识别出的用户界面成分数据上的用户界面规则。用户界面成分数据文件146或用户界面规则文件142,或这两个文件也可建立GUI渲染的可视数据148、能修改的数据150和用于构成GUI渲染144的数据名字152。用户界面成分数据文件138或用户界面规则文件142,或这两个文件也可建立起GUI渲染144的用户界面成分数据138和状态转变116。
动态GUI渲染程序136可通过执行用户界面规则文件142中指定的成分数据转换154来产生GUI渲染144。成分数据转换154可导致基于用户界面成分数据文件146中指定的原始用户界面元素产生修改后的用户界面元素。换言之,无论何时发生需要用户交互才能完成状态转变116的错误,用户界面规则文件142中识别出的成分数据转换154都可以被应用到用户界面成分数据文件146中被识别出的用户界面成分数据138上。
图2示出了EUC系统102的各逻辑层。EUC系统102包括用于管理用户交互的表示层200、用于管理业务逻辑的业务层210,和用于部署和管理网络业务的整合层220。EUC系统102也采用服务总线230,服务总线230提供各逻辑层之间的双向通信。表示层200管理用户交互,并包括Web用户界面(WUI)201;用户认证202;和用户授权203。表示层的组件可以在不使用服务总线230的情况下互相直接进行通信。表示层各组件与业务层各组件之间的通信可以通过服务总线230来进行。
EUC系统102使用WUI 201来与用户相交互,例如,通过一组用户界面屏幕,诸如,网页。用户与EUC系统102之间的交互是通过WUI 201来进行的。WUI 201可利用JPF(Java页面流)和JSP(Java服务器页面)。WUI 201的JPF定义了可在用户通过一个特定页面或多个特定页面上的一系列域进行的用户导航期间执行的一组动作。每个WUI JPF动作链接到创建form bean的超文本标记语言(html)form,该form bean存储用于处理动作的信息。例如,该动作可验证用户输入的语义和句法,或对业务层组件发出请求。最后,WUI 201使WUI JPF动作的结果可视化。WUI 201直接与其他表示层组件通信而不使用服务总线230。尽管WUI 201可包含特定逻辑的表示,但WUI 201通过与表示管理器212进行通信来访问业务层210上的业务逻辑。WUI 201通过同步Web服务(例如,基于SOAP/http——简单对象访问协议和超文本传输协议)与业务层210相通信,但WUI 201使用同步通信来处理服务逻辑和管理服务。因此,业务层210接收作为工作订单147的服务激活请求。
用户授权203组件基于通过表示管理器212和/或用户配置文件管理器214从业务层210取得的用户配置文件信息来授权对服务或资源的访问。EUC系统102在本地高速缓存用户配置文件信息。用户授权203组件通过直接web服务呼叫而直接与WUI 201通信。用户授权202组件基于业务层210处的用户配置文件数据库中存储的用户配置文件信息来认证用户。用户认证202组件也利用直接Java呼叫来与WUI 201通信。
业务层210包含激活和管理业务所需的业务逻辑和处理。业务层210管理来自用户的请求、外部客户关系管理(CRM)系统、用户配置文件数据库和服务配置,以及用户访问逻辑。业务层210包括:工作流管理器120;表示管理器212;服务配置管理器213;用户配置文件管理器214;和订单管理器215。业务层210在服务总线230上公布其服务并通过服务总线230与表示层200和整合层220通信。服务总线230可管理各业务层组件之间的同步和异步通信。可替代地或追加地,业务层组件可利用对于私人的直接JAVA呼叫、同步服务和交互来与彼此相通信。业务层组件也可通过服务总线230同步地与表示层组件通信。根据适配器222、网络元素226和通信的性质,业务层210同步或异步地与整合层220通信。服务总线230管理在业务层210和整合层220之间进行通信期间发生的超时和重试。网络元素226可向用户传送被规定的服务无限阵列(例如,即时通讯、随选录音和重放、应用共享、音频会议和视频会议,和其他增值服务)。
工作流管理器120管理业务层210处理,该处理实现网络元素226支持的网络服务。工作流管理器120利用以下步骤生成GUI渲染144:提取用户界面规则文件142;提取用户界面成分数据138;识别状态转换116;生成任务列表160;和生成GUI渲染144并显示任务列表160。工作流管理器120可控制位于业务层210中的错误处置引擎114和错误消息队列124。错误消息队列124可存储表示层200、业务层210和整合层220中的两个组件之间或多个组件之间进行通信期间所发生的异常情况而引起的错误消息。工作流管理器120可包括业务逻辑类(例如,JAVA类)和相应处理。EUC系统102可在逻辑上将业务逻辑类和相应处理当作物理上存在于不同系统的独立应用上的单个组件。工作流管理器120可通过整合层220与网络元素226(例如,提供被规定的网络服务的IP多媒体系统)通信。工作流管理器120可接收来自表示管理器212和订单管理器215的工作订单提交。工作流管理器120可使用来自服务配置管理器213和用户配置文件管理器214的信息,来确定要激活、或启用或禁用的处理和工作流步骤,以便完成工作订单147。工作流管理器120可在业务层的处理执行的同时更新工作订单147,并在数据库145上存储工作订单147。工作流管理器120可在服务总线230上公布异步界面,以允许WUI 201和订单管理器215提交工作订单147。工作流管理器120也可公布其他业务层组件专用的同步界面,以提取和更新工作订单信息。业务层处理可通过服务总线230与整合层组件通信。表1示出了工作流管理器120可从表示管理器212和订单管理器215接收到的示例性工作订单xml文件。
表1-work order.xml |
<?xml version=″1.0″?>- <xml-fragment xmlns:wor=″http://xyz.abc.it/schemas/workOrder″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″>-<wor:header><wor:olld>1003</wor:olld><wor:statusld>160</wor:statusld><wor:physicalSiteld>3</wor:physicalSiteld><wor:instanceld>[]:127.0.0.1-418e21b.1109ca490e1.-7c31-gend</wor:instanceld><wor:taskld>127.0.0.1-418e21b.1109ca490e1.-7c49</wor:taskld><wor:timestamp>2007-02-08T15:24:38.000+01:00</wor:timestamp><wor:endDate>2007-02-08T16:33:47.510+01:00</wor:endDate><wor:workFlowName>addlpPbx</wor:workFlowName><wor:tsys>30</wor:tsys><wor:rsys>30</wor:rsys><wor:entityType>entity</wor:entityType><wor:functionType>M</wor:functionType> |
<wor:olAggregate>aggr</wor:olAggregate><wor:olTypeld>addlpPbx</wor:olTypeld><wor:messageType>01</wor:messageType><wor:idWorkFlow>id_flow1</wor:idWorkFlow><wor:olOrder>Ordinativo092374</wor:olOrder><wor:nroltem/><wor:operationType>01</wor:operationType></wor:header>-<wor:orderlnfo><wor:tguPhSite>30</wor:tguPhSite><wor:tgulBS>30</wor:tgulBS><wor:tiPhSite>30</wor:tiPhSite><wor:idSiebelSede>s</wor:idSiebelSede><wor:mnemPhSite>s</wor:mnemPhSite><wor:masterVolP>Y</wor:masterVolP><wor:tguSedeMaster/><wor:siteldCRM>30</wor:siteldCRM><wor:vendor>Vendor ABC</wor:vendor><wor:escapeCodeLocal>301</wor:escapeCodeLocal><wor:escapeCodeOffNet>302</wor:escapeCodeOffNet><wor:escapeCodeOnNet>303</wor:escapeCodeOnNet><wor:reservedDerNum>1</wor:reservedDerNum><wor:numGNR>1</wor:numGNR><wor:singleLineNum>0</wor:singleLineNum></wor:orderlnfo>-<wor:customer><wor:customerld>30563</wor:customerld><wor:corporateName>CORPORATION ABC</wor:corporateName></wor:customer>-<wor:physicalSite><wor:cfSede>0erererere03</wor:cfSede></wor:physicalSite>-<wor:physicalSite><wor:physicalSiteld>3</wor:physicalSiteld><wor:physicalSiteType>Y</wor:physicalSiteType><wor:ragioneSociale>Ph Site 30</wor:ragioneSociale><wor:cfSede>0030303</wor:cfSede><wor:physicalSiteName>30</wor:physicalSiteName><wor:addressLocalita>Rieti</wor:addressLocalita> |
<wor:addressIndirizzo>via Garibaldi</wor:addressIndirizzo><wor:addressCivico>234</wor:addressCivico><wor:addressCap>02300</wor:addressCap><wor:addressProvincia>Rieti</wor:addressProvincia><wor:siglaProvincia>RI</wor:siglaProvincia><wor:trNome>Name1</wor:trNome><wor:trCognome>Name2</wor:trCognome><wor:trTelefono/><wor:trCellulare/><wor:trMail>name1.name2@companyabc.it</wor:trMail><wor:trFax/><wor:trIndirizzo/><wor:trLocalita/><wor:trProvincia/><wor:trCap/><wor:interoperabilita>No</wor:interoperabilita><wor:administrativeZone>C1</wor:administrativeZone><wor:additionallnfo/><wor:codUtSede>303</wor:codUtSede><wor:tguSedeMaster/><wor:siteldCRM>30</wor:siteldCRM><wor:tguPhSite>30</wor:tguPhSite><wor:cmmSite>site_oxe</wor:cmmSite></wor:physicalSite>-<wor:logicalSite><wor:logicalSiteld>1001</wor:logicalSiteld><wor:type>GNR</wor:type><wor:name>30092374</wor:name><wor:siteld>32</wor:siteld><wor:publiclpAddress>10.10.10.10</wor:publiclpAddress><wor:mandatoryCos>AII-Mobile</wor:mandatoryCos><wor:districtCode>030</wor:districtCode><wor:districtName>Roma</wor:districtName><wor:sessionDirectorld>1</wor:sessionDirectorld><wor:northlf>1</wor:northlf><wor:qsig>1</wor:qsig><wor:nonQsig>1</wor:nonQsig><wor:additionallnfo/><wor:rangeSize>4</wor:rangeSize> |
<wor:firstExDirNumber>0923740001</wor:firstE×DirNumber><wor:firstIntDirNumber>0001</wor:firstIntDirNumber></wor:logicalSite>-<wor:ipPbx><wor:ipPbxld>1000</wor:ipPbxld><wor:ipPbxType xsi:nil=″true″/><wor:location>30</wor:location><wor:vendor>Vendor ABC</wor:vendor><wor:model>Vendor ABC Uno Model</wor:model><wor:publiclpAddress>10.10.10.10</wor:publiclpAddress><wor:hostName>Hostname</wor:hostName><wor:ipAddressVlanCustomer>10.10.10.10</wor:ipAddressVlanCustomer><wor:operatingSystem>Unix</wor:operatingSystem><wor:numberlnventory>10</wor:numberlnventory><wor:serialNumber>1234</wor:serialNumber><wor:release>1</wor:release><wor:description/><wor:additionallnfo/><wor:nodeNumber>1</wor:nodeNumber><wor:network>1</wor:network><wor:subnetwork>1</wor:subnetwork><wor:nodeName>Node=1</wor:nodeName><wor:networkName>Network=1</wor:networkName><wor:subnetworkName>Subnetwork=1</wor:subnetworkName><wor:profileDirectoryNumber>1234567</wor:profileDirectoryNumber><wor:auxiliaryServerFramework>FWABC</wor:auxiliaryServerFramework><wor:auxiliaryServerOv4760>ABC AuxSrv</wor:auxiliaryServerOv4760></wor:ipPbx>-<wor:ftpConfig><wor:ftpUsername>user</wor:ftpUsername><wor:ftpPassword>password</wor:ftpPassword><wor:snmpRead>prova</wor:snmpRead><wor:snmpWrite>prova</wor:snmpWrite><wor:snmpReadConfirm>prova</wor:snmpReadConfirm><wor:snmpWriteConfirm>prova</wor:snmpWriteConfirm></wor:ftpConfig>-<wor:gnrs><wor:gnrld>1001</wor:gnrld><wor:serviceTypeGNR>90</wor:serviceTypeGNR> |
<wor:gnrDistrict>030</wor:gnrDistrict><wor:gnrPhone>092374</wor:gnrPhone><wor:reservedDerNum>1000</wor:reservedDerNum><wor:cac>30</wor:cac><wor:siteldLogico>30</wor:siteldLogico><wor:lowerBound>3000</wor:lowerBound><wor:upperBound>3030</wor:upperBound><wor:numCanaliQSIG>30</wor:numCanaliQSIG><wor:localArea>area30</wor:localArea><wor:routingNumber/><wor:tnui>301</wor:tnui><wor:cnui>302</wor:cnui><wor:pbsts>pbsts</wor:pbsts><wor:domainld>600</wor:domainld><wor:siteld>2</wor:siteld><wor:range>39092374XXXX</wor:range><wor:digit>4</wor:digit><wor:prefixTrahslate>6002XXXX</wor:prefixTranslate><wor:prefixPostTranslate>39092374</wor:prefi×PostTranslate><wor:tradLowerBound>0000</wor:tradLowerBound><wor:tradUpperBound>9999</wor:tradUpperBound>-<wor:msemlnfo><wor:msempAclld>300</wor:msempAclld><wor:imsspAclld>301</wor:imsspAclld><wor:moduloVTCH1pi>304</wor:moduloVTCH1pi><wor:portaVTCH1pi>305</wor:portaVTCH1pi><wor:moduloVTCH2pi>306</wor:moduloVTCH2pi><wor:portaVTCH2pi>307</wor:portaVTCH2pi></wor:msemlnfo>-<wor:msemlnfo><wor:msempAclld>302</wor:msempAclld><wor:imsspAclld>303</wor:imsspAclld><wor:moduloVTCH1pi>308</wor:moduloVTCH1pi><wor:portaVTCH1pi>309</wor:portaVTCH1pi><wor:moduloVTCH2pi>300</wor:moduloVTCH2pi><wor:portaVTCH2pi>301</wor:portaVTCH2pi></wor:msemlnfo></wor:gnrs>-<wor:ipVoip> |
<wor:nameSD>s</wor:nameSD><wor:ipAddressSD>s</wor:ipAddressSD><wor:subnetSD>s</wor:subnetSD><wor:ipAddressDHCP>s</wor:ipAddressDHCP><wor:subnetDHCP>s</wor:subnetDHCP><wor:ipAddressCMM>s</wor:ipAddressCMM><wor:subnetCMM>s</wor:subnetCMM><wor:numServerCMM>89</wor:numServerCMM><wor:ipLan Network>s</wor:ipLan Network><wor:codelPCX>s</wor:codelPCX><wor:ipLanSubnetMask>s</wor:ipLanSubnetMask></wor:ipVoip>-<wor:option><wor:optionType>s</wor:optionType><wor:optionValue>s</wor:optionValue></wor:option></xml-fragment> |
表示管理器212可管理来自表示层组件的请求,或直接响应每个请求,或调用其他业务层组件,来完成每个请求。服务配置管理器213可管理服务配置和一致性信息。工作流管理器120可调用服务配置管理器213来提取用于识别要激活的工作流的信息、所需的网络元素226和服务特定参数,和更新数据库145上的服务一致性信息。用户配置文件管理器214可管理EUC管理员的应用配置文件和终端用户服务配置文件,对内部用户的配置文件和服务配置文件数据库的访问,并可以与负责进行用户识别和访问管理的网络元素226进行通信。订单管理器215可管理与一个或多个网络元素226(即,规定的网络元素)进行的通信。工作流管理器120可在已经与订单管理器215进行交互并已经验证每个工作订单147后,将工作订单147发送给一个或多个规定的网络元素226。
整合层220可以管理业务层组件与网络元素226之间的通信。整合层220可使用适配器222(即,web服务)来与网络元素226进行通信,以便规定和管理服务。每个网络元素226通过专用的适配器与整合层220通信。每个适配器22可处理来自业务层210的多个同时请求和单个请求,或者另一适配器可使适配器222向相应的网络元素226转发多个请求。例如,在业务层210通过服务总线230向网络元素228请求服务的情况下,适配器224可向网络元素228转发多个请求以完成业务层210请求。每个适配器222可在服务总线230上公布其界面(即,服务),并可经由回调(call-back)接口进行同步或异步通信。适配器222使用被设计成隐藏外部系统复杂性的基于文档的接口(XML文件)。业务层210和位于整合层220的适配器222基于SOAP/http和XML进行通信。每个适配器222接收来自业务层组件的请求;将请求(基于XML的)转换成适合相应外部系统的一组请求;呼叫外部系统的API(应用程序界面)并等待响应;聚集在处理XML文档(请求)的同时所取得的信息;并将结果返回给业务层210。在同步通信期间,适配器222向初始web服务呼叫返回http响应形式的结果。在异步通信期间,适配器222经由对专用Web服务的回调,将结果返回给业务层210。在异步通信期间,适配器222对于有效业务层210请求向业务层210返回即时肯定应答,或者在EUC系统102不能处理请求的情况下(例如,无效请求、输入队列已满、外部系统无效消息,或外部系统错误消息),返回错误消息。
服务总线230可管理表示层200、业务层210和整合层220之间的通信。服务总线230隐藏起管理和规定网络服务的复杂性,有助于将每层组件的开发和测试隔离起来,从而改善了服务部署时间和服务水平。服务总线230可提供协议切换、内容路由和消息变换功能。服务总线230可同步(SOAP/http)或异步(JMS)地管理各业务层组件之间的通信。服务总线230可管理在业务层210和整合层220之间进行通信期间发生的超时和重试,以及从整合层220到业务层210的回调。当从业务层组件到适配器222的请求(呼叫)超时,同时还在等待来自适配器222的肯定应答时,服务总线230可将请求(呼叫)自动重发一定次数,该次数是可配置的。当从适配器222到业务层210的异步响应(回调)超时的时候,适配器222可自动向业务层210重发响应一定次数,该次数是可配置的。适配器222还管理在与网络元素226进行通信的同时发生的超时和重试,可配置的次数。
图3示出了逻辑层之间的交互。当管理层组件之一激活请求(动作305)时,表示管理器212接收请求(动作310),并可以直接对请求作出响应(动作315)或将请求转发给工作流管理器120。如果表示管理器212直接对请求作出响应,则表示管理器212可向表示层组件返回响应(动作360)。在表示管理器212将请求转发给工作流管理器120(动作320)的情况下,工作流管理器120从服务配置管理器213取出服务配置信息(动作325),并从用户配置文件管理器214取出用户配置文件信息(动作330)。工作流管理器120可使用来自服务配置管理器213和用户配置文件管理器214的信息,来确定要激活、或启用或禁用的处理和工作流步骤(动作335),以完成请求。
在工作流管理器120没有识别出要在完成请求以前完成的恢复任务118(动作340)的情况下,则工作流管理器120可以将工作订单147转发给订单管理器215(动作345)。订单管理器215可处理从工作流管理器120接收到的工作订单147,并且工作流管理器与一个或多个网络元素226通信,以激活所请求的服务(动作350)。在工作流管理器120识别出可能需要在完成请求以前完成的恢复任务118(动作340)的情况下,则工作量管理器120可以启动动态GUI渲染程序136的执行(动作355)。当动态GUI渲染程序136完成了GUI渲染144的生成时,动态GUI渲染程序136将GUI渲染144转发给表示管理器212(动作356)。在GUI渲染144在WUI 201中被表示出来的情况下,表示管理器212将GUI渲染144返回给表示层组件(动作360)。
图4示出了错误处置处理流程图。当工作流管理器120接收到请求(动作410)时,工作流管理器从服务配置管理器213中取出服务配置信息,并从用户配置文件管理器214中取出用户配置文件信息,以确定是否会需要先完成恢复任务118才能完成激活服务或完成请求(动作415)。如果工作流管理器120确定在服务激活以前没有恢复任务需要完成,那么工作流管理器120完成服务激活和请求(动作420)。在工作流管理器120确定可能需要先完成恢复任务118才能完成请求时,则工作流管理器开始执行动态GUI渲染程序136(动作425)。动态GUI渲染程序136生成任务列表和GUI渲染144,并将这两者都传送给表现管理器212,表现管理器212将结果返回给表现层(动作430)。
图5示出了动态GUI渲染程序可采用的用来动态生成GUI渲染的动作。用户界面成分数据文件138和用户界面规则文件142可存储定义了为完成状态转变116而要执行的任务和工作流步骤的序列以及转变的起始点和终止点的信息。因此,表示层200和工作流管理器120都不需要维护每一个可能存在的工作流步骤序列和每个可能存在的静态GUI渲染144。业务层210可管理用户界面成分数据文件138和用户界面规则文件140,以配置状态转变116,并产生动态GUI渲染144。对错误处置和恢复任务118的定制可以与用户界面成分数据文件138和用户界面规则文件140隔离起来。当工作流管理器开始执行动态GUI渲染程序136时,动态GUI渲染程序136取出用户界面成分数据文件138(动作505)、用户界面规则文件140(动作510)和用户界面数据175(动作520)。动态GUI渲染程序136使用取出的数据来识别状态转变116(动作520),并生成恢复任务118(动作525)。然后,动态GUI渲染程序136生成动态GUI渲染144,并将二者都返回给表示层200(动作540)。
图6示出了用户界面成分数据文件146。在图6所示的实例中,用户界面成分数据文件146使用基于XML的结构,该基于XML的结构定义了用于渲染GUI渲染144的数据,并且用户界面成分数据文件146还包括orderworkflow元素613、ordertransition元素633和ordertask元素663。orderworkflow元素613可识别为了完成状态转变116而要执行的工作流,以及状态转变的开始点和终止点。ordertransition元素633可识别为了完成状态转变116而要执行的一个或多个任务。ordertask元素663可识别为了状态转变116而要执行的与ordertransition元素633相关联的一个或多个任务。
orderworkflow元素613可包括标签,该标签识别以下内容:要管理的服务订单或恢复任务,利用oltype标签615;状态转变的起始点,利用starttransition标签620;和基于starttransition标签620的待决任务或要完成的工作流的任务,和由transition标签625的action标签640指示的要执行的最新动作(即,状态转变116)。换言之,为了给定的服务订单(即,对规定服务或恢复任务的请求),可基于已完成的工作流步骤和状态转变来识别一个或多个工作流和状态转变,其中工作流步骤包括一个或多个状态转变,而状态转变包括一个或多个任务。orderworkflow元素613也能使用defaulttransition标签630来识别默认状态转变,其中starttransition标签620和action标签640的组合并不指示可替代的状态转变。
ordertransition元素633可进一步识别:transition标签625(即,状态转变116);利用statusin标签635来识别状态转变116的当前状态;为了经过statusin标签635所指示的状态而转变到statusout标签645被设置成“完成”的状态而要完成的任务;和指示要执行的最新动作的action标签640。ordertransition元素633可包括workloglevel标签650,该workloglevel标签650定义了是否要将一行代码、作为代码的数字值或其他信息存储到数据库中作为执行的操作或任务的日志(log)。ordertransition元素633还可包括:利用description标签655对状态转变116的描述;和利用task标签660来识别完成状态转变116所需的一个或多个任务。action标签640与statusin标签635的组合通过识别与状态转变116相关联的已完成的任务或可替代地通过识别未完成的任务,来确定状态转变116。ordertransition元素633也利用多个task标签660来指定状态转换是否包括多个任务。
ordertask元素663还定义了由ordertransition元素633的task标签660标识的任务,并且包括用于识别以下内容的标签:利用tasktype标签675来识别任务类型,自动的或人工的;和利用taskaction标签680来识别与任务相关联的动作(例如,设置电子邮件地址或联系信息)。表2示出了插入用于系统EMX的新IP-PBX的taskaction标签的一个实例,系统可执行taskaction标签来完成对新IP-PBX的服务订单。
表2-taskaction标签 |
<task><id>0</id><olId>0</olId><type>AUTO</type><action>insertNewIP-Pbx</action><status>NEW</status><functionId>ord.centralino.add</functionId><worklistTaskId></worklistTaskId><system>EMX</system><flagBlocking>true</flagBlocking><errorCondition>false</errorCondition><additionalInfo>Automatic Pbx Insert</additionalInfo></task> |
图7示出了用户界面规则文件142。在错误发生后或在恢复任务118要求用户交互以完成状态转变116后,用户界面规则文件142中所识别出的错误专用的成分数据变换154可被应用到用户界面成分数据文件146中识别出的用户界面成分数据138上,以产生GUI渲染144。参考上文的表1,表1示出了工作订单147,该工作订单识别工作订单物理地点(即,xml-fragment/wor:physicalSite)和作为用户界面规则文件142应用成分数据变换154的对象的一些物理地点的属性。图7示出了成分数据变换154,其将与表1所示的工作订单147中识别的“xmlfragment/wor:physicalSite”相关的用户界面成分数据138的背景色设置成黄色并将字形设置成粗体。
在可替代实施方式中,表3示出了组合到一个XML中以简化开发、部署和维护的用户界面成分数据138和用户界面规则文件数据140。在该可替代实施方式中,表3中所示的组合的用户界面成分数据138和用户界面规则数据140文件可包括dinamicJspData元素,该dinamicJspData元素含有指示显示在GUI渲染144中的来自工作订单147的IP-PBX数据可由用户修改的规则。
表3-组合的用户界面成分数据138和用户界面规则文件数据140文件 |
<?xml version=″1.0″encoding=″UTF-8″?>-<orderWorkflow×mlns=″http://abc.xyz.it/schemas/orderStatusManager″xmlns:×si=″http://www.w3.org/2001/XMLSchema-instance″xsi:schemaLocation=″http://abc.xyz.it/schemas/orderStatusManagerOrderStatusManager.xsd″><olType>addIpPbx</olType>-<startTransition><statusIn>statusInStartTransition</statusIn><action>actionStartTransition</action><statusOut>20</statusOut><worklogLevel>0</worklogLevel><description>VALIDATO ORDINE RICEVUTO DA ATOM</description></startTransition>-<transition><statusIn>any</statusIn><action>gestioneEsplosioneDerivati</action><statusOut>50</statusOut><worklogLevel>0</worklogLevel><description>GESTIONE ESPLOSIONE DERIVATI</description>-<task><id>0</id><olId>0</olId><type>MANUAL</type><action>completataEsplosioneDerivati</action><status>NUOVO</status><functionId>ord.gnr.explosion</functionId><worklistTaskId/><system>EUC</system><flagBlocking>true</flagBlocking><errorCondition>false</errorCondition><additionalInfo>ESPLOSIONE ARCHI</additionalInfo></task></transition>-<transition><statusIn>any</statusIn><action>completataEsplosioneDerivati</action> |
<statusOut>60</statusOut><worklogLevel>0</worklogLevel><description>ESPLOSIONE DERIVATI COMPLETATA</description></transition>-<transition><statusIn>any</statusIn><action>gestioneCentralino</action><statusOut>70</statusOut><worklogLevel>0</worklogLevel><description>GESTIONE CENTRALINO</description>-<task><id>0</id><olId>0</olId><type>MANUAL</type><action>inserimentoCentralino</action><status>NUOVO</status><functionId>ord.switchboard.management</functionId><worklistTaskId/><system>EMX</system><flagBlocking>true</flagBlocking><errorCondition>false</errorCondition><additionalInfo>INSERIMENTO CENTRALINO</additionalInfo></task></transition>-<transition><statusIn>any</statusIn><action>preparazioneInterazioneConnettoreCmm</action><statusOut>80</statusOut><worklogLevel>0</worklog Level><description>PREPARAZIONE INTERAZIONE CMM</description></transition>-<transition><statusIn>any</statusIn><action>preparazioneInterazioneConnettoreEmx</action><statusOut>90</statusOut><worklogLevel>0</worklogLevel><description>PREPARAZIONE INTERAZIONE EMX</description></transition>-<transition> |
<statusIn>any</statusIn><action>centralinoCom pleto</action><statusOut>100</statusOut><worklogLevel>0</worklogLevel><description>CENTRALINO COMPLETO</description></transition>-<transition><statusIn>any</statusIn><action>gestioneUtenze</action><statusOut>110</statusOut><worklogLevel>0</worklogLevel><description>GESTIONE UTENZE</description>-<task><id>0</id><olId>0</olId><type>MANUAL</type><action>gestioneUtenzeInCorso</action><status>NUOVO</status><functionId>ord.line.management.multiple</functionId><worklistTaskId/><system>EUC</system><flagBlocking>true</flagBlocking><errorCondition>false</errorCondition><additionalInfo>GESTIONE UTENZE</additionalInfo></task></transition>-<transition><statusIn>any</statusIn><action>gestioneUtenzeInCorso</action><statusOut>120</statusOut><worklogLevel>0</worklogLevel><description>GESTIONE UTENZE IN CORSO</description></transition>-<transition><statusIn>any</statusIn><action>gestioneIssw</action><statusOut>64</statusOut><worklogLevel>0</worklogLevel><description>GESTIONE ISSW</description> |
-<task><id>0</id><olId>0</olId><type>MANUAL</type><action>gestioneIsswInCorso</action><status>NUOVO</status><functionId>ord.msem.management</functionId><worklistTaskId/><system>EUC</system><flagBlocking>true</flagBlocking><errorCondition>false</errorCondition><additionalInfo>GESTIONE ISSW</additionalInfo></task></transition>-<transition><statusIn>any</statusIn><action>gestioneIsswInCorso</action><statusOut>65</statusOut><worklogLevel>0</worklogLevel><description>GESTIONE ISSW IN CORSO</description></transition>-<transition><statusIn>any</statusIn><action>ordineCom pletato</action><statusOut>160</statusOut><worklogLevel>0</worklogLevel><description>ORDINE COMPLETATO</description></transition>-<transition><statusIn>any</statusIn><action>ordineAnnullato</action><statusOut>170</statusOut><worklogLevel>0</worklogLevel><description>ORDINE ANNULLATO</description></transition>-<transition><statusIn>any</statusIn><action>emxAddCustomerException</action><statusOut>*</statusOut> |
<worklogLevel>0</worklogLevel><description>RECUPERO ERRORI DOVUTI ALL′INTERAZIONE CON LAPIATTAFORMA EMX</description>-<task><id>0</id><olId>0</olId><type>MANUAL</type><action>gestioneEmxRespose</action><status>NUOVO</status><functionId>ord.exception.communication</functionId><worklistTaskId/><system>EMX</system><flagBlocking>true</flagBlocking><errorCondition>true</errorCondition><additionalInfo/>-<dinamicJspData>-<type><id>workOrder</id>-<section><id>CUSTOMER</id><changeable>true</changeable></section></type></dinamicJspData></task></transition>-<transition><statusIn>any</statusIn><action>emxAddIpPbxException</action><statusOut>*</statusOut><worklogLevel>0</worklogLevel><description>RECUPERO ERRORI DOVUTI ALL′INTERAZIONE CON LAPIATTAFORMA EMX</description>-<task><id>0</id><olId>0</olId><type>MANUAL</type><action>gestioneEmxRespose</action><status>NUOVO</status> |
<functionId>ord.exception.communication</functionId><worklistTaskId/><system>EMX</system><flagBlocking>true</flagBlocking><errorCondition>true</errorCondition><additionalInfo/>-<dinamicJspData>-<type><id>workOrder</id>-<section><id>IPPBX</id><changeable>true</changeable></section></type></dinamicJspData></task></transition>-<transition><statusIn>any</statusIn><action>emxAddPhysicalSiteException</action><statusOut>*</statusOut><worklogLevel>0</worklogLevel><description>RECUPERO ERRORI DOVUTI ALL′INTERAZIONE CON LAPIATTAFORMA EMX</description>-<task><id>0</id><olId>0</olId><type>MANUAL</type><action>gestioneEmxRespose</action><status>NUOVO</status><functionId>ord.exception.communication</functionId><worklistTaskId/><system>EMX</system><flagBlocking>true</flagBlocking><errorCondition>true</errorCondition><additionalInfo/></task></transition>-<transition> |
<statusIn>any</statusIn><action>emxAddLogicalSiteException</action><statusOut>*</statusOut><worklogLevel>0</worklogLevel><description>RECUPERO ERRORI DOVUTI ALL′INTERAZIONE CON LAPIATTAFORMA EMX</description>-<task><id>0</id><oiId>0</oiId><type>MANUAL</type><action>gestioneEmxRespose</action><status>NUOVO</status><functionId>ord.exception.communication</functionId><worklistTaskId/><system>EMX</system><flagBlocking>true</flagBlocking><errorCondition>true</errorCondition><additionalInfo/></task></transition>-<transition><statusIn>any</statusIn><action>gestioneEmxRespose</action><statusOut>*</statusOut><worklogLevel>0</worklogLevel><description>LA GESTIONE DEGLI ERRORI DOVUTI ALL′INTERAZIONECON LA PIATTAFORMA EMX E′STATA PORTATA A TERMINE</description></transition>-<defaultTransition><statusIn>any</statusIn><action>defaultTransition</action><statusOut>*</statusOut><worklog Level>0</worklog Level><description>QUESTA OPERAZIONE NON GENERA NESSUNEFFETTO</description></defaultTransition></orderWorkflow> |
图8示出了动态GUI渲染805。动态GUI渲染805可包括用于执行恢复错误的操作的界面元素(例如,跳过元素812、放弃(abort)元素814和重试元素816)。动态GUI渲染805可以是由于工作流管理器120更新工作订单147参数和状态信息并处理来自服务配置管理器213的信息以确定为了完成工作订单而要激活或启用或禁用的处理和工作流步骤而产生的。动态GUI渲染805可由于以下情况产生,即工作流管理器120在错误处置子系统112的配合下,生成用户任务列表160和GUI渲染(例如,动态GUI渲染A 810和动态GUI渲染B 820)以辅助用户解决错误或需要用户交互的情况,该情况最终会导致激活IP多媒体服务。工作流管理器120可在从服务配置管理器213中提取了大多数当前服务配置要求从而识别出状态转变116之后,产生带有任务列表160的动态GUI渲染A 810。整合层220处的配置改变(例如,在整合层220处实现的新的网络元素226,该网络元素226取代先前的网络元素并需要与先前网络元素不同的更少或更多的配置信息)可由工作流管理器120动态地实现,使得GUI渲染A 810动态地反应这种改变。
用户可从任务列表160中选择使工作流管理器120产生另一个GUI渲染(例如,动态GUI渲染B 820)的任务(例如,任务A),该另一个GUI渲染向用户呈现用于验证(例如,Srvc配置参数1-7)或定制(例如,输入域1-7)的服务配置参数。工作流管理器120可仅在确定了当前需要的服务配置信息126、规则、用户输入域、动作和状态转变116之后生成动态GUI渲染。例如,EUC系统102可通过需要用户自设服务的(这与请求服务激活的先前过程不同)新近整合的网络元素226来整合新的或可替代的网络服务。尽管一个或多个不同或全新的工作流、任务或服务配置参数需要用户交互,但GUI渲染144会进行自适应,而不需要在表示层200处进行编程改变。表示层200和工作流管理器120不需要维护每个可能存在的工作流步骤序列、任务列表160和每个可能的GUI渲染。EUC系统102可向用户呈现新的网络服务,同时使开发与整合层220相隔离并向用户完全隐藏网络的复杂性。
图9示出了服务总线层分离。服务总线230可管理表示层200、业务层210和整合层220之间的通信。服务总线230隐藏管理和规定网络元素226的复杂性,便于隔离每一层的组件的开发和测试,从而改善了部署时间和服务水平。服务总线230可利用多个可配置的代理服务905-935和相应的业务服务955-985来提供协议切换、内容路由和消息变换功能。服务总线230可或者同步(SOAP/http)或者异步(JMS)地使用代理服务905-935和相应的业务服务955-985来管理业务层组件。
服务总线可基于标准web服务来模拟整合层适配器。服务总线可采用接柱适配器(stub adapter)(模拟器代理服务)来帮助开发业务逻辑,并在完成开发时用产品适配器来取代接柱适配器,从而隔离了对服务总线配置的影响。因此,EUC系统102可在成功地完成整合测试后配置用于呼叫操作适配器(实际的外部系统,即,网络元素)的服务总线,而不必修改业务层的组件,且不必修改整合层的实际适配器。
服务总线230也可管理在业务层210与整合层220之间进行通信期间发生的超时和重试,以及从整合层220到业务层210的回调。当在等待来自适配器222的肯定应答的同时从业务层组件到适配器222的请求(呼叫)超时的时候,服务总线230可将请求(呼叫)自动重发一定次数,该次数是可配置的。当从适配器222到业务层210的异步响应(回调)超时时,服务总线230可向业务层210自动重发响应一定次数,该次数是可配置的。服务总线230还管理在与网络元素226进行通信的同时发生的可配置的次数的超时和重试。
图10示出了服务总线流程图。当表示层组件、业务层组件或整合层组件呼叫代理服务905-935的其中一个时(动作1005),代理服务可以至少两种可配置模式的其中一种模式来操作,即,标准代理或模拟代理。如果标准代理服务接收到请求(动作1015),那么代理服务可将输入的请求送到相应业务服务(动作1015),该业务服务接收请求并将请求转发给最终地址(动作1020)。如果模拟代理服务接收到请求,则该代理服务可向正在呼叫的层返回响应,而不与相应业务服务交互(动作1097)。
EUC系统102和远程用户装置134可包括常规计算环境形式的通用计算设备(例如,个人计算机、膝上型电脑、移动设备或个人数字助理),包括处理单元、系统存储器和将包括系统存储器的各种系统组件连接到处理单元的系统总线。处理单元可通过访问系统存储器执行算术、逻辑和控制操作。系统存储器可存储与处理单元一起使用的信息和指令。系统存储器可包括易失性和非易失性存储器,诸如随机存取存储器(RAM)和只读存储器(ROM)。包含了在如启动期间帮助在个人电脑内的各个组件之间传输信息的基本例程的基本输入/输出系统(BIOS)可储存在ROM中。系统总线可以是包括存储器总线或存储器控制器、外围总线和本地总线的几种总线结构中的任意类型,可使用多种总线架构中的任意类型。
带有动态用户界面102和远程用户装置134的终端用户控制配置(EUC)系统可进一步包括用于对硬盘进行读写的硬盘驱动,和用于对可移动磁盘进行读写的外部磁盘驱动。可移动磁盘可以是用于磁盘驱动的磁盘,也可以是用于光盘驱动的例如CD ROM等光盘。硬盘驱动和外部磁盘驱动分别通过硬盘驱动接口和外部磁盘驱动接口连接到系统总线。这些驱动和与它们相关联的计算机可读介质提供了对计算机可读指令、数据结构、程序模块和个人电脑的其他数据的非易失性存储。相关数据可组织在数据库中,例如,在关联的或目标数据库中。
本领域技术人员应理解,这里描述的计算环境可包括任何类型的能够存储计算机可存取的数据的计算机可读介质,诸如,盒式磁带(magnetic cassette)、闪存卡、数字视频光盘、随机存取存储器、只读存储器等,并且这里描述的计算环境还可用在示例性计算环境中。
多个程序模块可存储在硬盘、外部磁盘、ROM或RAM中,包括操作系统、一个或多个应用程序、其他程序模块和程序数据。应用程序可包括图1至10中所示的功能的至少一部分。
如上所述,用户可通过诸如键盘和鼠标等的输入设备将命令和信息输入到图形用户界面(GUI)120中。其他输入设备可包括麦克风(或其他传感器)、操纵杆、游戏机手柄、扫描仪等。这些和其他输入设备可通过连接到系统总线的串行端口接口连接到处理单元104,或者可通过诸如并行端口接口、诸如调制解调器等的无线通信设备、游戏端口或通用串行总线(USB)等其他接口来连接。进一步,可以使用打印机来打印信息。打印机和其他并行输入/输出装置可通过并行端口接口连接到处理单元。接口还将监视器或其他类型的显示装置连接到系统总线,诸如,视频输入/输出。除了监视器外,计算环境可包括其他外围输出设备,诸如,扬声器或其他音频或视频输出。
计算环境可与诸如计算机、电话、个人数字助理、电视等其他有线或无线的电子设备进行通信。为了进行通信,计算机环境可利用与一个或多个电子设备的连接,在联网环境中进行操作。计算机环境也可与远程计算机联网。远程计算机可以是诸如服务器、路由器、网络PC、对等设备(peer device)或其他公共网络节点等的另一计算环境,并可包括以上相对计算环境描述的元素中的一些或全部元素。逻辑连接可包括局域网(LAN)或广域网(WAN)。这种联网环境在办公室、企业内部的计算机网络、内部网和互联网中是非常普遍的。本文所例示的网络连接仅仅作为实例,并可以使用用于建立各电子设备之间的通信链接的其他逻辑。上述计算系统仅仅是可用于实现EUC系统102的计算系统的一个实例。
本文已经描述了多种实施方式。然而,应理解,可实现各种变形例而不会脱离本发明的精神和保护范围。因此,其他实施方式也包括在本发明的权利要求的保护范围之内。