公开/公告号CN103745540A
专利类型发明专利
公开/公告日2014-04-23
原文格式PDF
申请/专利权人 中国银行股份有限公司;
申请/专利号CN201410020542.5
发明设计人 范啸风;
申请日2014-01-16
分类号G07F19/00(20060101);
代理机构11225 北京金信立方知识产权代理有限公司;
代理人黄威;胡上海
地址 100818 北京市西城区复兴门内大街1号
入库时间 2024-02-19 23:23:46
法律状态公告日
法律状态信息
法律状态
2016-06-22
授权
授权
2014-05-21
实质审查的生效 IPC(主分类):G07F19/00 申请日:20140116
实质审查的生效
2014-04-23
公开
公开
技术领域
本发明涉及计算机应用系统,更具体的,涉及一种商业银行应用系统中利用状态 机原理来进行信息状态自动转换的方法及一种银行业务状态机自动处理系统。
背景技术
随着市场经济的不断发展和信息技术革命的冲击,银行业的服务方式和服务手段 面临一场深刻的变革,银行业务和信息技术日益融合,新型的现代化商业银行计算机 应用系统越来越成为各商业银行经营管理和业务运作的核心基础设施和最重要的竞 争工具。
在商业银行应用系统中,各类的信息状态的转换、处理业务量相当庞大,是影响 业务流程、程序逻辑的关键元素。大多应用系统为信息状态与程序耦合度非常高。应 用系统中状态很多,业务状态之间的变化、控制也很复杂,增加一个状态、修改一个 状态涉及面会很广。增加了开发的复杂度,也给维护、测试带来极大不便。
本发明利用了状态机理论。状态机理论最初的发展在数字电路设计领域。后来经 过逐步的发展,发现很多分析、设计、编程都可以借助于状态机来实现。在处理随机 事件上,状态机有很大的优势。对应用系统信息状态建立一套有向图形,由一组节点 和一组转移函数组成。状态机通过响应一系列事件而“运行”。这些节点通常情况下 是所谓的“状态”,状态间的转换由一系列事件等触发,同时可能还会有各种条件的 限定。这些节点中至少有一个必须是终态。当到达终态,状态机停止。
发明内容
本发明基于上述问题,结合计算机科学中状态机原理,设计出一个独立的子系统, 对涉及的信息状态进行拓扑分析,通过参数配置,实现状态对程序的透明化,联机程 序中不再出现具体的某个状态,全部通过状态表来实现状态的可配置。这样,应用程 序就不再关心执行完交易后记录会变成什么状态,只需要关心自身执行的是什么操作 (Event),通过操作码到状态表中读取应当跳转的下一状态,实现应用系统信息状态 的转换和信息处理流程的自动化调度。
具体地,本发明采用了如下的技术方案:
一种银行业务状态机自动处理系统,该系统包括:状态表维护单元,所述状态表 维护单元在状态表中预置各项银行业务的状态记录,所述记录至少包括:所述银行业 务对应的当前状态和下一状态;状态检测单元,所述状态检测单元在银行业务到达时 自动检测所述银行业务的当前状态;记录查找单元,所述记录查找单元根据检测得出 的所述银行业务的所述当前状态,在所述状态表中查找相应的记录,并获取所述记录 中的下一状态;和状态更新单元,所述状态更新单元修改所述银行业务的所述当前状 态为所述记录中的下一状态。
作为优选的另一方案,在所述状态表中预先存储银行业务为“经办操作”,当前 状态为“未处理”并且下一状态为“待复核”的记录;银行业务为“经办操作”到达 时,所述经办操作的当前状态为“未处理”时,修改所述经办操作的所述当前状态为 “待复核”。
作为优选的另一方案,在所述状态表中的所述记录还包括:所述银行业务的执行 条件;所述状态检测单元在银行业务到达时自动检测所述银行业务的当前状态及执行 条件;所述记录查找单元根据检测得出的所述银行业务的所述当前状态及所述执行条 件,在所述状态表中查找相应的记录,并获取所述记录中的下一状态;和所述状态更 新单元修改所述银行业务的所述当前状态为所述记录中的下一状态。
作为优选的另一方案,在所述状态表中预先存储银行业务为“入账操作”,执行 条件为“空”,当前状态为“未处理”并且下一状态为“未明”的记录;在所述状态 表中预先存储银行业务为“入账操作”,执行条件为“操作成功”,当前状态为“未明” 并且下一状态为“已入账”的记录;在所述状态表中预先存储银行业务为“入账操作”, 执行条件为“操作失败”,当前状态为“未明”并且下一状态为“未处理”的记录; 所述银行业务为“入账操作”时,所述入账操作的当前状态为“未处理”,如果执行 条件为“空”,修改所述入账操作的所述当前状态为“未明”;所述银行业务为“入账 操作”时,所述入账操作的当前状态为“未明”,如果执行条件为“操作成功”,修改 所述入账操作的所述当前状态为“已入账”;所述银行业务为“入账操作”时,所述 入账操作的当前状态为“未明”,如果执行条件为“操作失败”,修改所述入账操作的 所述当前状态为“未处理”。
作为优选的另一方案,在所述状态表中的所述记录还包括:所述银行业务的触发 条件及触发动作;所述系统还包括:条件触发控制单元,在所述状态更新单元修改完 成所述银行业务的所述当前状态为所述记录中的下一状态后,若所述条件触发控制单 元检测到所述触发条件满足,则执行所述触发动作。
作为优选的另一方案,在所述状态表中预先存储银行业务为“入账操作”,执行 条件为“操作成功”,当前状态为“未明”,下一状态为“已入账”,触发条件为“报 文状态是已发回执”,并且触发动作为“已发回执冲正”的记录;在所述状态表中预 先存储银行业务为“冲正操作”,执行条件为“操作失败”,当前状态为“未明”,下 一状态为“已入账”,触发条件为报文状态是“已发回执”,并且触发动作为“已发回 执冲正”的记录;所述银行业务为“入账操作”时,所述入账操作的当前状态为“未 明”,如果执行条件为“操作成功”,修改所述入账操作的所述当前状态为“已入账”, 若此时所述触发条件满足“报文状态是已发回执”,则执行“已发回执冲正”操作; 所述银行业务为“冲正操作”时,所述入账操作的当前状态为“未明”,如果执行条 件为“操作失败”,修改所述入账操作的所述当前状态为“已入账”,若此时所述触发 条件满足“报文状态是已发回执”,则执行“已发回执冲正”操作。
作为优选的另一方案,在所述状态表中的所述记录中还存储有所述触发动作的类 型和子程序代码;若所述条件触发控制单元检测到所述触发条件满足,则根据所述触 发动作类型及子程序代码执行触发动作。
一种银行业务信息状态自动转换方法,包括:所述信息状态预先设置并存储于可 配置的状态表中;根据事件的当前状态,从所述状态表中读取所述事件的下一状态; 修改所述事件的记录状态为下一状态。
作为优选的另一方案,当所述事件为“经办操作”,当前状态为“未处理”时, 修改所述事件的记录状态为“待复核”。
作为优选的另一方案,在所述状态表中,还预先设置并存储执行条件;根据所述 事件的当前状态和执行条件,从所述状态表中读取所述事件的下一状态;修改所述事 件的记录状态为下一状态。
作为优选的另一方案,若所述事件为“入账操作”,当前状态为“未处理”,执行 条件为“空”时,修改所述事件的记录状态为“未明”;若所述事件为“入账操作”, 当前状态为“未明”,执行条件为“操作成功”时,修改所述事件的记录状态为“已 入账”;若所述事件为“入账操作”,当前状态为“未明”,执行条件为“操作失败” 时,修改所述事件的记录状态为“未处理”。
作为优选的另一方案,在所述状态表中,还预先设置并存储触发条件及触发动作; 修改所述事件记录状态后,若触发条件满足,则执行触发动作。
作为优选的另一方案,当执行“入账操作”成功,记录状态修改为“已入账”时, 若所述触发条件满足“报文状态是已发回执”,则执行“已发回执冲正”操作;当执 行“冲正操作”失败,记录状态修改为“已入账”时,若所述触发条件满足“报文状 态是已发回执”,则执行“已发回执冲正”操作。
作为优选的另一方案,在所述状态表中,还预先设置并存储所述触发动作的类型 和子程序代码;若所述触发条件满足,则根据所述触发动作类型及子程序代码执行触 发动作。
根据上述技术方案的分析可知,使用本发明中的系统和方法,具有如下有益的技 术效果:
1、状态对程序透明,联机程序中不再出现具体的某个状态,全部通过状态表来 实现状态的可配置;
2、应用程序不必关心执行交易后记录会变成什么状态,只需要关心自身执行的 操作,简化程序,利于维护。
附图说明
图1是一种单进单出状态机。
图2是一种单进多出状态机(1)。
图3是一种单进多出状态机(2)。
图4是一种条件触发事件状态机。
图5是根据一实施例,单进单出业务场景图。
图6是根据一实施例,单进多出业务场景图。
图7是根据一实施例,条件触发事件业务场景图。
图8是根据一实施例,层次状态机示意图。
图9是根据本发明银行业务状态机自动处理系统的模块图。
图10是根据本发明银行业务状态机自动处理系统的流程图(1)。
图11是根据本发明银行业务状态机自动处理系统的流程图(2)。
图12是根据本发明银行业务状态机自动处理系统的流程图(3)。
具体实施例
为了使本发明更加清楚明白,下面我们结合实施例,参照附图,对本发明做进一 步的详细说明。
在图示中,
→表示迁入路径;
表示迁出路径;
表示条件分支。
本发明应用系统中常用的典型状态机模型可以归纳为以下3种。
1、单进单出模型
图1表示的是一种单进单出状态机。当前状态是S0时,下一状态为S1。可以将 其抽象成二维模型,如表1所示。
表1单进单出模型
2、单进多出模型
图2表示的是一种单进多出状态机(1)。当前状态S0时,若为事件E1,则跳转 至S1状态,若为事件E2,则跳转至S2状态。此时二维模型如表2所示。
表2单进多出模型(1)
图3表示的是另一种单进多出状态机(2)。当前状态S0,同样是事件E0,当为 条件G1时,跳转至状态S1,当为条件G2时,跳转至状态S2。此时二维模型如表3 所示。
表3单进多出模型(2)
3、条件触发事件模型
图4表示的是一种条件触发事件状态机。其中,当前状态为S0,遇到当前事件 E1,条件G1时,跳转至状态S1,此时若条件G2成立,则执行动作A1。其对应的 二维模型如表4所示。
表4条件触发事件模型
下面,将前述的典型状态机与商业银行中的业务系统(以下简称二代支付系统) 的实际场景相对应,详细说明本发明的具体实施方式。
前述状态机二维模型即为实现状态配置的码表,在本发明中定义为状态表。
以跨行汇款贷记业务为例,其基本的业务流程为:
首先,由柜员进行“经办”,即基本业务要素的前端录入,后台此时进行入账处 理。
然后,由另一名柜员进行“复核”,即对关键业务要素进行二次录入,防止金额、 收款人账号等录入出错。对于复核中发现经办有误的业务,退至"经办修改”状态, 由经办柜员进行修改正确后,再次复核,或由经办柜员决定删除此笔交易,重新录入。
第一步入账过程是与入账系统的异步过程,因此存在因通讯问题无法获知入账结 果(入账未明)的情况,此时需要通过“异常处理”步骤进行入账未明的查询调整。
图5所示为根据一个实施例,单进单出的业务场景图。该实施例是单进单出模型 在二代支付系统中的一个应用,即柜员进行“经办”操作的应用。当前状态为未处理 时,执行经办操作,调用经办程序,记录状态变为待复核。状态表相应记录如表5 所示,此时无条件限制,条件一栏为空。
表5单进单出业务状态表记录
事件码Event的值,需要事先约定好,并且保存在业务主表中,供后续的不明调 整/异常处理程序使用。可能一支程序对应一个Event,也可能一支程序中会用到两个 Event,或者多个程序对应同一个Event,将各种业务场景梳理清晰,画出状态图,状 态表也就能按状态图配置好了。
在该实施例的经办程序中,执行完具体操作,需要更新记录状态时,不用在程序 中指明要更新成哪种状态,而是根据Event栏位的值和条件Guard到状态表中读取下 一状态,执行类似如下的SQL语句,将NextState的值直接赋给业务状态栏位:
SELECT NextState
INTO TABLE-NextState
FROM状态表
WHERE Event=‘经办’AND
Guard=‘NULL’
MOVE TABLE-NextState TO RRM-RETSTS.
对于单进多出模型,最典型的应用莫过于入账及入账前准备,如图6所示,表示 的是单进多处业务场景图。当前状态为未处理,执行入账操作,先将记录状态更新 为未明(同时更新此记录Event栏位的值),调用核心入账,若核心返回成功,更新 状态为已入账,若核心返回失败,更新状态为未处理。状态表相应记录如表6所示, 其中用NULL来表示入账前准备时的下一状态。
表6单进多出业务状态表记录
不明调整程序只需要取出记录的Event值,再根据核心返回的成功/失败结果,到 状态表中查找到相应记录,就可以将记录更新成NextState栏位中保存的状态。因此, 不明调整的流程就会非常清晰,不明状态只有一个很简单的“未明”,不会分出类似 “挂账未明”、“入账未明”、“退汇未明”、“冲正未明”等很多未明状态,也不用像以 前一样判断当前状态是什么、用很多的if else来决定不明调整后的下一状态。
参见图7,表示的是根据一个实施例,条件触发事件业务场景图。当满足一定条 件时,需要执行一个动作的业务场景。如图中所示,其中涉及到的操作有两个,一个 是入账,一个是冲正。
1、当收到一笔借记来报,执行入账操作时发生未明,不明调整时,发现原入账 操作成功,正常情况下,应该将该记录更新成“已入账”。但是若此时借记回执已经 发送了,那么该记录必须要冲正,且必须冲正成功。
2、借记来报目前提供当日冲正功能,冲正发生未明,不明调整时,发现原冲正 交易失败,正常情况下,应该将该记录更新成“已入账”。但是若此时借记回执已经 发送了,那么该记录必须要冲正,且必须冲正成功。
综合这两种情况,为满足业务需要,增加一个Event——已发回执冲正,在不明 调整时,若回执已发送,则将该记录Event值更新成“已发回执冲正”,同时读取状 态表中“已发回执冲正”的“当前状态”栏位,将该记录业务状态更新成此值。状态 表中维护记录如表7所示。
在具体程序中,当取出的状态表记录Action不为空时,判断当前报文状态是否与 状态表中维护的报文状态一致,若一致,则将该记录Event值更新为Action的值,取 出该Action成功或失败分支的State值赋给该记录的业务状态栏位。
表7报文状态“已发回执”时,执行已发回执冲正的状态表记录
对于目前的支付系统来说,状态和操作非常有限,相应的状态图也很简单、有限, 用到的只是状态机理论中最基本的东西。有些系统比如外币,不像二代支付系统这样 一笔分录对应一个业务状态,有多笔分录的情况,这种情况可以用层次状态机来解决。 还有的情况可以把后续操作与条件触发事件都综合到状态表中来配置。
二代支付系统中,有的报文完成入账或不明调整后,需要LINK或START发报 程序、子程序等,这种类似操作也可以维护到状态表中,实现配置,如表8所示。
表8执行已发回执冲正的扩展配置状态表记录
如表8中第二条记录所示,入账成功分支,ActionType和ActionCode不为空,此 时执行状态表中维护的操作,即:LINK PROG1程序。第五条记录类似,START PROG2 程序。
不同的情况需要具体分析,根据需要,可以灵活的配置各种业务场景和操作。
更复杂的状态机还包括层次状态机。它是指在状态机中有嵌套,一个上层状态会 对应几个小状态,这几个小状态之间又有状态变化的关系,这种小状态的变化对上层 状态没有影响。比如外币系统中,一笔报文可能涉及4、5套分录,其中任何一套分 录状态未明,报文状态都是“入账未明”。此时“报文状态”就是“分录状态”的上 层,分录状态机与报文状态机之间有唯一的入口和出口,简单的状态机图如图8所示, 具体场景还需要具体分析。
图9所示为银行业务状态机自动处理系统的模块图,图10-12所示为银行业务状 态机自动处理系统的流程图。下面结合附图对本发明的银行业务状态机自动处理系统 的实现方法和流程进行说明。
本发明的银行业务状态机自动处理系统包括下列模块:状态表维护单元,所述状 态表维护单元在状态表中预置各项银行业务的状态记录,所述记录至少包括:所述银 行业务对应的当前状态和下一状态;状态检测单元,所述状态检测单元在银行业务到 达时自动检测所述银行业务的当前状态;记录查找单元,所述记录查找单元根据检测 得出的所述银行业务的所述当前状态,在所述状态表中查找相应的记录,并获取所述 记录中的下一状态;和状态更新单元,所述状态更新单元修改所述银行业务的所述当 前状态为所述记录中的下一状态。
状态表中的信息根据金融行业中的各项业务流程设置。例如,在所述状态表中预 先存储银行业务为“经办操作”,当前状态为“未处理”并且下一状态为“待复核” 的记录。银行业务为“经办操作”到达时,所述经办操作的当前状态为“未处理”时, 修改所述经办操作的所述当前状态为“待复核”。
另外,在所述状态表中的所述记录还可以包括所述银行业务的执行条件。所述状 态检测单元在银行业务到达时自动检测所述银行业务的当前状态及执行条件;所述记 录查找单元根据检测得出的所述银行业务的所述当前状态及所述执行条件,在所述状 态表中查找相应的记录,并获取所述记录中的下一状态;和所述状态更新单元修改所 述银行业务的所述当前状态为所述记录中的下一状态。
例如,在所述状态表中预先存储银行业务为“入账操作”,执行条件为“空”, 当前状态为“未处理”并且下一状态为“未明”的记录;在所述状态表中预先存储银 行业务为“入账操作”,执行条件为“操作成功”,当前状态为“未明”并且下一状态 为“已入账”的记录;在所述状态表中预先存储银行业务为“入账操作”,执行条件 为“操作失败”,当前状态为“未明”并且下一状态为“未处理”的记录;
所述银行业务为“入账操作”时,所述入账操作的当前状态为“未处理”,如果 执行条件为“空”,修改所述入账操作的所述当前状态为“未明”;
所述银行业务为“入账操作”时,所述入账操作的当前状态为“未明”,如果执 行条件为“操作成功”,修改所述入账操作的所述当前状态为“已入账”;
所述银行业务为“入账操作”时,所述入账操作的当前状态为“未明”,如果执 行条件为“操作失败”,修改所述入账操作的所述当前状态为“未处理”。
另外,在所述状态表中的所述记录还可以包括所述银行业务的触发条件及触发 动作。所述自动处理系统还包括:条件触发控制单元,在所述状态更新单元修改完成 所述银行业务的所述当前状态为所述记录中的下一状态后,若所述条件触发控制单元 检测到所述触发条件满足,则执行所述触发动作。
例如,在所述状态表中预先存储银行业务为“入账操作”,执行条件为“操作成 功”,当前状态为“未明”,下一状态为“已入账”,触发条件为“报文状态是已发回 执”,并且触发动作为“已发回执冲正”的记录;在所述状态表中预先存储银行业务 为“冲正操作”,执行条件为“操作失败”,当前状态为“未明”,下一状态为“已入 账”,触发条件为报文状态是“已发回执”,并且触发动作为“已发回执冲正”的记录;
所述银行业务为“入账操作”时,所述入账操作的当前状态为“未明”,如果执 行条件为“操作成功”,修改所述入账操作的所述当前状态为“已入账”,若此时所述 触发条件满足“报文状态是已发回执”,则执行“已发回执冲正”操作;
所述银行业务为“冲正操作”时,所述入账操作的当前状态为“未明”,如果执 行条件为“操作失败”,修改所述入账操作的所述当前状态为“已入账”,若此时所述 触发条件满足“报文状态是已发回执”,则执行“已发回执冲正”操作。
此外,在所述状态表中的所述记录中还可以存储有所述触发动作的类型和子程 序代码。若所述条件触发控制单元检测到所述触发条件满足,则根据所述触发动作类 型及子程序代码执行触发动作。
本发明通过实施上述系统和方法,结合计算机科学中状态机原理,对涉及的信息 状态进行拓扑分析,通过参数配置,实现状态对程序的透明化,联机程序中不再出现 具体的某个状态,全部通过状态表来实现状态的可配置。这样应用程序就不再关心执 行完交易后记录会变成什么状态,只需要关心自身执行的是什么操作(Event),通过 操作码到码表中读取应当跳转的下一状态,实现应用系统信息状态的转换和信息处理 流程的自动化调度。
以上所述仅为本申请的优选实施例而已,对于本领域技术人员来说,本申请可以 有各种更改和变化。凡在本申请的发明精神和原则之内,所做的任何修改、等同替换、 改进等,均应包含在本申请的保护范围之内。
机译: 用有限状态机操作自动化设备的方法,该状态机使用映射单元转换状态信息
机译: 信息处理设备,信息处理系统,自动文本转换方法和自动文本转换程序
机译: 用于远程维护和将软件下载到构成自动控制系统一部分的电子电路板上的系统,具有状态机,该状态机可独立于电路板处理器使用以简化维护