一种基于cen/xfs的读卡类复合模块的并发调用方法

文档序号:1099033 发布日期:2020-09-25 浏览:9次 >En<

阅读说明:本技术 一种基于cen/xfs的读卡类复合模块的并发调用方法 (CEN/XFS-based concurrent calling method for card reading composite module ) 是由 余彬 刘艳兰 唐超 赵建青 于 2020-05-22 设计创作,主要内容包括:本发明公开了一种基于CEN/XFS的读卡类复合模块的并发调用方法,在复合模块与应用程序层之间设置复合SP服务和并列的N个子服务,且N个子服务分别与复合模块的N个子模块一一对应;并在N个SP子服务和复合SP服务中引入状态轮询机制和指令中断机制,状态轮询机制通过将当前读卡指令堵塞在介质状态循环检测流程里,只有在检测到介质时才将当前读卡指令直接发给复合SP服务执行,使复合SP服务收到多条并发读卡指令的顺序由用户放介质的顺序决定,解决支持介质状态检测的并发执行问题;指令中断机制则进一步用于解决不支持介质状态检测的并发执行问题,从而使应用程序层发送的当前读卡指令不会因未放入介质而影响到卡片关联业务的办理。(The invention discloses a CEN/XFS-based concurrent calling method for a card-reading composite module, wherein a composite SP service and N parallel sub-services are arranged between a composite module and an application program layer, and the N sub-services are respectively in one-to-one correspondence with the N sub-modules of the composite module; a state polling mechanism and an instruction interruption mechanism are introduced into the N SP sub-services and the composite SP service, the state polling mechanism blocks the current card reading instruction in a medium state circulation detection flow, and the current card reading instruction is directly sent to the composite SP service to be executed only when a medium is detected, so that the sequence of the composite SP service receiving a plurality of concurrent card reading instructions is determined by the sequence of the user placing the medium, and the problem of concurrent execution supporting medium state detection is solved; the instruction interrupt mechanism is further used for solving the problem that concurrent execution of medium state detection is not supported, so that the current card reading instruction sent by the application program layer cannot influence the handling of the card related service because the medium is not put in.)

一种基于CEN/XFS的读卡类复合模块的并发调用方法

技术领域

本发明涉及金融自助设备技术领域,尤其涉及一种基于CEN/XFS的读卡类复合模块的并发调用方法。

背景技术

WOSA(Windows Open System Architecture,Windows开放式系统体系结构),是微软公司提出的一种在Windows操作系统下的软件架构。WOSA/XFS(Windows Open SystemArchitecture/Extensions for Financial Services),又称CEN/XFS协议,是基于WOSA的扩展金融服务,是微软公司为全球金融行业软件提出的一种软件架构,它在WOSA软件架构的基础上针对全球金融行业进行了一些相应修改。

CEN/XFS协议为金融自助设备技术领域提供了一套标准的、统一的协议,是一个通用的、公开的协议,在金融自助设备技术领域已经被广泛使用。CEN/XFS协议的普及,为应用程序与设备之间的通讯提供了便利。

传统的金融自助设备,每个模块都有单独的硬件通讯接口,如图1实线框中的传统结构所示,模块与模块之间的通讯相互不受影响。但随着便携设备在近几年的迅速发展,金融领域业务设备在便携方面也逐步发力,出现了很多款便携性的终端设备。为了满足业务需求,硬件模块的集成化程度越来越高,在CEN/XFS协议中被定义为同类接口(CEN/XFS协议为不同类型的设备模块定义了对应的类接口,例如读卡模块采用IDC类,发卡模块采用CRD类,打印模块采用PTR类等等)的多个硬件模块逐步合并成了共用通讯端口的同类复合模块,如图1虚线框中的复合结构所示。

CEN/XFS协议在一定程度上解决了不同类复合模块的调用,但对于同类复合模块中各组成模块功能的并发调用并没有好的解决方案,导致上层应用无法完成同类复合模块功能的并发调用。因此,现有技术对同类复合模块各组成模块的并发调用,需要各组成模块的厂商自行处理。在本文中,所述的不同类复合模块,是指实现复合模块到不同类接口上的映射,例如读发卡器设备可映射到读卡模块(IDC类)和发卡模块(CRD类)的功能接口上,应用通过CEN/XFS协议IDC类和CRD类对应的接口,实现读发卡机功能的调用。所述的同类复合模块,是指实现复合模块到同类接口上的映射,例如读卡类复合模块可实现接触读卡器、非接触读卡器、刷卡器等多种读卡模块的功能,都是映射到IDC类的功能接口上。

复合模块的出现,在很大程度上使得金融自助设备便携化,但是如何确保上层应用从传统金融自助设备无缝切换到带复合模块的金融自助设备,完成金融自助设备的上层应用对复合模块中各组成模块的功能接口调用以实现业务场景,是目前亟待解决的问题。

发明内容

针对金融自助设备的上层应用由于无法对同类复合模块并发调用、导致上层应用无法正常运行的技术问题,本发明提供一种基于CEN/XFS的读卡类复合模块的并发调用方法,保证金融自助设备的上层应用正常运行。

为实现上述技术目的,本发明采用如下技术方案:

一种基于CEN/XFS的读卡类复合模块的并发调用方法,包括:

(1),在复合模块与应用程序层之间设置复合SP服务和并列的N个子服务,所述N个子服务分别与复合模块的N个子模块一一对应;

(2),SP子服务从应用程序层接收对应的读卡指令,通过复合SP服务设置相应的中断启动标识;其中,设当前接收到的读卡指令为当前读卡指令,接收到当前读卡指令的SP子服务为当前SP子服务;

(3),判断当前SP子服务是否支持介质状态检测:若支持,则当前SP子服务在检测到介质时,将当前读卡指令发送给复合SP服务;若不支持,则当前SP子服务直接将当前读卡指令发送给复合SP服务;

(4)、复合SP服务从SP子服务接收到当前读卡指令时,判断是否存在其他读卡指令:

若存在其他读卡指令,则通过指令中断机制判断其他读卡指令是否被当前读卡指令中断,若是则执行当前读卡指令,若否则在执行其他读卡指令后再执行当前读卡指令;

若不存在其他读卡指令,则执行当前读卡指令;

复合SP服务将当前读卡指令的执行结果反馈给SP子服务;

(5)、当前SP子服务若支持介质状态检测,则在接收到执行结果后,通过复合SP服务设置相应的中断关闭标识,当前读卡指令执行结束;

当前SP子服务若不支持介质状态检测,且当前读卡指令的执行结果为未被中断,则在接收到执行结果后,通过复合SP服务设置相应的中断关闭标识,当前读卡指令执行结束;

当前SP子服务若不支持介质状态检测,且当前读卡指令的执行结果为被中断,则在接收到执行结果后,由当前SP子服务重新将当前读卡指令发送给复合SP服务。

在有并发功能需求的场景下,当前SP子服务若支持介质状态检测,当用户未放介质(介质在本发明中具体指卡)时,将当前读卡指令堵塞在介质状态循环检测流程里,而不会直接将当前读卡指令直接发给复合SP服务执行,使复合SP服务收到多条并发读卡指令的顺序由用户放介质的顺序决定,有效解决读卡类复合模块对于多条读卡指令的并发执行问题,从而使应用程序层发送的当前读卡指令不会因未放入介质而影响到卡片关联业务的办理。

在没有并发功能需求的场景下,复合SP服务同样可以单独为应用程序层提供读卡类复合模块功能调用。

在更优的技术方案中,所述通过指令中断机制判断其他读卡指令是否被当前读卡指令中断,若是则执行当前读卡指令,若否则执行其他读卡指令后再执行当前读卡指令,具体包括:

若当前读卡指令支持被中断,则获取其他读卡指令的中断标识状态和对应的介质状态,且在其他读卡指令的中断标识状态为真且存在对应的介质时,复合SP服务执行该其他读卡指令,否则复合SP服务执行当前读卡指令;

若当前读卡指令不支持被中断,则复合SP服务执行当前读卡指令。

若当前SP子服务不支持介质状态检测,而其他SP子服务支持介质状态检测,即使当前SP子服务在未知介质状态的情况下直接将当前读卡指令发送给了复合SP服务,但是复合SP服务会根据以下几点来综合判断优先执行其他读卡指令还是当前读卡指令:当前读卡指令是否支持被中断,其他SP子服务发送的读卡指令的中断标识状态以及介质状态。若优先执行其他读卡指令,当前SP子服务会根据复合SP服务对当前读卡指令反馈的执行结果,在下一个轮询重新发送当前读卡指令给复合SP。

在更优的技术方案中,所述N个SP子服务至少有1个支持介质状态检测。

在更优的技术方案中,所述其他读卡指令是指,除当前SP子服务之外的其他SP子服务在此之前从应用程序层接收,并发送给复合SP服务且未执行完的读卡指令。

在更优的技术方案中,所述当前读卡指令以及其他读卡指令是否支持被中断,根据对应的子模块的性质进行预先设置。

在更优的技术方案中,所述N个SP子服务包括:接触SP子服务、非接触SP子服务和刷卡SP子服务,对应的N个子模块包括:接触读卡模块、非接触读卡模块和刷卡模块。

在更优的技术方案中,每个SP子服务通过标准SP API接口与应用程序层建立连接,每个SP子服务通过标准SP API接口与复合SP服务建立连接,且N个SP子服务之间为相互独立的进程。

本技术方案无需修改标准SP API接口层和XFS管理层,能够兼容传统金融自助业务应用流程,可以实现应用的无缝切换,并且适用于Windows和Linux等多种操作系统。

有益效果

本发明的有效效果包括:

在有并发功能需求的场景下,当前SP子服务若支持介质状态检测,当用户未放介质(介质在本发明中具体指卡)时,将当前读卡指令堵塞在介质状态循环检测流程里,而不会直接将当前读卡指令直接发给复合SP服务执行,使复合SP服务收到多条并发读卡指令的顺序由用户放介质的顺序决定,有效解决读卡类复合模块对于多条读卡指令的并发执行问题,从而使应用程序层发送的当前读卡指令不会因未放入介质而影响到卡片关联业务的办理。在没有并发功能需求的场景下,复合SP服务同样可以单独为应用程序层提供读卡类复合模块功能调用。

若当前SP子服务不支持介质状态检测,而其他SP子服务支持介质状态检测,即使当前SP子服务在未知介质状态的情况下直接将当前读卡指令发送给了复合SP服务,但是复合SP服务会根据以下几点来综合判断优先执行其他读卡指令还是当前读卡指令:当前读卡指令是否支持被中断,其他SP子服务发送的读卡指令的中断标识状态以及介质状态,。若优先执行其他读卡指令,当前SP子服务会根据复合SP服务对当前读卡指令反馈的执行结果,在下一个轮询重新发送当前读卡指令给复合SP。

无需修改标准SP API接口层和XFS管理层,能够兼容传统金融自助业务应用流程,可以实现应用的无缝切换,并且适用于Windows和Linux等多种操作系统。

附图说明

图1为金融自助设备系统结构示意图;

图2为复合SP服务构造示意图;

图3为本发明实施例所述的并发调用系统结构示意图;

图4为本发明实施例所述的状态轮询机制流程图;

图5为本发明实施例所述的指令中断机制流程图;

图6为本发明实施例所述的由应用程序层同时发送3条读卡指令的流程示例图。

具体实施方式

下面对本发明的实施例作详细说明,本实施例以本发明的技术方案为依据开展,给出了详细的实施方式和具体的操作过程,对本发明的技术方案作进一步解释说明。

传统的金融自助设备系统各层次之间的关系,如图1所示,包括:应用程序层、标准SPAPI接口层、XFS管理层、设备SP服务、硬件模块。其中,应用程序层通过各模块功能组合,实现金融自助设备各业务流程;XFS管理层,指管理程序调度过程中的句柄、请求ID、消息分发、内存管理等管理控制层,负责调用相应厂商定制的设备SP服务程序;设备SP服务,是指通过标准SP API接口层从应用程序层接收执行指令,完成设备具体操作并返回执行结果的服务程序。

在现有技术中,复合SP服务可完成对复合硬件模块的直接调用及各子模块功能的分类导出,主要由逻辑层和驱动层组成,见图2。逻辑层实现复合模块中各子模块功能逻辑。所述的子模块指组成复合模块的各功能模块,比如读卡复合模块,包含接触读卡子模块、非接读卡子模块、刷卡子模块等。驱动层实现对硬件设备的直接操作。复合SP服务支持信息指令的立即响应,但不支持执行指令的立即响应,而需要顺序执行,等待上一条执行指令完成后,才能响应。由于读卡指令为执行指令,假如复合SP服务的接触逻辑对象接收了读卡指令A,然后复合SP服务的非接逻辑对象接收读卡指令B,当用户放入非接触卡片时,复合SP服务不会立即响应执行对非接触卡片的读卡指令,而需要用户***接触式卡片,完成接触式卡片的读取后,才能响应非接触卡片的读卡。这种读卡指令堵塞现象会导致应用程序层的业务无法正常运行。

本发明实施例中的硬件模块为由接触读卡子模块、非接读卡子模块和刷卡子模块组合得到的读卡类复合模块,本实施例方法首先将设备SP服务设置为复合SP服务和接触读卡SP子服务、非接读卡SP子服务、刷卡SP子服务这3个并列且独立的SP子服务,如图3所示,从而解决前述指出的读卡指令堵塞的问题。其中,接触读卡SP子服务、非接读卡SP子服务、刷卡SP子服务这3个SP子服务,分别与接触读卡子模块、非接读卡子模块和刷卡子模块这3个子模块一一对应。

完成上述在复合模块与应用程序层之间设置复合SP服务和并列的3个子服务后,每个SP子服务均可能随时收到来自应用程序层对应的读卡指令,因此为实现应用程序层对读卡类复合模块的并发调用,本实施例方法在复合SP服务和并列的3个子服务中引入状态轮询机制和指令中断机制,具体实现过程包括:

(2)、SP子服务从应用程序层接收对应的读卡指令,通过复合SP服务设置相应的中断启动标识;其中,设当前接收到的读卡指令为当前读卡指令,接收到当前读卡指令的SP子服务为当前SP子服务。

(3),判断当前SP子服务是否支持介质状态检测:若支持,则当前SP子服务在检测到介质时,将当前读卡指令发送给复合SP服务;若不支持,则当前SP子服务直接将当前读卡指令发送给复合SP服务。

(4)、复合SP服务从SP子服务接收到当前读卡指令时,判断是否存在其他读卡指令:

若复合SP服务判断当前还存在其他读卡指令,则进一步判断其他读卡指令是否被当前读卡指令中断:

若当前读卡指令支持被中断,则获取其他读卡指令的中断标识状态和对应的介质状态,且在其他读卡指令的中断标识状态为真且存在对应的介质时,复合SP服务执行该其他读卡指令,否则复合SP服务执行当前读卡指令;

若当前读卡指令不支持被中断,则复合SP服务执行当前读卡指令;

若复合SP服务判断当前不存在其他读卡指令,则执行当前读卡指令;

复合SP服务将当前读卡指令的执行结果反馈给SP子服务。

由于本实施例是为了解决应用程序层对复合模块的并发调用,复合SP服务可能在未执行完针对某个子模块的读卡指令时,又收到针对另一个子模块的读卡指令,因此本实施例设当前最新收到的任意读卡指令为当前读卡指令,当前未执行完的读卡指令为其他读卡指令,对每个当前读卡指令均按本实施例方法处理,进而实现应用程序层对读卡类复合模块的并发调用。

(5)、当前SP子服务若支持介质状态检测,则在接收到执行结果后,通过复合SP服务设置相应的中断关闭标识,当前读卡指令执行结束;

当前SP子服务若不支持介质状态检测,且当前读卡指令的执行结果为未被中断,则在接收到执行结果后,通过复合SP服务设置相应的中断关闭标识,当前读卡指令执行结束;

当前SP子服务若不支持介质状态检测,且当前读卡指令的执行结果为被中断,则在接收到执行结果后,由当前SP子服务重新将当前读卡指令发送给复合SP服务。

将以上实施例方法的实现过程,其实质是在N个SP子服务和复合SP服务中引入状态轮询机制和指令中断机制,状态轮询机制用于解决支持介质状态检测模块的并发执行问题,指令中断机制用于解决不支持介质状态检测模块的并发执行问题,如图3所示。

其中,如图4所示的状态轮询机制流程为:

步骤A1:SP子服务收到应用的读卡指令,发送中断启动标识A给复合SP服务,发送指令为信息指令,会被复合SP服务立即响应,设置给设备驱动对象;

步骤A2:判断子对象是否支持介质状态检测,若支持,执行步骤A3,反之,执行步骤A5;

步骤A3:向复合SP服务发起获取子对象状态信息的指令,并通过反馈的结果,判断用户是否放卡到子模块上;

步骤A4:若用户放卡,执行步骤A5,反之,执行步骤A3;

步骤A5:发送读卡指令A给复合SP服务;

步骤A6:复合SP服务收到读卡指令A后,判断当前是否存在其他执行指令(B\C\D)。

步骤A7:若存在,则通过指令中断机制判断当前被执行指令是否被读卡指令A中断,反之,执行步骤A9;

步骤A8:若当前执行指令被中断,开始执行步骤A9;反之,先完成当前指令的执行,再执行步骤A9;

步骤A9:执行读卡指令A,反馈执行结果给SP子服务。

步骤A10:判断子对象是否支持介质状态检测,若支持,发送中断关闭标识给复合SP服务,并完成指令返回;否则执行步骤A11;

步骤A11:判断反馈的执行结果是否为中断,若是,执行步骤A5。反之,发送中断关闭标识给复合SP服务,并完成指令返回。

从状态轮询机制流程的步骤A3和步骤A4可以看出,当客户未放卡时,所有的读卡指令均堵塞在状态检测的流程里,而不会下发读卡指令给复合SP服务,复合SP服务收到读卡指令的顺序则由用户放卡的顺序决定,不会影响到卡片关联业务的办理。

如图5所示的指令中断机制流程为:

步骤B1:SP子服务A接收到读卡指令,不支持介质状态检测,直接发送读卡指令A给复合SP服务。

步骤B2:复合SP服务接收到读卡指令A,根据每个子模块的逻辑对象设定的能力来判断该指令是否允许被中断。若允许,执行步骤B3。反之,执行步骤B5。所述的根据每个子模块的逻辑对象设定能力,可以根据模块特性确定,比如,非接读卡子模块的读卡指令被复合SP服务接收到,能力设定为不允许被中断;刷卡子模块的读卡指令被复合SP服务接收到,能力设定为允许被中断。

步骤B3:获取中断标识(B\C\D)状态和子对象(B\C\D)介质状态。其中的中断标识(B\C\D)状态由其他SP子服务(B\C\D)的指令来设置。

步骤B4:通过获取信息的判断,当中断启动标识为真且对应介质状态存在时,执行步骤B7。反之,执行步骤5。

步骤B5:执行子对象A的读卡动作。

步骤B6:判断读卡动作是否执行完成,若完成,执行步骤B7。反之,执行步骤B5。

步骤B7:SP子服务A收到复合SP服务反馈的执行结果后,判断指令是否被中断。若中断,执行步骤B1;反之,完成指令的执行。

假设SP子服务A不支持介质状态检测,SP子服务B/C/D均支持介质状态检测。由以上本实施例方法的实现过程可以得到,SP子服务A在用户没有放入介质前,其读卡指令A会在发送中断启动标识后即直接发送给复合SP服务程序;SP子服务B/C/D则会先发送中断启动标识给复合SP服务,然后进入到介质状态轮询检测阶段,等待用户放入其对应的介质后,再将其读卡指令B/C/D发送给复合SP服务程序。

假设当前SP子服务B最新接收到读卡指令B,此时复合SP服务存在读卡指令A,即读卡指令B为当前读卡指令,读卡指令A为其他读卡指令;此时SP子服务B会先发送中断标识给复合SP服务程序,然后进入到介质状态轮询检测阶段,等待用户放入其对应的介质。当用户放入其响应的介质后,复合SP服务程序根据中断标识B和介质状态B的反馈,将当前正在执行的读卡指令A中断,来响应读卡指令B。SP子服务A从复合SP服务接收到读卡指令A的读卡指令为被中断,会在下一个轮询,重新发送读卡指令A给复合SP服务,继续进行读卡。读卡指令B则会在读卡指令A重新发送前执行完成,将用户放入介质的卡信息反馈给应用程序层。

如图6所示对应的实施例,假设应用程序层同时对复合模块的各子服务发送读卡指令,应用程序层通过SP API接口层把所有读卡指令分别发送给对应的SP子服务。SP子服务通过复合SP服务提供标准SP API接口,完成设备的功能调用。3个SP子服务轮询监控介质状态,若存在介质,则通过标准SP API接口,发送读卡指令给复合SP服务。复合SP服务收到读卡指令后,完成对应子模块的读卡动作。优先被检测到的介质将优先完成读卡,即无论应用程序按哪种顺序调用各子模块对象的读卡指令,用户最先放入的介质将优先被读取。

以上实施例为本申请的优选实施例,本领域的普通技术人员还可以在此基础上进行各种变换或改进,在不脱离本申请总的构思的前提下,这些变换或改进都应当属于本申请要求保护的范围之内。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种电子信息读卡器识别装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!