发明内容
本发明实施例提供一种跨进程交互方法及装置,实现银行自助设备内运行的多套应用***间的跨进程交互。
为此,本发明实施例提供如下技术方案:
一种跨进程交互方法,所述方法用于控制银行自助设备内运行的至少两套应用***间的设备控制权的切换,所述方法包括:
接收具有设备控制权的应用***的切换请求,对共享内存进行加锁操作后,向所述应用***发送切换响应;
接收所述应用***发送的切换指令,所述切换指令包含目标应用***的属性信息;
将所述属性信息写入所述共享内存,并对所述共享内存进行解锁操作后,将设备控制权切换到具有所述属性信息的目标应用***。
优选的,将设备控制权切换到具有所述属性信息的目标应用***,具体包括:
向所述银行自助设备内运行的所有应用***广播控制权切换消息;
接收每个应用***发送的确认信息,所述确认信息包含该应用***的属性信息;
如果确认信息中的应用***的属性信息与所述目标应用***的属性信息相同,则判定该应用***为目标应用***,向其返回切换信息,使所述目标应用***获得所述设备控制权。
优选的,将设备控制权切换到具有所述属性信息的目标应用***,具体包括:
根据所述属性信息查找并调用所述目标应用***,使所述目标应用***获得所述设备控制权。
优选的,所述属性信息包括应用***的地址和/或应用***的服务类型。
优选的,所述对共享内存进行加锁操作,具体包括:将所述共享内存的状态标识更改为被占用状态,以防止其它应用***同时请求向所述共享内存写入切换的目标应用***;
所述对共享内存进行解锁操作,具体包括:将所述共享内存的状态标识更改为未被占用状态。
一种跨进程交互装置,所述装置用于控制银行自助设备内运行的至少两套应用***间的设备控制权的切换,所述装置包括:
第一接收单元,用于接收具有设备控制权的应用***的切换请求;
加锁单元,用于在所述接收单元接收到所述切换请求后,对共享内存进行加锁操作后,并向所述应用***发送切换响应;
第二接收单元,用于接收所述应用***发送的切换指令,所述切换指令包含目标应用***的属性信息;
写操作单元,用于将所述属性信息写入所述共享内存;
解锁单元,用于对所述共享内存进行解锁操作;
切换单元,用于在解锁操作之后,将设备控制权切换到具有所述属性信息的目标应用***。
优选的,所述切换单元具体包括:
广播单元,用于向所述银行自助设备内运行的所有应用***广播控制权切换消息;
第三接收单元,用于接收每个应用***发送的确认信息,所述确认信息包含该应用***的属性信息;
切换子单元,用于在确认信息中的应用***的属性信息与所述目标应用***的属性信息相同时,判定该应用***为目标应用***,向其返回切换信息,使所述目标应用***获得所述设备控制权。
优选的,所述切换单元,具体用于根据所述属性信息查找并调用所述目标应用***,使所述目标应用***获得所述设备控制权。
优选的,所述加锁单元,具体用于更改所述共享内存的状态标识为被占用状态,以防止其它应用***同时请求向所述共享内存写入切换的目标应用***。
优选的,所述解锁单元,具体用于更改所述共享内存的状态标识为未被占用状态。
本发明实施例跨进程交互方法及装置,在需要切换设备控制权时,先由具有设备控制权的应用***进行切换请求,触发跨进程交互装置对共享内存进行加锁操作,确保当前只有一个应用***可对共享内存执行写操作,然后将具有设备控制权的应用***欲切换到的目标应用***的属性信息写入共享内存,并对共享内存进行解锁操作后,将设备控制权移交到目标应用***,实现本发明实施例在不同应用***间的跨进程交互。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
为了实现银行通过自助设备为持卡用户提供多种类型服务的目的,可在自助设备内运行至少两套应用***,每套应用***用于为用户提供不同类型的服务。为了保证运行在自助设备内的至少两套应用***可以有序的通过自助设备的软硬件资源为用户提供良好的服务,可按照本发明实施例提供的方法实现两套应用***间的跨进程交互,一套应用***可以看做为一个进程,跨进程交互即两套应用***间的交互,更进一步的是指设备控制权在两套应用***间的移交。
如图1所示,示出了本发明实施例跨进程交互方法的流程图,包括以下步骤:
步骤101,接收具有设备控制权的应用***的切换请求,对共享内存进行加锁操作后,向所述应用***发送切换响应。
在需要跨进程交互时,具有设备控制权的应用***先向跨进程交互装置发送切换请求,触发装置按照本发明实施例提供的方法进行控制权切换。
当自助设备内运行有至少两套应用***时,不同应用***均可向跨进程交互装置发送切换请求,对共享内存执行写操作。为了避免至少两套应用***同时向共享内存写数据,出现写入冲突情况,跨进程交互装置在接收到应用***发送的切换请求后,先判断当前是否有其它应用***正在向共享内存写入数据,如果判断结果为是,则发送切换请求的应用***不能向共享内存写数据,直至共享内存被解锁;如果判断结果为否,则说明发送切换请求的应用***此时可对共享内存执行写操作,但是,在执行写操作之前,跨进程交互装置要先对共享内存进行加锁操作,禁止其它应用***向共享内存写入数据,然后再向发送切换请求的应用***返回切换响应,通知应用***可进行下述控制权切换的步骤。
作为本步骤中对共享内存进行加锁操作的一种实现方式,可以为共享内存设置一个状态标识,并通过更改状态标识的方式实现对共享内存的加锁或解锁。如果状态标识“1”表示共享内存被占用,“0”表示共享内存未被占用,则在跨进程交互装置获取到“0”时,就可判定其能对共享内存执行写操作,同时还要将状态标识“0”更改为“1”实现对共享内存的加锁操作,这样,其它应用***再获取共享内存的状态标识时,只能读取到代表共享内存被占用的标识“1”,这就可禁止其它应用***向共享内存写入数据。
本步骤即是在具有设备控制权的应用***要移交控制权时,向跨进程交互装置发送的切换请求。
对于设备控制权的移交时机来说,可以是具有设备控制权的应用***(以下称“当前应用***”)主动请求进行控制权切换,也可以是当前应用***在人为控制的情况下被动进行控制权切换。例如,自助设备内运行有3套应用***,应用***A用于提供票务服务,应用***B用于提供购物服务,应用***C用于提供支付服务,当前应用***为A,则当用户通过A预定票务后,想要通过C进行费用支付,则要将控制权切换到C,这种从A切换到C的过程即是应用***主动进行控制权切换的过程,完成切换后,当前应用***则为C。如果用户完成费用支付后,看见自助设备的显示屏上显示有购物***B的切换入口,若用户想要通过B享受购物服务,则要手动控制将控制权切换到B,这种因为用户操作导致的从C到B的切换过程即是应用***被动进行控制权切换的过程。
步骤102,接收所述应用***发送的切换指令,所述切换指令包含目标应用***的属性信息。
如果当前应用***接收到跨进程装置返回的切换响应,则说明其现在可以进行控制权切换,向装置发送切换指令,通知装置本次想要切换到哪个应用***。
以上述主动切换的过程为例,若要将控制权从A切换到C,则应用***A发送给装置的切换指令为Change To C,其中C即为目标应用***;以上述被动切换的过程为例,若要将控制权从C切换到B,则应用***C发送给装置的切换指令为Change To B,其中B表示目标应用***。
需要说明的是,所述属性信息可包括应用***的地址和/或应用***的服务类型(例如金融服务、购物服务、票务预订服务、打印服务等类型),且属性信息与应用***间为一一对应关系,这样,在接收到当前应用***发送的属性信息后,跨进程交互装置就可以根据属性信息知晓本次切换的目标应用***。
步骤103,将所述属性信息写入所述共享内存,并对所述共享内存进行解锁操作后,将设备控制权切换到具有所述属性信息的目标应用***。
将切换指令中包含的目标应用***的属性信息写到共享内存,并在结束对共享内存的写操作之后,对共享内存进行解锁操作,释放当前应用***对共享内存的独占权。同样地,可按照上述更改状态标识的方式解锁共享内存,即将状态标识从“1”更改为“0”,这样,其它应用***就可以继续申请向共享内存中写数据。
将目标应用***写入共享内存后,就可以实现控制权的切换,具体地,可体现为以下两种方式:
一种方式是,通过广播的方式通知应用***控制权发生变化。具体体现为:
(1)向所述银行自助设备内运行的所有应用***(具体是指所有已在跨进程交互装置注册的应用***,所谓已注册是指应用***已将其属性信息发送到装置保存)广播控制权切换消息,通知所有应用***共享内存(具体指共享内存中写入的数据)发生了变化。
需要说明的是,控制权切换消息仅用于向应用***广播内存发生了变化,而不会直接将写到内存的数据(即目标应用***的属性信息)广播给应用***知晓。
(2)接收每个应用***发送的确认信息,所述确认信息包含该应用***的属性信息;如果确认信息中的应用***的属性信息与所述目标应用***的属性信息相同,则判定该应用***为目标应用***,向其返回切换信息,使所述目标应用***获得所述设备控制权。
接收到广播信息的应用***,均会向装置发送一个确认信息,一是为了响应装置发送的广播信息,二是为了询问装置本次切换的目标应用***是否针对自己。
因为跨进程交互装置知晓当前应用***想要切换的目标应用***的属性信息,因此,装置就可以根据不同应用***返回的确认信息(具体是根据确认信息中包含的属性信息),从中确定出哪个是要切换的目标应用***,并通过向目标应用***返回切换消息的方式,向其移交设备控制权;对于其它发送确认信息的应用***,装置仅向其返回等待消息即可。具体地,装置是通过比对确认信息中的应用***属性信息与目标应用***属性信息,来确定哪个是本次要切换的目标应用***。
一种方式是,通过调用的方式通知应用***控制权发生变化。具体体现为:根据所述属性信息查找并调用所述目标应用***,使所述目标应用***获得所述设备控制权。
因为跨进程交互装置知晓当前应用***想要切换的目标应用***的属性信息,因此装置就可以根据属性信息查找要切换的目标应用***,并通过直接调用目标应用***的方式,向其移交设备控制权。由于本方式直接通过调用的方式启动目标应用***,而无需等待设备内运行的应用***返回确认信息,因此可以大大提高本发明实施例的控制权切换效率。
仍以上述主动切换和被动切换的过程为例,参见图2,示出了切换过程的信令图。
第一部分,对于从应用***A切换到应用***C的过程,可包括以下步骤:
步骤201,用户通过应用***A预定票务后,按照自助设备的提示,就会进入费用支付环节,此时,***A作为当前应用***就要向跨进程交互装置发送切换请求,申请进行控制权切换。
步骤202,跨进程交互装置接收到切换请求后,则获取共享内存当前的状态标识,如果为表示未被占用的标识“0”,则对共享内存进行加锁操作,即将状态标识更改为“1”;如果为已被占用的标识“1”,则等待共享内存被解锁(即状态标识被更改为“0”)后,再对共享内存进行加锁操作。
步骤203,进行加锁操作后,装置向***A返回切换响应,通知***A目前已为控制权切换做好了准备,***A可继续执行切换操作。
步骤204,***A向装置发送“Change To C”,其中Change表示切换动作,C为切换参数,表示要切换的目标应用***,此处可具体体现为***C的地址信息。在用户根据自助设备的提示选择进行交易支付时,***A就获知了其本次要切换的目标应用***为C,在接收到切换响应后,直接将包含***C的地址信息的切换指令发送给装置,由装置将***C的地址信息写入到共享内存。
步骤205,装置对共享内存执行解锁操作,即将状态标识置为“0”,这样其它的应用***就可以通过装置对共享内存执行写操作。
步骤206,装置分别向应用***B和应用***C发送广播,通知***B和C共享内存中写入的数据发生了变化,然后等待每个接收到广播消息的应用***向其返回确认信息。
步骤207,装置接收***B发送的包含其地址信息的确认信息,并在确认该地址信息与***A请求切换的地址信息不同时,向***B返回等待信息。
步骤208,装置接收***C发送的包含其地址信息的确认信息,并在确认该地址信息与***A请求的地址信息相同时,向***C返回切换信息,从而将设备控制权移交给应用***C,由其为用户提供费用支付服务。
需要说明的是,对于***C提供的支付服务来说,可能会出现三种情况,如果是支付取消情况或者支付确认情况的话,在完成取消或确认动作后,***C还要将设备控制权移交回***A,由***A继续完成其为用户提供的票务预订服务;如果是支付退出情况的话,***C则会继续保留其对设备的控制权。
第二部分,对于从应用***C切换到应用***B的过程,可包括以下步骤:
步骤209,在***C持有设备控制权的情况下,如果用户通过点击触摸显示屏上的切换入口,想要进入购物应用***B,则***C会向跨进程交互装置发送切换请求。
如上所述,在跨进程交互装置接收到切换请求后,会通过执行步骤210实现对共享内存的加锁,并在加锁完成后通过步骤211向***C返回切换响应。
步骤212,装置接收***C发送的切换指令“Change To B”,并将目标应用***B的地址信息写入共享内存。在用户点击切换入口时,***C就获知了用户想要切换的目标应用***为B,在接收到切换响应后,就可直接将包含目标应用***B的地址信息的切换指令发送给装置。
为了提高应用***的切换效率,在步骤213对共享内存进行解锁操作之后,可以执行步骤214由装置根据***B的地址信息直接调用目标应用***B,从而将设备控制权移交给***B,由其为用户提供购物服务。
如图3所示,示出了本发明实施例跨进程交互装置的示意图,所述装置用于控制银行自助设备内运行的至少两套应用***间的设备控制权的切换,包括:
第一接收单元301,用于接收具有设备控制权的应用***的切换请求。
加锁单元302,用于在所述接收单元接收到所述切换请求后,对共享内存进行加锁操作后,并向所述应用***发送切换响应;
具体地,加锁单元可以通过更改所述共享内存的状态标识为被占用状态的方式,来防止其它应用***同时请求向所述共享内存写入切换的目标应用***。
第二接收单元303,用于接收所述应用***发送的切换指令,所述切换指令包含目标应用***的属性信息。其中,属性信息可包括应用***的地址和/或应用***的服务类型,且属性信息与应用***间为一一对应关系。
写操作单元304,用于将所述属性信息写入所述共享内存。
解锁单元305,用于对所述共享内存进行解锁操作;
具体地,解锁单元可以通过更改所述共享内存的状态标识为未被占用状态的方式,解锁共享内存。
切换单元306,用于在解锁操作之后,将设备控制权切换到具有所述属性信息的目标应用***。
具体地,切换单元306可采用以下两种方式实现:
参见图4所示,示出了切换单元的一种实现示意图,可包括:
广播单元401,用于向所述银行自助设备内运行的所有应用***广播控制权切换消息;
第三接收单元402,用于接收每个应用***发送的确认信息,所述确认信息包含该应用***的属性信息;
切换子单元403,用于在确认信息中的应用***的属性信息与所述目标应用***的属性信息相同时,判定该应用***为目标应用***,向其返回切换信息,使所述目标应用***获得所述设备控制权。
在这种切换方式下,设备内运行的所有应用***在接收到广播信息后,都需要返回一个确认信息,并以此询问目前要切换的目标应用***是否针对自己,如果针对,则在接收到切换子单元返回的切换信息后,该***就获得了设备控制权,可以为用户提供相应的服务。
进一步地,为了提高本发明实施例控制权切换的效率,还可提供了切换单元的另一种实现方式,在该方式下,切换单元根据所述属性信息查找所述目标应用***,并通过直接调用所述目标应用***的方式,将设备控制权切换到目标应用***。
本发明方案可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序单元。一般地,程序单元包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明方案,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序单元可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。