专利名称:在自助式金融交易终端上获得设备服务的方法和系统的利记博彩app
技术领域:
本发明涉及自助式金融交易终端领域,例如自动出纳机(ATM),具体地说,涉及用服务提供程序框架对ATM进行设备服务的方法和系统。
通常,一个金融机构,比方说一个银行,除了它可能从许多ATM销售商那里购买的ATM硬件和软件以外,都要开发它自己的专有ATM硬件和软件。采用其它制造商的系统可能非常困难,例如接口和重新利用现有的应用程序资源非常困难。ATM包括特殊的装置,比方说自动付款机、读卡机和打印机,它们需要特殊的接口用于控制应用程序。在以前,硬件制造商的接口都是专用的,人们开发了金融业务的视窗开放式业务体系结构扩展(WOSA/XFS),为特殊ATM外围设备的应用程序控制规定一个标准。
上述术语WOSA/XFS规定了一个与上述应用程序例如ATM应用程序的接口的标准,利用这个接口标准,可以获得设备服务(deviceservice),比方说让自动付款机吐出现金或者读取顾客交易卡上的数据。利用这一WOSA/XFS标准,应用程序和后端服务通过视窗环境下应用程序程序接口(API)和服务提供程序接口(SPI)的统一集(unified set)相连接。这样,应用程序只需要知道WOSA接口,而不必知道采用了各种服务。金融机构开发它自己的WOSA/XFS兼容软件可以保证金融机构的软件可以移植到多个销售商提供的ATM上去。
本发明的一个特点和优点是提供一种方法和系统,用于获得ATM设备服务,这种方法和系统允许金融机构让它的应用程序需要多个销售商的ATM机器上的设备服务,同时也需要它自己的ATM机器上的设备服务。
本发明的另一个特点和优点是提供一种方法和系统,用于获得ATM设备服务,这种方法和系统允许金融机构的服务提供程序开发商只关心特定设备的代码专用和设备专用代码。
本发明的再一个特点和优点是提供了一种方法和系统,用于获得ATM设备服务,这种方法和系统允许金融机构用金融机构的源代码在内部及时地开发服务提供程序,并使它处于金融机构的适当控制之下。
为了上述特点、优点和目的,以及其它的特点、优点和目的,本发明的一个实施方案利用XFS兼容服务提供程序来允许金融机构,比方说一个银行,在建造它的ATM系统的时候,让它的应用程序需要多个销售商的ATM机器,以及它自己的ATM机器上的设备服务,从而在某一销售商的平台上获得的设备服务跟在它自己的平台上获得的设备服务是相同的。本发明一个实施方案的方法和系统提供所有共同的处理,在开发服务提供程序的时候,这种处理对于每一个服务提供程序来说都是共同的,并允许服务提供程序开发商只关心某一设备的代码专用和设备专用代码。这样,可以利用金融机构的源代码及时地在内部开发服务提供程序,并让它处于金融机构的适当控制之下。
本发明的一个实施方案利用服务提供程序框架,其中的数据被ATM应用程序收到,例如一个顾客在ATM触摸屏上做出选择,告诉ATM应用程序需要完成ATM设备功能,比方说存款功能、打印机功能、读卡机功能、安全门功能、自动付款机功能或者触摸屏功能。ATM应用程序对中心ATM监视和管理应用程序软件的一个较低层进行子程序调用,这叫做一个WFS请求,向一个服务提供程序请求获得设备服务。在较低层这一子程序调用被一个XFS管理程序转换成功能分类请求,这个请求叫做一个WFP请求,作为到服务提供程序的入口点供服务提供程序进行处理。功能分类请求的选择包括,例如,一个WFPCancelAsyncRequest请求、一个WFPClose请求、一个WFPDeregister请求、一个WFPExecute请求、一个WFPGetInfo请求、一个WPFLock请求、一个WFPOpen请求、一个WFPRegister请求、一个WFPSetTraceLevel请求、一个WFPUnloadService请求和一个WFPUnlock。处理完这一请求以后,服务提供程序返回一个结果给ATM应用程序。
在本发明的一个实施方案里,ATM应用程序接收用于表示需要获得跟一个ATM设备有关的ATM设备服务的数据,比方说一个存款机、一个打印机、一个读卡机、一个安全门、一个自动付款机和/或一个触摸屏。ATM应用程序通过对XFS管理程序进行子程序调用,发出一个请求给XFS管理程序,以获得ATM设备服务,以此从服务提供程序获得ATM设备服务。XFS管理程序将这一子程序调用转换成到这一服务提供程序的入口点,供服务提供程序进行处理,启动跟这一请求有关的请求对象。通过启动服务提供程序框架XFS服务提供程序基类(base class)的一个实例以及需要用来处理这一请求的服务提供程序框架请求对象的一个或者多个实例来实现服务提供程序。
本发明一个实施方案的服务提供程序启动服务提供程序的服务提供程序请求对象的一个具体实例,它是从XFS服务提供程序基类服务提供程序请求对象类层次获得的。在其中进行服务提供程序处理的基本单元是请求对象,为11个WFP请求定义了一个请求对象,包括一个SpiRequest类、一个SpiAsyncRequest类、一个请求专用类,比方说OpenRequest或者执行请求,以及可以选择地,一个服务提供程序专用请求类,其中的一个是从另一个导出的。发出WFP请求的时候,服务提供程序框架通过类继承调用服务提供程序的导出对象中的虚方法,从而允许服务提供程序进行特定ATM设备服务独有的处理。
本发明一个实施方案的WFP请求分成两部分处理,第一部分叫做立即处理部分,第二部分叫做延迟处理部分。立即处理是在XFS管理程序调用服务提供程序入口点的时候使用的同一个线程中处理的。服务提供程序在它的立即处理方法中核实参数。如果没有发现任何错误,服务提供程序框架就在服务提供程序的导出类中调用spImmediateProcessing()方法。在这一点上,服务提供程序可以更具体,尽管不全面,地核实参数。spImmediateProcessing()方法返回代码被返回给XFS管理程序。如果服务提供程序还没有调用spImmediateProcessing()方法,这一服务提供程序框架就决定将哪一个代码返回给这个XFS管理程序。
如果本发明一个实施方案的服务提供程序还没有调用这个spImmediateProcessing()方法,就公布请求完成事件。它的例外包括WFPCancelAsyncRequest、WFPSetTraceLevel、WFPUnload请求,它们是过程立即请求,没有任何延迟处理方法。这一过程立即请求完全由服务提供程序框架处理,在服务提供程序的那一部分不需要任何处理。这一服务提供程序框架使用,例如,每个服务提供程序四个线程,为特定的服务提供程序管理WFP请求,包括一个延迟的处理队列管理程序线程和一个延迟处理线程。WFP请求放在一个延迟的处理队列里,得到信号的时候,这一延迟的处理队列管理程序线程从延迟的处理队列中弹出一个请求对象,创建一个延迟的处理线程,在其中完成特定WFP请求的延迟处理。
在本发明的一个实施方案里,当一个WFP请求从队列中取出的时候,创建一个处理线程,这一服务提供程序框架为这一特定的请求完成延迟处理,这一特定的请求对于所有服务提供程序来说都是相同的。在成功地完成这一处理的时候,服务提供程序框架调用服务提供程序导出类中的spDeferredProcessing()方法,服务提供程序完成满足spDeferredProcessing()方法中的请求所需要的所有请求,包括公布一个请求完成事件。当延迟处理方法返回数据时,这一线程就结束,这一请求对象被删除。如果这一服务提供程序还没有调用这一spDeferredProcessin()方法,服务提供程序框架就公布一个请求完成消息。
在本发明的一个实施方案里,服务提供程序访问一个或者多个WPF请求的一个或者多个请求参数。WPF请求包括,例如,一个WFPCancelAsyncRequest请求、一个WFPClose请求、一个WFPDeregister请求、一个WFPExecute请求、一个WFPGetInfo请求、一个WPFLock请求、一个WFPOpen请求、一个WFPRegister请求、一个WFPSetTraceLevel请求、一个WFPUnloadService请求和一个WFPUnlock请求。WFPCancelAsyncRequest请求的请求参数包括一个hService参数和一个reqID参数;WFPClose请求的请求参数包括一个hService参数、一个hWnd参数和一个reqID parameter;WFPDeregister请求的请求参数包括一个hService参数、一个dwEventClass参数、一个hWndReg参数、一个hWnd参数和一个reqID参数;WFPExecute请求的请求参数包括一个hService参数、一个dwCommandData参数、一个IpCommandData参数、一个dwTimeOut参数、一个hWnd参数和一个reqID参数。
另外,WFPGetInfo请求的请求参数包括一个hService参数、一个dwCagegory参数、一个IPQueryDetails参数、一个dwTimeOut参数、一个hWnd参数和一个reqID参数;WFPOpen请求的请求参数包括一个hService参数、一个IpszLogicalName参数、一个hApp参数、一个IpszApplicationID参数、一个dwTraceLevel参数、一个dwTimeOut参数、一个hWnd参数、一个reqID参数、一个hPprovider参数、一个dwSPVersionsRequired参数、一个IpSPIVersion参数、一个dwSrvcVersionsRequired参数和一个IpSrvcVersion参数;WFPRegister请求的请求参数包括一个hService参数、一个dwEventClass参数、一个hWndReg参数、一个hWnd参数和一个reqID参数;WFPSetTraceLevel请求的请求参数包括一个hService参数和一个dwTraceLevel参数。
本发明其它的目的、优点和新特点将在下面的描述中说明,通过阅读以下说明,本领域里的技术人员会部分地更加理解本发明,或者可以通过实施本发明来学会它。
图1是一个流程图,它说明本发明一个实施方案中的请求设备服务,比方说自动付款过程的一个实例;图2是一个示意图,它说明利用一个存款机例子说明本发明一个实施方案中,XFS服务提供程序层次的一个例子;图3是一个示意图,它说明用一个WFPExecute请求例子,说明本发明一个实施方案中,服务提供程序请求对象类层次的一个实例;图4是一个表,它说明本发明一个实施方案中WFPCancelAsyncRequest参数的例子,以及如何访问它们中的每一个;图5是一个表,它说明本发明一个实施方案中WFPClose参数的例子,以及如何访问它们中的每一个;图6是一个表,它说明本发明一个实施方案中WFPDeregister参数的例子,以及如何访问它们中的每一个;图7是一个表,它说明本发明一个实施方案中WFPExecute参数的例子,以及如何访问它们中的每一个;图8是一个表,它说明本发明一个实施方案中WFPGetInfo参数的例子,以及如何访问它们中的每一个;图9是一个表,它说明本发明一个实施方案中WFPOpen参数的例子,以及如何访问它们中的每一个;图10是一个表,它说明本发明一个实施方案中WFPRegister参数的例子,以及如何访问它们中的每一个;
图11是一个表,它说明本发明一个实施方案中WFPSetTraceLevel参数的例子,以及如何访问它们中的每一个。
现在详细参考本发明的一个实施方案,它的一个例子在附图中给出,本发明一个实施方案的方法和系统利用兼容XFS的服务提供程序,使得一个金融机构,比方说一个银行,能够实现它的ATM系统,在这里,有时叫做全球ATM,让它的应用程序在多个销售商的ATM上以及它自己的ATM上获得设备服务。通过这种方式,在某一个销售商的平台上获得设备服务,跟在这一金融机构自己的平台上获得设备服务是相同的。本发明一个实施方案的XFS服务提供程序框架提供所有相同的处理,在服务提供程序的开发过程中,它对于每一个服务提供程序来说都是相同的。每一个设备都有一个设备提供程序,本发明的一个实施方案提供每一个服务提供程序都需要进行的相同的处理。这时的服务提供程序开发商只需要关心某一设备的代码专用和设备专用代码。
本发明一个实施方案的软件要在该金融机构的ATM上运行。其它的销售商为他们自己的设备提供他们自己的服务提供程序。差别出现在设备一级,在不同的ATM销售商之间这一点相当明确。通常,对顾客来说可见的应用程序能够很容易地在一个销售商的机器到另一个销售商的机器上运行。然而,从一个销售商的机器到另一个销售商的机器,获得设备服务通常都是很不相同的。这一服务提供程序提供一层,使它对于应用程序而言是不可见的。在本发明的一个实施方案里,将XFS接口提供给应用程序,这些应用程序不关心在下面正在发生什么事情。本发明一个实施方案的一个方面包括这些服务提供程序的开发。本发明一个实施方案的框架利用许多文件,这里叫做“H”文件,和一个动态链接库(DLL),从它开始编译,跟它建立链接,以开发叫做服务提供程序的东西。本发明的方法和系统只跟使设备发出设备服务请求的应用程序一起使用。术语,比方说这里使用的“排队”和“WFS请求”,都在XFS标准里给出定义,利用它,本发明一个实施方案的框架是兼容的。例如,术语“WFS”是一个前缀,说明一个特定的功能分类。
图1是一个流程图,它说明本发明一个实施方案中请求设备服务过程,比方说吐出现金,的一个实例。参考图1,在S1处,跟ATM中吐出现金一起,是顾客看见的一件事的应用程序在它的处理过程中决定它需要吐出现金。定义了一个XFS标准用来吐出现金,而且应用程序知道在这个时候它能够发出正确的命令,它叫做一个WFS执行命令。在S2处,XFS管理程序将这一WFS执行命令转换成一个WFP执行命令,由适当的(在这种情况下,它是自动付款机)服务提供程序处理。术语“WFP”是另一个前缀,说明某一功能分类,WFP执行命令传递到适当的服务提供程序那里。在步骤S3中,服务提供程序驱动自动付款机,并执行适当的低级硬件命令,使自动付款机提供和分发现金。这一服务提供程序将结果返回给XFS管理程序,在步骤S4中,XFS管理程序将这一结果返回给应用程序。WFS命令和WFP命令之间的一个差别是,例如,WFS命令是ATM应用程序发出,以便从服务提供程序获得设备服务的,WFP命令是“进入”服务提供程序的功能入口点,本发明一个实施方案的框架将它“暴露”给XFS管理程序。这一XFS管理程序将这些WFS命令转换成相应的WFP命令。
本发明一个实施方案的方法和系统被用于顾客会话而不是吐出现金。其它的功能包括,但不限于,例如,存款、打印、管理ATM读卡机、管理和跟踪什么时候安全门打开或者关闭以及当安全门打开或者关闭的时候让ATM停止服务的功能。基本上有五个设备直接卷入到顾客会话中,比方说吐出现金、存入一个信封、打印一个收据或者一张凭条、驱动触摸屏以及读卡机。在本发明一个实施方案的方法和系统中,ATM触摸屏上有一个按钮,如果这个按钮被按下,一定量的现金就被吐出给顾客。当顾客触摸触摸屏时,它作为例如给ATM应用程序的一个鼠标事件出现。换句话说,它就象有人在点击鼠标器。当一个应用程序获得通知,说明这个按钮已经被触摸的时候,它对一个较低级的软件项进行一次对象链接和嵌入(OLE)调用,它基本上是一个子程序调用,然后在较低级的软件中将这个子程序调用转换成一个WFP执行命令。它就是到本发明一个实施方案的框架的入口点。此时,这个框架传递一个入口点给这一具体的服务提供程序,这个入口点是在框架下面,然后这一服务提供程序获得了控制权,能够发出适当的设备命令来获得现金。
本发明的一个实施方案为金融机构提供一种解决方案,因为例如可以在内部及时地利用金融机构的源代码来提供,并让它处于金融机构的适当控制之下。现在考虑本发明一个实施方案中XFS服务提供程序的类结构和基本处理,框架为服务提供程序开发商提供一组C++(面向对象的编程语言)对象,它们进行必要的处理,是一个兼容XFS的服务提供程序。然后,开发商只需要提供对于具体服务提供程序而言独有的代码。
在本发明的一个实施方案里,通过启动服务提供程序框架XFS服务提供程序基类的一个实例和框架请求对象的实例来实现一个服务提供程序。发出WFP请求的时候,服务提供程序框架通过C++类的继承,调用服务提供程序的导出请求对象中的虚拟方法,从而允许服务提供程序进行这一服务独有的处理。图2是一个示意图,它用一个存款机例子,说明本发明一个实施方案中XFS服务提供程序层次的一个例子。这一XFS服务提供程序基类10包括需要用来处理WFP请求的服务提供程序框架对象。需要所有的服务提供程序来启动它的服务提供程序对象的一个具体实例12。如图2所示,实例12必须从XFS服务提供程序基类10导出。
图3是一个示意图,它用一个WFPExecute请求例子说明本发明一个实施方案中服务提供程序请求对象类层次的一个例子。在其中进行所有服务提供程序处理的基本单元是请求对象。为例如十一个WFP请求定义了一个请求对象。这一请求对象包括一个SpiRequest类14、一个SpiAsyncRequest类16、一个请求专用类,比方说OpenRequest或者ExecuteRequest18,以及可以选择,一个服务提供程序专用请求类20。如图3所示,其中的一个是从另一个导出的,这个图使用WFPExecute请求作为一个例子。
在本发明的一个实施方案里,每次XFS管理程序调用一个服务提供程序的WFP入口点之一时,都启动跟这个请求有关的一个请求对象。WFP请求分成两部分来处理。第一个部分叫做“立即处理”,第二个部分叫做“延迟处理”。调用一个服务提供程序的WFP入口点的时候,立即处理是在跟XFS管理程序使用的视窗线程相同的视窗线程中进行的。服务提供程序框架在它的立即处理方法中核实参数。如果没有发现任何错误,服务提供程序框架就调用服务提供程序导出类中的spImmediateProcessing(立即处理)方法。此时,服务提供程序可以核实更具体的,尽管不是完整的,参数。来自spImmediateProcessing(立即处理)的返回代码被返回给XFS管理程序。如果这一服务提供程序还没有采用spImmediateProcessing方法,服务提供程序框架就决定哪些代码被返回给XFS管理程序。
一旦立即处理已经完成而且没有任何错误,在本发明的一个实施方案里,就为这一请求启动一个请求定时器,并将这一请求对象放进延迟处理队列中。这样做保证了WOSA标准要求的对请求处理的正确串行化。从队列中取出的时候,创建一个处理线程,服务提供程序框架为这一处理进行延迟处理,这一处理对于所有服务提供程序来说都是相同的。如果这一过程成功地完成,服务提供程序框架就调用服务提供程序导出类中的spDeferredProcessing(立即处理)方法。在这一方法中,服务提供程序完成让请求满意所需要的所有处理,包括公布请求完成事件。当延迟处理方法返回时,线程就结束,请求对象被随后删除。如果服务提供程序还没有采用这一spDeferredProcessing(立即处理)方法,服务提供程序框架就公布这一请求完成事件。
上述情况的一个例外是WFPCancelAsyncRequest、WFPSetTraceLevel和WFPUnload请求。这些请求是“立即处理”请求,这样,它们没有任何延迟处理方法。所有这些请求完全是由服务提供程序框架处理的,在服务提供程序的这一部分不需要任何处理。
如果请求定时器停止计时或者如果这一请求被取消,WFP请求就可以被中断。如果这两种事件都没有发生,就根据这一请求的状态调用请求对象中的一个方法。如果目前正在处理这一请求,就调用服务提供程序请求对象中的退出方法。如果这一请求被排队,就调用abortQueued方法。
调用abort和abortQueued方法的时候,都有一个参数,这个参数说明中断的原因。它的值既可以是WFS_ERR_TIMEOUT,又可以是WFS_ERROR_CANCELED。这两种退出方法都为服务提供程序提供适当地清除请求的机会。
如果没有超负荷,服务提供程序框架就为退出和abortQueued方法发送请求完成消息。这是服务提供程序框架为这些操作所做的所有处理。如果服务提供程序框架发送的请求完成消息是需要的,采用这两种方法之一就是服务提供程序的职责。
本发明一个实施方案的服务提供程序框架每一个服务提供程序采用,例如,四个线程,为某一服务提供程序管理WFP请求。XFS管理程序用来调用WFP入口点的线程没有包括在这一数目中。这些线程包括,例如,一个延迟处理队列(DPQ)管理程序线程和一个延迟处理线程。
如上所述,在本发明的一个实施方案里,将WFP请求放在一个延迟处理队列上,以确保对WFP请求正确的串行化。在初始化的时候,创建DPQ管理程序线程,并且最开始的时候将它封锁。换句话说,它处于一种没有收到信号的状态,等待着一个请求对象排队。收到信号的时候,DPQ管理程序线程从延迟处理队列中弹出一个请求对象,并创建另一个线程,这个线程叫做延迟处理线程,其中进行所述WFP请求的实际延迟处理。DPQ管理程序线程在等待延迟处理线程结束的过程中,被又一次地封锁。在解除封锁的时候,DPQ管理程序线程返回,处理可能已经在排队的所有请求对象。如果没有任何对象在排队,那么DPQ管理程序线程就封锁正在等待的下一个WFP请求。
多数WFP请求的主要处理是在它的延迟处理中完成的。就象前面已经介绍过的一样,每次从延迟处理队列中弹出一个请求对象时,都要创建一个延迟处理线程。既然在前一个请求对象的线程还没有结束的时候不从DPQ弹出一个请求对象,在任何给定的时刻,就只有一个延迟处理线程在活动。在请求对象的延迟处理中服务提供程序可以创建其它的线程。如果是这样,服务提供程序就负责管理这一线程,并决定什么时候它应当结束。
现在来介绍服务提供程序如何访问每一个WFP请求的请求参数,如果有的话,以及服务提供程序,如果有的话,和服务提供程序框架这两者的处理职责,WFP请求包括,例如,WFPCancelAsyncRequest、WFPClose、WFPDeregister、WFPExecute、WFPGetInfo、WPFLock、WFPOpen、WFPRegister、WFPSetTraceLevel、WFPUnloadService和WFPUnlock。
在本发明的一个实施方案里,WFPCancelAsyncRequest给服务提供程序框架规定了取消哪些请求。这个请求可以,例如,处于排队状态,也可以是处于当前的处理状态。在这两种情况下,请求对象中的退出方法都被服务提供程序框架调用,从而允许服务提供程序公布请求完成通知。如果服务提供程序还没有为这一请求完成一个退出方法,这一服务提供程序框架就公布这一请求完成通知。WFPCancelAsyncRequest请求的参数储存在取消请求对象内。储存在SpiRequest对象内的那些参数是专用参数,只能用一个访问功能访问。图4是一个表,它说明本发明一个实施方案中每一个WFPCancelAsyncRequest参数的一个例子,以及如何访问它。
考虑这一WFPClose请求,服务提供程序框架为每一个服务提供程序保存活动会话的一个表。在收到有效关闭请求时,服务提供程序框架从这个表中去掉这一特定的会话,并注销跟这一会话有关的所有事件。服务提供程序可以使用关闭请求getNumberOfSessions()对象中的方法来获得这一特定服务提供程序的会话个数。如果这个个数是零,服务提供程序就负责关闭和卸下跟这个服务提供程序有关的PDH。
WFPClose请求的参数储存在关闭请求对象中。储存在SpiRequest和SpiAsyncRequest对象中的那些参数是专用参数,只能用一个功能来访问。图5是所有WFPClose参数和如何访问它们的一个表。这一立即处理方法是HRESULT<specificProvider>CloseRequest::spImmediateProcessing(void)。服务提供程序框架核实这些WFPClose参数中的每一个参数。服务提供程序可能会发现不必采用这一方法。延迟处理方法是Boolean<specificProvider>CloseRequest::spDeferredProcessing(void)。如果活动会话的个数是零,就应当关闭spDeferredProcessing,并卸下跟这一特定服务提供程序有关的PDH动态链接库(DLL)。
这一getNumberOfSessions方法返回当前活动的会话个数。该方法是<pre listing-type="program-listing"><![CDATA[int CloseRequest::getNumberOfSessions(serviceProvider)XfsServiceProvider * serviceProvider。]]></pre>这些参数包括serviceProvider,它是每一个XFS服务提供程序独有的一个句柄。在每一个打开请求对象中的serviceProvider属性中提供这一句柄给每一个服务提供程序。对于返回值,如果serviceProvider是有效的,就返回活动会话的个数。否则返回一个-1。
活动会话的个数反映了当前关闭请求对象中涉及的会话。这样,如果一个服务提供程序收到一个WFPOpen,随后又收到一个WFPClose请求,那么如果从关闭请求内的spDeferredProcessing方法调用,getNumberOfSessions就返回零。这样做假定了WFPOpen和WFPClose涉及同样的会话,而且还没有为其它会话收到任何其它的WFPOpens。服务提供程序框架处理跟WFPDeregister请求有关的所有处理。WFPDeregister请求的参数储存在注销请求对象中。储存在SpiRequest和SpiAsyncRequest请求中的那些参数是专用参数,只能用一个功能来访问。图6是一个表,它说明本发明一个实施方案中每一个WFPDeregister参数的例子,以及如何访问它们。
WFPExecute请求的参数储存在执行请求对象中。储存在SpiRequest和SpiAsyncRequest对象中的那些参数是专用参数,只能用一个功能来访问。图7是一个表,它说明本发明一个实施方案中每一个WFPExecute参数的一个例子,以及如何访问它。
对于立即处理,这一方法是<pre listing-type="program-listing"><![CDATA[HRESULT<specificSp>ExecuteRequest::spImmediateProcessing(void)。]]></pre>如果采用这一方法,这一方法就给予服务提供程序在框架让执行请求对象排队之前完成参数核实的机会。服务提供程序框架核实除dwCommand和lpCommandData以外所有的参数。如果这些参数中有任何一个无效,就不调用这一方法,并将适当的错误码返回给这一应用程序。服务提供程序应当核实dwCommand是否有效和得到支持。如果不是这样,就应当返回WFS_ERR_INVALID_COMMAND或者WFS_ERR_UNSUPP_COMMAND,只要合适的话。因为WFS_INVALID_DATA只能在执行完成事件中返回(不能作为一个立即错误),在这种方法中不能核实lpCommandData实际指向的数据。然而,服务提供程序应当核实这一lpCommandData和它可能包括的所有其它指针是否有效。如果有任何一个是无效的,这一方法就应当返回WFS_INVALID_POINTER。如果服务提供程序返回WFS_SUCCESS,请求对象就在延迟处理队列中排队,供以后处理。
对于延迟处理,这一方法是<pre listing-type="program-listing"><![CDATA[Boolean<specificSp>ExecuteRequest::spDeferredProcessing(void)。]]></pre>该方法,如果采用它的话,是处理这一服务提供程序的所有WFPExecute命令的入口点。WFPExecute参数按照跟前面介绍过的spImmediateProcessing方法相同的方法处理。在这一方法中,核实包括在lpCommandData内的数据。服务提供程序负责为跟WFPExecute请求有关的所有事件使用XfsEvent::postEvent()。包括执行完成事件。
对于退出处理,这个方法是<pre listing-type="program-listing"><![CDATA[void<specificSp>ExecuteRequest::abort(HRESULT abortReason,intrequestStatus)。]]></pre>这个方法,如果采用它的话,可以因为这一请求被WFSCancel(abortReason=WFS_ERR_CANCELED)取消调用,也可以因为这一请求超时而被调用(abortReason=WFS_ERR_TIMEOUT)。在这两种情况下,服务提供程序都负责结束spDeferredProcessing方法(见前面)已经创建的所有线程,并公布执行完成事件。
服务提供程序框架处理WFPGetInfo请求的方式跟处理所有其它WFP请求的方式不同。具体地说,这个WFPGetInfo单独放在一个延迟处理队列里,它意味着这一请求的延迟处理永远不能被一些其它的非WFPGetInfo请求所封锁。
WFPGetInfo请求的参数储存在GetInfo请求对象中。储存在SpiRequest和SpiAsyncRequest对象中的那些参数是专用参数,不能用一个功能来访问。图8是本发明一个实施方案中所有WFPGetInfo参数以及如何访问它的一个表。
对于立即处理,这一方法是<pre listing-type="program-listing"><![CDATA[HRESULT<specificSp>GetInfoRequest::spImmediateProcessing(void)]]></pre>这个方法,如果采用的话,给予服务提供程序在框架让GetInfo请求对象排队之前完成参数核实的机会。这一服务提供程序框架核实除dwCategory和lpQueryDetails以外的所有参数。如果这些参数中有任何一个是无效的,就不调用这一方法,并将适当的错误码返回给应用程序。服务提供程序应当核实dwCategory是否有效以及是否被支持。如果不是这样,就应当返回WFS_ERR_INVALID_CATEGORY或者WFS_ERR_UNSUPP_CATEGORY,只要适当。因为WFS_INVALID_DATA只能在GetInfo完成事件(不是一个立即错误)中返回,lpQueryDetails实际指向的数据不能在这一方法中核实。然而,服务提供程序应当核实lpQueryDetails和它可能包括的所有其它指针,看它们是否有效。如果它们中间有任何无效的,这一方法就应当返回WFS_INVALID_POINTER。如果服务提供程序返回WFS_SUCCESS,这一请求对象就在延迟处理队列中排队,供以后处理。
对于延迟处理,这一方法是<pre listing-type="program-listing"><![CDATA[Boolean<specificSp>GetInfoRequest::spDeferredProcessing(void)。]]></pre>这一方法,如果采用它的话,是处理这一服务提供程序的所有WFPGetInfo命令的入口点。处理这些WFPGetInfo参数的方式跟前面在spImmediateProcessing方法中介绍的方式一样。在这一方法中,核实包括在lpQueryDetails中的数据。这一服务提供程序负责为跟WFPGetInfo请求有关的所有事件使用XfsEvent::postEvent()。它包括GetInfo完成事件。
对于退出处理,该方法是<pre listing-type="program-listing"><![CDATA[void<specificSp>GetInfoRequest::abort(HRESULT abortReason,intrequestStatus)。]]></pre>这一方法,如果采用了它的话,可以因为WFSCancel(abortReason=WFS_ERR_CANCELED)取消了请求而调用,也可以因为请求超时(abortReason=WFS_ERR_TIMEOUT)而调用。在这两种情况下,服务提供程序都负责适当地清除有可能已经根据这一请求完成的所有的处理。
WFPOpen请求的参数储存在打开请求内。储存在SpiRequest和SpiAsyncRequest对象内的那些参数是专用参数,只能用一个功能来访问。图9是一个表,它说明本发明的一个实施方案中每一个WFPOpen参数的一个例子,以及如何访问它。
对于立即处理,该方法是<pre listing-type="program-listing"><![CDATA[HRESULT<specificSp>OpenRequest::spImmediateProcessing(void)。]]></pre>这一方法,如果被采用,就在所有的WFPOpen请求参数被核实以后,被服务提供程序框架调用。这包括版本协商,就象WOSA_XFS_API/SPI程序员参考2.00版第5.7节中所介绍的一样。服务提供程序可能不需要采用这一方法。
对于延迟处理,该方法是<pre listing-type="program-listing"><![CDATA[Boolean<specificSp>OpenRequest::spDeferredProcessing(void)。]]></pre>这一方法允许服务提供程序进行跟“打开一个设备”有关的实际的处理。这可能包括执行PDH命令来初始化这一服务提供程序使用的设备。这一方法可以在每次XFS管理程序调用WFPOpen的时候调用。服务提供程序必须使用OpenRequest::openFailed()方法,如果因为某些原因它认为打开操作已经失败。openFailed()方法允许服务提供程序框架从它的表中删除这一会话。
WFPRegister请求的参数储存在注册请求对象里。储存在SpiRequest对象和SpiAsyncRequest对象里的那些参数是专用参数,只能用一个功能来调用。图10是一个表,它说明本发明一个实施方案中每一个WFPRegister参数的一个例子,以及如何访问它。
WFPSetTraceLevel请求的参数储存在设置跟踪级别请求对象里。储存在SpiRequest对象里的那些参数是专用参数,只能用一个功能来调用。图11是一个表,它说明本发明一个实施方案中每一个WFPSetTraceLevel参数的一个例子,以及如何访问它。
事件处理在WOSA_XFS_API/SPI程序员参考的2.00版的第3.11节中进行了介绍。对象中的postEvent()方法用于为WFP请求的完成公布事件消息,并为EXECUTE、SERVICE、USER和SYSTEM事件公布事件消息。下面将介绍XfsPost()。
WFP请求完成事件,或者简短地说完成事件,是视窗消息,它们被用于说明某一异步WFP请求正在进行处理。服务提供程序负责为所有WFP请求公布完成事件,其中的服务提供程序已经采用了一种spDeferredProcessing方法,它使WFP请求基类中同样的方法过载。通常,服务提供程序为WFPOpen、WFPExecute、WFPGetlnfo和WFPClose请求采用spDeferredProcessing方法。服务提供程序框架公布所有的其它完成事件。
每一个服务提供程序都负责公布它们的设备程序员参考中描述的所有的执行、服务和用户事件。服务提供程序还负责公布程序员参考的设备状态改变一节和硬件和软件错误一节中描述的系统事件。服务提供程序框架负责公布跟不能发布的消息和版本协商错误有关的系统事件。
对于postEvent()事件,该方法是<pre listing-type="program-listing"><![CDATA[void XfsEvent::postEvent(DWORD notificationMessage,XfsServiceProvider*serviceProvider,LPWFSRESULT lpWfsResult)。]]></pre>这一方法由服务提供程序用来发送时间和请求完成通知。
参数包括notificationMessage,它可以取以下值WFS_SERVICE_EVENTWFS_USER_EVENTWFS_SYSTEM_EVENTWFS_EXECUTE_EVENT命令完成消息(见WOSA XFS API/SPI程序员参考第2.00版第9.1.1节)。
参数还包括serviceProvider是每一个XFS服务提供程序独有的一个句柄。这个句柄提供给每一个打开请求对象中servieeProvider属性里的每一个服务提供程序。
hResult是放在lpWfsResult指向的WFSRESULT结构的hResult成员里的值。lpWfsResult是指向WFSRESULT结构的一个指针。任何时候启动一个请求对象的时候,服务提供程序框架都分配一个WFSRESULT结构。这样,如果要公布的事件是一个请求完成事件,请求对象的WFSRESULT结构就可以使用;但只能使用一次。以后公布任何请求的事件都必须使用XfsEvent::allocateWfsResult()来分配一个新的WFSRESULT结构。如果对于任意事件,WFSRESULT结构都指向另外的数据,就必须使用XfsEvent::allocateMore()(见下文)来分配额外的空间。
对于SERVICE_EVENTS、USER_EVENTS和SYSTEM_EVENTS,postEvent为已经为指定事件注册的这一服务发送事件通知给每一个hWnd。对于EXECUTE_EVENTS,只有跟当前正在进行的执行请求hService有关的hWnd接收事件通知。服务提供程序负责设置WFSRESULT结构的hResult和dwEventID成员。WFSRESULT结构的RequestID、hService和tsTimestamp成员由postEvent方法设置。
对于allocateWfsResult,该方法是<pre listing-type="program-listing"><![CDATA[HRESULT XfsEvent::allocateWfsResult(LPVOID*lppvData)。]]></pre>该方法用于分配一个XFS WFSRESULT结构。
参数包括lppvData,它是allocatWfsResult在其中放置指向分配的存储器的指针的变量的地址。
如果功能返回值不是WFS_SUCCESS,返回值就是以下错误条件中的一个WFS_ERR_INVALID_POINTER,如果lppvData不指向可以访问的存储器。
WFS_ERR_OUT_OF_MEMORY,如果没有足够的存储器来满足请求。调用WFMallocateBuffer的时候,服务提供程序框架使用WFS_MEM_SHARE和WFS_MEM_ZEROINIT标志。
对于allocateMore,该方法是<pre listing-type="program-listing"><![CDATA[HRESULT XfxEvent::allocateMore(ULONG ulSizeLPVOID lpvOriginalLPVOID*lppvData)。]]></pre>这一方法用于分配存储器缓冲器,将它跟一个已经存在的缓冲器链接起来。
参数包括ulSize,它是要分配的存储器的尺寸(以字节为单位)。
lpvOriginal,它是新分配的缓冲器要链接的原来的缓冲器的地址。
lppvData,它是allocatWfsResult要在其中放置指向分配的存储器的指针的变量的地址。
如果功能的返回值不是WFS_SUCCESS,返回值就是以下错误状态中的一个WFS_ERR_INVALID_POINTER,如果一个指针参数不指向可以访问的存储器。
WFS_ERR_OUT_OF_MEMORY,如果没有足够的存储器来满足请求。
WFS_ERR_INVALID_ADDRESS,lpvOriginal参数不指向以前分配的一个缓冲器。
调用WFMallocateBuffer的时候,服务提供程序框架使用WFS_MEM_SHARE和WFS_MEM_ZEROINIT标志。
如同已经提到过的一样,在本发明的一个实施方案里,要求每一个服务提供程序启动它的服务提供程序的一个具体实例。这个对象是从图2所示服务提供程序的XFS服务提供程序类获得的。这一XFS服务提供程序类有虚拟方法,比方说forExecuteRequest,如果没有因为服务提供程序导出类中同样的功能而超载,它就会启动请求对象。这样,对于那些需要服务提供程序处理的WFP请求,比方说WFPExecute,服务提供程序必须让XFS服务提供程序基类中的请求对象实例化方法超载。将存款机服务提供程序用作一个例子,导出服务提供程序类的方法是,例如<pre listing-type="program-listing"><![CDATA[DepositorExecuteRequest*DepositorServiceProvider::forExecuteRequest(void){DepositorExecuteRequest*request;request=new DepositorExecuteRequest;return(request);]]></pre>1.应用程序如何访问结果缓冲器(result buffer how do applicationsaccess)。
2.取消/退出应当是服务提供程序及时终止线程的职责。
已经介绍了本发明的各种优选实施方案,以此来说明本发明的各种目的。应当认识到,给出这些实施方案只是为了说明本发明。各种改进和修改对于本领域里的技术人员而言显然不会偏离本发明的实质和范围。
本申请要求享受1999年11月1日提交的第60/162994号美国未授权申请的优先权,该申请的标题是“扩充自助式交易终端(XFS服务提供程序(serviceprovider)框架)金融业务服务提供程序框架的方法和系统”,这里将它引入作为参考。
本申请涉及同时提交的律师文号为CITI0198/T0091-195417的申请,该申请的标题是“保证自助式金融交易终端和远程操作员接口之间通信安全的方法和系统”,这里将它引入作为参考。
本申请涉及同时提交的律师文号为CITI0200/T0091-195419的申请,该申请的标题是“从远程计算机对自助式金融交易终端上的软件进行安装和/或升级的方法和系统”,这里将它引入作为参考。
本申请涉及同时提交的律师文号为CITI0202/T0091-195420的申请,该申请的标题是“在自助式金融交易终端上同时自动安装软件的方法和系统”,这里将它引入作为参考。
本申请涉及同时提交的律师文号是CITI0199/T0091-195421号的申请,该申请的标题为“自助式金融交易终端远程操作员接口的方法和系统”,这里将它引入作为参考。
本申请涉及同时提交的律师文号为CITI0201/T0091-195422的申请,该申请的标题是“协调自助式金融交易终端上会话活动的方法和系统”,这里将它引入作为参考。
本发明涉及同时提交的律师文号是CITI0203/T0091-195578的申请,该申请的标题为“为公用软件的发布配置自助式金融交易终端的方法和系统”,这里将它引入作为参考。
本申请涉及1999年11月1日提交的美国未授权专利申请第60/162673号,该申请的标题是“在自助式交易终端和远程操作员接口之间进行安全通信的方法和系统(远程操作员接口安全)”,这里将它引入作为参考。
本申请涉及1999年11月1日提交的第60/163002号美国未授权申请,该申请的标题是“从远程计算机对自助式金融交易终端上的软件进行安装和/或升级的方法和系统(远程安装/软件升级)”,这里将它引入作为参考。
本申请涉及1999年11月1日提交的60/162815号美国未授权申请,该申请的标题为“在自助式金融交易终端上同时和自动安装软件的方法和系统(全球安装框架)”,这里将它引入作为参考。
本申请涉及1999年11月1日提交的60/163000号美国未授权申请,该申请的标题是“自助式金融交易终端远程操作员接口(远程操作员接口)的方法和系统”,这里将它引入作为参考。
本申请涉及1999年11月1日提交的60/162816号美国未授权申请,该申请的标题是“协调自助式金融交易终端会话活动(ATM会话管理程序)的方法和系统”,这里将它引入作为参考。
本申请涉及1999年11月1日提交的60/162672号美国未授权申请,该申请的标题是“在发布公用软件的时候配置自助式金融终端的方法和系统(自助式金融终端的配置框架)”,这里将它引入作为参考。
这一专利文献的内容及其附图的一部分包括受到版权保护的材料。版权所有人不反对任何人对这一专利文件或者专利内容进行传真复制,只要是在专利和商标局专利文件或者记录中就行,但其它情况下保留版权。
权利要求
1.一种方法,用于在一个自助式交易终端上用服务提供程序框架获得至少一种设备服务,其特征在于,包括以下步骤自助式交易终端应用程序接收数据,该数据表示需要获得交易终端设备服务;所述交易终端应用程序发出一个请求给一个XFS管理程序,以获得交易终端设备服务;XFS管理程序转换这一请求,供服务提供程序处理;和这一服务提供程序获得所述交易终端设备服务。
2.根据权利要求1的方法,其特征在于,交易终端应用程序接收所述数据的步骤还包括接收用于表示需要获得交易终端设备服务的数据,这一交易终端设备服务跟一个设备有关,这个设备是从一组交易终端设备中选择出来的,这组交易终端设备包括一个存款机、一个打印机、一个读卡机、一个安全门、一个自动付款机和一个触摸屏。
3.根据权利要求1的方法,其特征在于,发出请求给XFS管理程序的步骤还包括交易终端应用程序对XFS管理程序进行子程序调用,从一个服务提供程序那里获得交易终端设备服务。
4.根据权利要求1的方法,其特征在于,服务提供程序转换所述请求供处理的步骤还包括XFS管理程序将一个子程序调用转换成进入所述服务提供程序的一个入口点,供服务提供程序处理。
5.根据权利要求4的方法,其特征在于,所述将子程序调用转换成进入所述服务提供程序的一个入口点的步骤还包括启动跟所述请求有关的一个请求对象。
6.根据权利要求1的方法,其特征在于,转换所述请求供服务提供程序处理的步骤还包括执行所述服务提供程序。
7.根据权利要求6的方法,其特征在于,实施所述服务提供程序的步骤还包括启动服务提供程序框架XFS服务提供程序基类的一个过程,以及需要用来处理所述请求的服务提供程序框架请求对象的至少一个过程。
8.根据权利要求7的方法,其特征在于,启动服务提供程序框架XFS服务提供程序基类和服务提供程序框架请求对象的步骤还包括启动从一个XFS服务提供程序基类服务提供程序请求对象类层次导出的服务提供程序的服务提供程序请求对象。
9.根据权利要求7的方法,其特征在于,启动服务提供程序框架XFS服务提供程序基类和服务提供程序框架请求对象的步骤还包括启动服务提供程序框架XFS服务提供程序基类的过程和为从互相导出的多个请求类中选择出来的一个请求类定义的服务提供程序框架请求对象的至少一个过程。
10.根据权利要求7的方法,其特征在于,启动服务提供程序框架XFS服务提供程序基类和框架请求对象的步骤还包括启动服务提供程序框架XFS服务提供程序基类的实例和框架请求对象的至少一个实例,这个框架请求对象是为一个请求类定义的,这个请求类是从一组请求类选择出来的,这组请求类包括一个SpiRequest类、一个SpiAsyncRequest类、一个请求专用类和一个服务提供程序专用请求类。
11.根据权利要求1的方法,其特征在于,服务提供程序获得交易终端设备服务的步骤还包括服务提供程序框架通过类继承调用服务提供程序一个导出对象中的至少一个虚拟方法,从而允许这个服务提供程序完成所述交易终端设备服务独有的处理。
12.根据权利要求1的方法,其特征在于,服务提供程序获得交易终端设备服务的步骤还包括在一个立即处理部分和一个延迟处理部分的至少一个中处理所述请求。
13.根据权利要求12的方法,其特征在于,在立即处理部分处理所述请求的步骤还包括调用所述服务提供程序一个入口点的时候,在XFS管理程序使用的线程内进行立即处理。
14.根据权利要求12的方法,其特征在于,在立即处理部分处理所述请求的步骤还包括一个服务提供程序框架用所述服务提供程序框架的一个立即处理方法,核实参数。
15.根据权利要求12的方法,其特征在于,在立即处理部分处理请求的步骤还包括所述服务提供程序框架在该服务提供程序的导出类中调用一个sp立即处理(spImmediateProcessing)方法。
16.根据权利要求15的方法,其特征在于,调用所述服务提供程序导出类中的sp立即处理(spImmediateProcessing)方法的步骤还包括从sp立即处理(spImmediateProcessing)向XFS管理程序返回一个返回码。
17.根据权利要求12的方法,其特征在于,处理立即处理部分的请求的步骤还包括由一个服务提供程序框架确定一个代码,返回给所述XFS管理程序。
18.根据权利要求12的方法,其特征在于,处理立即处理部分中的请求的步骤还包括处理一个WFPCancelAsyncRequest请求、一个WFPSetTraceLevel请求和一个WFPUnload请求中的至少一个,作为一个服务提供程序网络发出的一个过程立即请求(a process immediaterequest)。
19.根据权利要求12的方法,其特征在于,处理延迟处理部分的请求的步骤还包括将一个请求对象放进一个延迟处理队列。
20.根据权利要求19的方法,其特征在于,处理延迟处理部分中的所述请求的步骤还包括一个延迟处理队列管理程序线程从所述延迟处理队列中弹出所述请求对象。
21.根据权利要求20的方法,其特征在于,处理延迟处理部分中的所述请求的步骤还包括在所述延迟处理队列管理程序创建的一个延迟处理线程中处理所述请求。
22.根据权利要求12的方法,其特征在于,处理延迟处理部分中所述请求的步骤还包括一个服务提供程序框架为对所有服务提供程序来说共同的请求进行延迟处理。
23.根据权利要求12的方法,其特征在于,处理所述延迟处理部分的所述请求的步骤还包括由一个服务提供程序框架调用服务提供程序的一个导出类的一个sp延迟处理(spDeferredProcessing)方法。
24.根据权利要求23的方法,其特征在于,处理延迟处理部分中的请求的步骤还包括所述服务提供程序进行满足sp延迟处理(spDeferredProcessing)方法内的请求所必需的所有处理。
25.根据权利要求24的方法,其特征在于,在延迟处理部分处理所述请求的步骤还包括服务提供程序公布一个请求完成事件。
26.根据权利要求25的方法,其特征在于,在延迟处理部分处理所述请求的步骤还包括结束一个线程并删除一个请求对象。
27.根据权利要求12的方法,其特征在于,在延迟处理部分处理所述请求的步骤还包括一个服务提供程序框架公布一个请求完成事件。
28.根据权利要求1的方法,其特征在于,所述服务提供程序获得所述设备服务的步骤还包括该服务提供程序访问至少一个请求参数。
29.根据权利要求28的方法,其特征在于,所述服务提供程序访问所述请求参数的步骤还包括访问从一组请求中选择出来的一个请求的参数,这一组请求包括一个WFPCancelAsyncRequest请求、一个WFPClose请求、一个WFPDeregister请求、一个WFPExecute请求、一个WFPGetInfo请求、一个WPFLock请求、一个WFPOpen请求、一个WFPRegister请求、一个WFPSetTraceLevel请求、一个WFPUnloadService请求和一个WFPUnlock请求。
30.根据权利要求29的方法,其特征在于,服务提供程序访问WFPCancelAsyncRequest请求的请求参数的步骤还包括访问hService参数和reqID参数中至少一个参数的步骤。
31.根据权利要求29的方法,其特征在于,服务提供程序访问WFPClose请求的请求参数的步骤还包括访问一个hService参数、一个hWnd参数和一个reqID参数中的至少一个。
32.根据权利要求29的方法,其特征在于,服务提供程序访问WFPDeregister请求的请求参数的步骤还包括访问一个hService参数、一个dwEventClass参数、一个hWndReg参数、一个hWnd参数和一个reqID参数中的至少一个。
33.根据权利要求29的方法,其特征在于,服务提供程序访问WFPExecute请求的请求参数的步骤还包括访问一个hService参数、一个dwCommandData参数、一个IpCommandData参数、一个dwTimeOut参数、一个hWnd参数和一个reqID参数中的至少一个。
34.根据权利要求29的方法,其特征在于,服务提供程序访问WFPGetInfo请求的请求参数的步骤还包括访问一个hService参数、一个dwCagegory参数、一个IPQueryDetails参数、一个dwTimeOut参数、一个hWnd参数和一个reqID参数中的至少一个。
35.根据权利要求29的方法,其特征在于,服务提供程序访问WFPOpen请求的请求参数的步骤还包括访问一个hService参数、一个IpszLogicalName参数、一个hApp参数、一个IpszApplicationID参数、一个dwTraceLevel参数、一个dwTimeOut参数、一个hWnd参数、一个reqID参数、一个hPprovider参数、一个dwSPVersionsRequired参数、一个IpSPIVersion参数、一个dwSrvcVersionsRequired参数和一个IpSrvcVersion参数中的至少一个。
36.根据权利要求29的方法,其特征在于,服务提供程序访问WFPRegister请求的请求参数的步骤还包括访问一个hService参数、一个dwEventClass参数、一个hWndReg参数、一个hWnd参数和一个reqID参数中的至少一个。
37.根据权利要求29的方法,其特征在于,服务提供程序访问WFPSetTraceLevel请求的请求参数的步骤还包括访问hService和dwTraceLevel参数中的至少一个。
38.一种系统,用于在一个自助式交易终端上用服务提供程序框架获得至少一种设备服务,包括自助式交易终端应用程序接收数据,说明需要获得交易终端设备服务的装置;交易终端应用程序发出一个请求给一个XFS管理程序,以获得交易终端设备服务的装置;XFS管理程序转换这一请求,供服务提供程序处理的装置;和这一服务提供程序获得所述交易终端设备服务的装置。
39.根据权利要求38的系统,其特征在于,交易终端应用程序接收所述数据的装置还包括接收说明需要获得交易终端设备服务的数据的装置,这一交易终端设备服务跟一个设备有关,这个设备是从一组交易终端设备中选择出来的,这组交易终端设备包括一个存款机、一个打印机、一个读卡机、一个安全门、一个自动付款机和一个触摸屏。
40.根据权利要求38的系统,其特征在于,发出请求给XFS管理程序的装置还包括交易终端应用程序对XFS管理程序进行子程序调用,从一个服务提供程序那里获得交易终端设备服务的装置。
41.根据权利要求38的系统,其特征在于,服务提供程序转换所述请求供处理的装置还包括XFS管理程序将一个子程序调用转换成进入所述服务提供程序的一个入口点,供服务提供程序处理的装置。
42.根据权利要求4l的系统,其特征在于,将子程序调用转换成进入所述服务提供程序的一个入口点的装置还包括启动跟所述请求有关的一个请求对象的装置。
43.根据权利要求38的系统,其特征在于,转换所述请求供服务提供程序处理的装置还包括执行所述服务提供程序的装置。
44.根据权利要求43的系统,其特征在于,执行所述服务提供程序的装置还包括启动服务提供程序框架XFS服务提供程序基类的一个实例,以及启动需要用来处理所述请求的服务提供程序框架请求对象的至少一个实例(instance)的装置。
45.根据权利要求44的系统,其特征在于,启动服务提供程序框架XFS服务提供程序基类和服务提供程序框架请求对象的装置还包括启动从一个XFS服务提供程序基类服务提供程序请求对象类层次导出的服务提供程序的服务提供程序请求对象的一个具体实例的装置。
46.根据权利要求44的系统,其特征在于,启动服务提供程序框架XFS服务提供程序基类和服务提供程序框架请求对象的装置还包括启动服务提供程序框架XFS服务提供程序基类的实例和为从互相导出的多个请求类中选择出来的一个请求类定义的服务提供程序框架请求对象的至少一个实例的装置。
47.根据权利要求44的系统,其特征在于,启动服务提供程序框架XFS服务提供程序基类的实例和框架请求对象的装置还包括启动服务提供程序框架XFS服务提供程序基类的实例和框架请求对象的至少一个实例的装置,这个框架请求对象是为一个请求类定义的,这个请求类是从一组请求类选择出来的,这组请求类包括一个SpiRequest类、一个SpiAsyncRequest类、一个请求专用类和一个服务提供程序专用请求类。
48.根据权利要求38的系统,其特征在于,服务提供程序获得交易终端设备服务的装置还包括服务提供程序框架通过类继承调用服务提供程序一个导出对象中的至少一个虚拟方法,从而允许这个服务提供程序完成所述交易终端设备服务独有的处理的装置。
49.根据权利要求38的系统,其特征在于,服务提供程序获得交易终端设备服务的装置还包括在一个立即处理部分和一个延迟处理部分的至少一个中处理所述请求的装置。
50.根据权利要求49的系统,其特征在于,在立即处理部分处理所述请求的装置还包括调用所述服务提供程序一个入口点的时候,在XFS管理程序使用的线程内进行立即处理的装置。
51.根据权利要求49的系统,其特征在于,在立即处理部分处理所述请求的装置还包括一个服务提供程序框架核实参数的装置。
52.根据权利要求49的系统,其特征在于,在立即处理部分处理请求的装置还包括所述服务提供程序框架在该服务提供程序的导出类中调用一个sp立即处理(spImmediateProcessing)方法的步骤。
53.根据权利要求52的系统,其特征在于,调用所述服务提供程序的导出类中sp立即处理(spImmediateProcessing)方法的装置还包括从sp立即处理(spImmediateProcessing)向XFS管理程序返回一个返回码的装置。
54.根据权利要求49的系统,其特征在于,处理立即处理部分的请求的装置还包括一个服务提供程序框架确定一个代码,返回给所述XFS管理程序的装置。
55.根据权利要求49的系统,其特征在于,处理立即处理部分中的请求的装置还包括处理一个WFPCancelAsyncRequest请求、一个WFPSetTraceLevel请求和一个WFPUnload请求中的至少一个,作为一个服务提供程序网络发出的一个过程立即请求(a process immediaterequest)的步骤。
56.根据权利要求49的系统,其特征在于,处理延迟处理部分的请求的装置还包括将一个请求对象放进一个延迟处理队列的装置。
57.根据权利要求49的系统,其特征在于,处理延迟处理部分中的所述请求的装置还包括一个延迟处理队列管理程序线程从一个延迟处理队列中弹出一个请求对象的装置。
58.根据权利要求57的系统,其特征在于,处理延迟处理部分中的所述请求的装置还包括在所述延迟处理队列管理程序创建的一个延迟处理线程中处理所述请求的步骤。
59.根据权利要求49的系统,其特征在于,处理延迟处理部分中所述请求的装置还包括一个服务提供程序框架为对所有服务提供程序来说共同的请求进行延迟处理的装置。
60.根据权利要求49的系统,其特征在于,处理所述延迟处理部分的所述请求的装置还包括一个服务提供程序框架调用服务提供程序的一个导出类的一个sp延迟处理(spDeferredProcessing)方法的装置。
61.根据权利要求60的系统,其特征在于,处理延迟处理部分中的请求的装置还包括所述服务提供程序进行满足sp延迟处理(spDeferredProcessing)方法内的请求所必需的所有处理的装置。
62.根据权利要求61的系统,其特征在于,在延迟处理部分处理所述请求的装置还包括服务提供程序公布一个请求完成事件的装置。
63.根据权利要求62的系统,其特征在于,在延迟处理部分处理所述请求的装置还包括结束一个线程并删除一个请求对象的装置。
64.根据权利要求49的系统,其特征在于,在延迟处理部分处理所述请求的装置还包括一个服务提供程序框架公布一个请求完成事件的装置。
65.根据权利要求38的系统,其特征在于,所述服务提供程序获得所述设备服务的装置还包括该服务提供程序访问至少一个请求参数的装置。
66.根据权利要求65的系统,其特征在于,所述服务提供程序访问所述请求参数的装置还包括访问从一组请求中选择出来的一个请求的参数的装置,这一组请求包括一个WFPCancelAsyncRequest请求、一个WFPClose请求、一个WFPDeregister请求、一个WFPExecute请求、一个WFPGetInfo请求、一个WPFLock请求、一个WFPOpen请求、一个WFPRegister请求、一个WFPSetTraceLevel请求、一个WFPUnloadService请求和一个WFPUnlock请求。
67.根据权利要求66的系统,其特征在于,服务提供程序访问WFPCancelAsyncRequest请求的请求参数的装置还包括访问hService参数和reqID参数中至少一个参数的装置。
68.根据权利要求66的系统,其特征在于,服务提供程序访问WFPClose请求的请求参数的装置还包括访问一个hService参数、一个hWnd参数和一个reqID参数中的至少一个的步骤。
69.根据权利要求66的系统,其特征在于,服务提供程序访问WFPDeregister请求的请求参数的装置还包括访问一个hService参数、一个dwEventClass参数、一个hWndReg参数、一个hWnd参数和一个reqID参数中的至少一个的装置。
70.根据权利要求66的系统,其特征在于,服务提供程序访问WFPExecute请求的请求参数的装置还包括访问一个hService参数、一个dwCommandData参数、一个IpCommandData参数、一个dwTimeOut参数、一个hWnd参数和一个reqID参数中的至少一个的装置。
71.根据权利要求66的系统,其特征在于,服务提供程序访问WFPGetInfo请求的请求参数的装置还包括访问一个hService参数、一个dwCagegory参数、一个IPQueryDetails参数、一个dwTimeOut参数、一个hWnd参数和一个reqID参数中的至少一个的装置。
72.根据权利要求66的系统,其特征在于,服务提供程序访问WFPOpen请求的请求参数的装置还包括访问一个hService参数、一个IpszLogicalName参数、一个hApp参数、一个IpszApplicationID参数、一个dwTraceLevel参数、一个dwTimeOut参数、一个hWnd参数、一个reqID参数、一个hPprovider参数、一个dwSPVersionsRequired参数、一个IpSPIVersion参数、一个dwSrvcVersionsRequired参数和一个IpSrvcVersion参数中的至少一个的装置。
73.根据权利要求66的系统,其特征在于,服务提供程序访问WFPRegister请求的请求参数的装置还包括访问一个hService参数、一个dwEventClass参数、一个hWndReg参数、一个hWnd参数和一个reqID参数中的至少一个的装置。
74.根据权利要求66的系统,其特征在于,服务提供程序访问WFPSetTraceLevel请求的请求参数的装置还包括访问hService和dwTraceLevel参数中的至少一个的装置。
75.一种方法,用于在一个自助式交易终端上用服务提供程序框架获得至少一种设备服务,其特征在于,包括以下步骤所述自助式交易终端应用程序接收数据,说明需要实现从一组设备功能中选择出来的一个交易终端设备功能,这一组设备功能包括一个存款机功能、一个打印机功能、一个读卡机功能、一个安全门功能、一个自动付款机功能和一个触摸屏功能;所述交易终端应用程序向中心交易终端监视和管理应用程序软件的一个较低层进行子程序调用,从一个服务提供程序请求获得设备服务;XFS管理程序将较低层上的子程序调用转换成一个功能类请求,作为进入所述服务提供程序的一个入口点,供所述服务提供程序处理,这一功能请求是从一组功能请求中选择出来的,这一组功能请求包括一个WFPCancelAsyncRequest请求、一个WFPClose请求、一个WFPDeregister请求、一个WFPExecute请求、一个WFPGetInfo请求、一个WPFLock请求、一个WFPOpen请求、一个WFPRegister请求、一个WFPSetTraceLevel请求、一个WFPUnloadService请求和一个WFPUnlock请求;和所述服务提供程序将所述功能类请求的一个结果返回给所述应用程序。
全文摘要
一种方法和系统,用于利用一个服务提供程序框架获得ATM设备服务,其中数据是由一个ATM应用程序收到的,这个ATM应用程序发出一个请求给一个XFS管理程序,以获得所述ATM设备服务。这一XFS管理程序将这一子程序调用转换成到所述服务提供程序的一个入口点,供所述服务提供程序处理,并启动跟所述请求有关的一个请示对象。在处理完这一请求以后,所述服务提供程序将这一结果返回给所述ATM应用程序。
文档编号G07F19/00GK1305148SQ0013281
公开日2001年7月25日 申请日期2000年11月1日 优先权日1999年11月1日
发明者迈克尔·杰伊·金 申请人:城市集团发展中心有限公司