基于业务组件化的应用软件进行业务控制的方法和系统 【技术领域】
本发明涉及软件工程领域,尤其涉及基于业务组件化的应用软件进行业务控制的方法和系统。
背景技术 基于业务组件化开发方法进行应用软件的开发是行业应用软件构造新方法,这种方法的基本实施过程是根据应用软件待实现功能确定所述功能对应的业务流程拓扑;根据所述业务流程拓扑确定当前业务流程所需的业务组件及各个业务组件之间的连接关系;在获取当前业务流程所需的业务组件后,根据所述连接关系组装所述业务组件以形成与所述待实现功能对应的应用软件。这里,业务组件具有业务含义,可以直接表达业务概念,满足了应用软件的业务需求。
基于业务组件化开发方法进行应用软件开发时,构成应用软件的业务组件之间功能独立,没有直接的业务联系。应用软件的业务组件之间静态业务逻辑关系通过业务流程拓扑确定,在应用软件运行时业务组件之间执行时序关系需要通过具有调度能力的系统来调度。
发明人通过研究发现,由于构成应用软件的业务组件之间在功能是独立的,所以它们对于数据库的访问是随机的,多个业务组件在业务执行过程中会频繁并发访问同一数据库,这样就造成多个并行运行的业务组件竞争访问统一资源的情况,极易造成数据库过载甚至死锁。
发明内容 有鉴于此,本发明实施例的目的在于提供一种基于业务组件化的业务控制方法和系统,从根本上解决数据库过载甚至死锁问题。
为实现上述目的,本发明实施例提供了如下技术方案:
一种基于业务组件化的应用软件进行业务控制的方法,包括:
根据渠道发送的业务连接请求获取一数据缓冲区,所述业务连接请求中携带有业务功能标识,所述业务包括银行核心业务;其中,渠道是指与应用软件 在业务功能上相关联的外部系统,用于向应用软件发起业务功能请求;
根据所述业务功能标识获取业务对应的动作顺序表;
根据所述动作顺序表从渠道获取第一业务数据,并从数据库中获取第二业务数据;
将所述第一业务数据和所述第二业务数据存入所述数据缓冲区;
在所述业务对应的各个业务组件利用所述数据缓冲区存储的第一业务数据和第二业务数据执行相关业务功能后,根据所述动作顺序表将所述数据缓冲区中内容发生变化的第一业务数据和第二业务数据反馈给渠道,并写入数据库。
可选地,上述方法还包括:
释放所述数据缓冲区,以供其他业务使用。
所述数据缓冲区包括子缓冲区、缓冲元数组和数据元链表,其中,
所述子缓冲区中记录业务功能标识,占用的缓冲元个数以及其使用的缓冲元在所述缓冲元数组中的位置;
所述缓冲元数组记录的是各个数据元链表访问地址的指示信息;
所述数据元链表记录的是所述的第一业务数据和第二业务数据。
所述业务对应的各个业务组件利用所述数据缓冲区存储的第一业务数据和第二业务数据执行相关业务包括:
所述业务对应的各个业务组件通过所述数据缓冲区的接口对所述数据缓冲区中存储的第一业务数据和第二业务数据进行读取和/或写入操作。
根据所述动作顺序表从数据库中获取第二业务数据具体为:
根据所述动作顺序表一次性从数据库中获取第二业务数据。
根据所述动作顺序表将发生变化的第二业务数据写入数据库,具体为:
根据所述动作顺序表将发生变化的第二业务数据一次性写入数据库。
一种基于业务组件化的应用软件进行业务控制的系统,包括:
第一获取单元,用于根据渠道发送的业务连接请求获取一数据缓冲区,所述业务连接请求中携带有业务功能标识,所述业务包括银行核心业务;
第二获取单元,用于根据所述业务功能标识获取业务对应的动作顺序表;
第三获取单元,用于根据所述动作顺序表从渠道获取第一业务数据,并从数据库中获取第二业务数据;
第一写入单元,用于将所述第一业务数据和所述第二业务数据存入所述数据缓冲区;
第二写入单元,在所述业务对应的各个业务组件利用所述数据缓冲区存储的第一业务数据和第二业务数据执行相关业务后,将发生变化的第一业务数据和第二业务数据反馈给渠道,并写入数据库。
可选地,上述系统还包括:
释放单元,用于释放所述第一获取单元获取的所述数据缓冲区,以供其他业务使用。
所述数据缓冲区包括子缓冲区、缓冲元数组和数据元链表,其中,
所述子缓冲区中记录业务功能标识,占用的缓冲元个数以及其占有的缓冲元在所述缓冲元数组中的位置;
所述缓冲元数组记录的是各个数据元链表访问地址的指示信息;
所述数据元链表记录所述的第一业务数据和第二业务数据。
可见,在本发明实施例中,根据业务功能标识获取动作序列表,根据所述动作序列表将执行该业务所需的业务数据都存入获取的数据缓冲区中,该业务对应的业务组件在执行业务时直接对该数据缓冲区中数据进行操作,同时,在业务执行完毕后,将发生变化了的业务数据写入至数据库或者反馈给渠道,从根本上避免了各个业务组件对数据库的直接访问,从而从根本上解决了数据库过载甚至死锁问题。
【附图说明】
图1为本发明一实施例所提供的方法的流程图;
图2为本发明实施例所提供的数据缓冲区的示意图;
图3为本发明一实施例所提供的场景的示意图;
图4为本发明另一实施例所提供的方法的流程图;
图5为本发明一实施例所提供的系统的结构示意图。
【具体实施方式】
本发明实施例公开了基于业务组件化的应用软件进行业务控制的方法和系统,为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
图1为本发明一实施例所提供的方法,包括:
S101,根据渠道发送的业务连接请求获取一数据缓冲区,所述业务连接请求中携带有业务功能标识。
其中,渠道是指与当前应用软件在业务功能上相关联的外部系统,用于向应用软件发起业务连接请求。以银行核心业务系统为例,发起个人存款业务功能的渠道可以是银行前台柜面的操作人员,也可以是银行ATM取款机,还可以是网上银行系统。
数据缓冲区的结构可以参见图2。数据缓冲区包括子缓冲区、缓冲元数组以及数据元链表。其中,子缓冲区包括子缓冲区名称,该子缓冲区包含的缓冲元个数以及各个缓冲元在缓冲元数组中的位置指示。缓冲元数组记录的是各个数据元链表访问地址的指示信息;数据元链表记录的是第一业务数据和第二业务数据。
一般子缓冲区名称与该子缓冲区存储的业务功能标识相同,用来标明该子缓冲区所记录的业务功能。业务功能标识的作用即用来区别不同的业务功能,可以是业务功能编号或者业务功能名称。图2中用业务功能编号标识不同的业务功能。
图2中以金融行业中的个人账户取款业务,编号为1131为例对数据缓冲区各个部分进行了说明。子缓冲区1的名称为1131,则说明该子缓冲区记录的是业务功能编号为1131的业务功能。缓冲元个数为2,说明该业务功能在该缓冲区的缓冲元数组中对应两个缓冲元,1和10则说明前述两个缓冲元中的第一个访问地址由位于缓冲元数组的第1位所指向,另一个的访问地址由位于缓冲元数组的第10位所指向。
S102,根据所述业务功能标识获取业务功能对应的动作顺序表。
不同的业务功能标识对应了不同的业务功能,每一个业务功能都有一个与 之对应的动作顺序表。该动作顺序表预先存储在本地系统中,可以通过业务功能标识在本地系统中查找获得。
动作顺序表中包含一个业务功能在运行时刻所执行的动作步骤,以及每一个步骤对应的程序接口。所以根据所述动作顺序表可以获取完成当前业务功能所需要的外部数据和内部数据。
以业务功能编号为1131的个人账户取款业务为例,该业务功能对应的动作顺序表中指定的动作步骤包括:调用1131读数据包,调用1131读数据库,调用1131业务程序,调用1131写数据包,调用1131写数据库。
S103,根据所述动作顺序表从渠道获取第一业务数据,并从数据库中获取第二业务数据。
其中,分别用第一业务数据和第二业务数据来标识从渠道和数据库中获得的与当前业务功能的实现相关的数据。
仍然以业务功能编号为1131的个人账户取款业务为例,此时,通过执行动作顺序表中的“调用1131读数据包”步骤从渠道获得第一业务数据,包括账号、密码、金额等信息;通过执行动作顺序表中的“调用1131读数据库”步骤从本地数据库中获得第二业务数据,包括账号、户名、账户余额、币种、密码等信息。动作顺序表中,不同的业务功能标识对应的步骤涉及不同的业务数据。
S104,将所述第一业务数据和所述第二业务数据存入所述数据缓冲区。
S105,所述业务功能对应的各个业务组件利用所述数据缓冲区存储的第一业务数据和第二业务数据执行相关业务功能。
S106,根据所述动作顺序表将所述缓冲区中内容发生变化的第一业务数据和第二业务数据反馈给渠道,并写入数据库。
该业务功能相关的业务组件利用数据缓存区中的第一业务数据和第二业务数据执行完相关操作后,可能会改变所述第一业务数据或者第二业务数据,所以需要将所述缓冲区中内容发生变化的第一业务数据和第二业务数据反馈给渠道,并写入数据库,这样才能保证渠道数据的一致性和数据库数据的同步性。
仍然以业务功能编号为1131的个人账户取款业务为例,假设该业务功能为从个人账户中取款1000元,该账户的账户余额会发生变化,此时执行动作顺序表中的“调用1131写数据包”步骤,将变化后的账户余额信息反馈给渠道;执行动作顺序表中的“调用1131写数据库”步骤,根据账号将账户余额信息写入数据库。
可选地,为了避免缓存区被无效占用,提高缓存区的利用率,本发明实施例所提供的方法还包括:
S107,释放所述数据缓冲区,以供其他业务功能使用。
本发明实施例所提供的方法,根据业务功能标识获取动作序列表,根据所述动作序列表将执行该业务功能所需的业务数据都存入获取的数据缓冲区中,该业务功能对应的业务组件在执行业务功能时直接对该数据缓冲区中数据进行操作,同时,在业务功能执行完毕后,将发生变化了的业务数据写入至数据库或者反馈给渠道,从根本上避免了各个业务组件对数据库的直接访问,从而从根本上解决了数据库过载甚至死锁问题。
此外,本发明实施例所提供的方法,在业务功能执行前将所需的业务数据都存入数据缓冲区,在业务功能执行后将变化了的业务数据写入数据库或者返回给渠道,业务功能相关的各个业务组件直接对所述数据缓冲区进行操作,避免了各个业务组件与数据库之间频繁的交互过程,从而进一步提高了业务处理的效率。
为使本发明实施例所提供的方法更加清晰明了,下面以金融行业中个人账户取款业务(业务功能编号为1131)为例,对本发明实施所提供的方法进行说明。
图3为本发明实施例所应用的场景的示意图,其中,业务支持系统301为本发明实施例所提供的方法的执行主体,业务功能程序302为当前应用软件的业务功能实体,其中包含多个业务组件。数据库303是当前应用软件使用的内部数据存储管理系统。渠道304则是当前应用软件在业务功能上相关联的外部系统,在本发明实施例提供的个人账户取款业务中,该渠道可以为ATM自动取款机。
可选地,为了将具体的业务功能实现与接口相分离,渠道、数据库和业务功能程序可以分别提供访问接口,分别是渠道接口304‑I/O、数据库接口303‑I/O和业务功能程序接口302‑I/O,这三个接口在概念上与软件工程领域通用的应用程序编程接口(API,Application Programming Interface)是一致的,在这种结构模式下,业务支持系统通过与这些实体的接口通讯实现对实体的访问和控制。
参见图4,在图3所示的场景中,本发明实施例所提供的方法包括:
S401,业务支持系统根据渠道发送的个人账户取款业务连接请求获取一数据缓冲区,所述业务连接请求中携带有业务功能编号1131。
业务支持系统一直处于监听连接状态,当渠道发起一个业务功能时,通过渠道接口向运行时支持系统发起业务连接请求,运行时支持系统响应连接,开始工作。具体包括根据该业务连接请求获取一个空白的,可用的数据缓冲区。
S402,业务支持系统根据所述业务功能编号1131获取业务功能对应的动作顺序表。
在该业务支持系统调用系统级初始化程序,完成一些基本的系统初始化功能后,根据该业务功能标识进行查找,找到它对应的动作顺序表。
S403,业务支持系统执行动作顺序表中的“调用1131读数据包”步骤从渠道获得第一业务数据,执行动作顺序表中的“调用1131读数据库”步骤从本地数据库中获得第二业务数据。
具体地,业务支持系统根据该动作顺序表从渠道(如ATM取款机)获取当前业务功能所需要的第一业务数据,包括账号、密码、金额等信息;从当前业务支持系统所连接的数据库中一次性获取当前业务功能所需要的相关第二业务数据,包括账户余额、币种、密码等信息。
S404,业务支持系统将所述第一业务数据和所述第二业务数据存入所述数据缓冲区。
数据缓冲区的具体结构参见图2,从图2中可以看出,第一业务数据包括:账号:1234;取款金额:1000.00以及密码。第二业务数据则包括:余额:16050.00;币种:人民币以及户名:张春礼。
需要说明的是,实际应用中,一个业务功能可能对应于多个子缓冲区,但是无论一个业务功能所包含的子缓冲区的个数是多少,每个子缓冲区的结构都是相同的。
S405,业务支持系统调度执行个人账户取款业务程序,该业务程序的各业务组件利用所述数据缓冲区存储的第一业务数据和第二业务数据执行相关业务功能。
S406,业务支持系统执行动作顺序表中的“调用1131写数据包”步骤将账户余额反馈给渠道;并通过执行动作顺序表中的“调用1131写数据库”步骤,根据账号将账户余额信息写入数据库。
执行完相关业务功能后,账户余额由16050.00变成了15050.00,第二业务数据有变化,需要将该业务数据写入数据库。因为第二业务数据发生了变化,为了使该数据保持同步,还需要将变化的第二业务数据反馈给渠道(ATM自动取款机),供操作人员或者用户阅览。
实际应用中,业务支持系统根据具体业务功能的执行结果确定发生变化的业务数据,反馈给渠道和/或写入数据库。
S407,业务支持系统释放个人账户取款业务使用的数据缓冲区。
系统的缓冲区是有限的,为了提高缓冲区的利用率,当一业务功能执行完毕后需要释放该业务功能使用的数据缓冲区,以便其他的业务功能申请使用。
本发明实施例所提供的方法,根据业务功能标识获取动作序列表,根据所述动作序列表将执行该业务功能所需的业务数据都存入获取的数据缓冲区中,该业务功能对应的业务组件在执行业务功能时直接对该数据缓冲区中数据进行操作,同时,在业务功能执行完毕后,将发生变化了的业务数据写入至数据库或者反馈给渠道,从根本上避免了各个业务组件对数据库的直接访问,从而从根本上解决了数据库过载甚至死锁问题。
参见图5,本发明实施例还提供一种基于业务组件化的应用软件进行业务控制的系统,包括:
第一获取单元501,用于根据渠道发送的业务连接请求获取一数据缓冲区,所述业务连接请求中携带有业务功能标识;
所述数据缓冲区包括子缓冲区、缓冲元数组和数据元链表,其中,
所述子缓冲区中记录业务功能标识,占用的缓冲元个数以及其占有的缓冲元在所述缓冲元数组中的位置;
所述缓冲元数组记录的是各个数据元链表访问地址的指示信息;
所述数据元链表记录的是所述的第一业务数据和第二业务数据。
第二获取单元502,用于根据所述业务功能标识获取业务功能对应的动作顺序表;
第三获取单元503,用于根据所述动作顺序表从渠道获取第一业务数据,并从数据库中获取第二业务数据;
第一写入单元504,用于将所述第一业务数据和所述第二业务数据存入所述数据缓冲区;
第二写入单元505,在所述业务功能对应的各个业务组件利用所述数据缓冲区存储的第一业务数据和第二业务数据执行相关业务功能后,将发生变化的第一业务数据和第二业务数据反馈给渠道,并写入数据库。
可选地,为了提高缓冲区的利用率,本发明实施例所提供的系统还包括:
释放单元,用于释放所述第一获取单元获取的所述数据缓冲区,以供其他业务功能使用。
实际应用中,所述业务控制系统可以是图3所示场景中的业务支持系统,该业务控制系统与周边设备实体的交互可以参见图4对应的方法描述。
本发明实施例所提供的系统,根据业务功能标识获取动作序列表,根据所述动作序列表将执行该业务功能所需的业务数据都存入获取的数据缓冲区中,该业务功能对应的业务组件在执行业务功能时直接对该数据缓冲区中数据进行操作,同时,在业务功能执行完毕后,将发生变化了的业务数据写入至数据库或者反馈给渠道,从根本上避免了各个业务组件对数据库的直接访问,从而从根本上解决了数据库过载甚至死锁问题。
此外,本发明实施例所提供的方法,在业务功能执行前将所需的业务数据都存入数据缓冲区,在业务功能执行后将变化了的业务数据写入数据库或者返回给渠道,业务功能相关的各个业务组件直接对所述数据缓冲区进行操作,避 免了各个业务组件与数据库之间频繁的交互过程,从而进一步提高了业务功能处理的效率。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。