首页> 中国专利> 用于生成业务规则模型的方法和装置

用于生成业务规则模型的方法和装置

摘要

本发明的各实施方式提供了用于生成业务规则模型的方法和装置。在本发明的一个实施方式中,提供了一种用于生成业务规则模型的方法,包括:从应用系统的源代码提取所述源代码所执行的业务流程,所述业务流程包括按顺序执行的多个业务过程;分析所述源代码中与所述多个业务过程中的各个业务过程相关联的部分,建立描述各个业务过程所遵循的业务规则的规则元数据;基于所述顺序和所述规则元数据生成描述所述业务流程所遵循的业务规则模型。在本发明的一个实施方式中,提供了一种用于生成业务规则模型的装置。采用本发明的方法和装置,可以在无需人工操作的情况下,自动地从应用系统的源代码中生成业务规则模型。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-10-09

    授权

    授权

  • 2016-03-16

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20140618

    实质审查的生效

  • 2016-02-17

    公开

    公开

说明书

技术领域

本发明的各实施方式涉及数据处理,更具体地,涉及从遗留 (legacy)应用系统生成业务规则模型(BusinessRuleModel)的方 法和装置。

背景技术

随着计算机技术的发展,应用系统的开发方式经历了诸多变化。 在早期开发的应用系统中,用于控制业务流程的控制规则通常与源 代码紧密耦合(例如,被嵌入在源代码中),这导致在应用系统开 发完成后并不能灵活地修改控制规则,进而造成应用系统的灵活性 较差。另外,计算机技术的发展还促进了编程语言的演变。较早的 编程语言(例如,COBOL语言、C语言等)大多采用面向过程的编 程模式,而近些年来主流编程语言(例如,C++语言、Java语言等) 均采用面向对象的编程模式。

在诸如电力、金融等行业中,存在使用早期编程语言开发的大 量遗留应用系统,并且这些遗留应用系统已经成为各个行业中的核 心系统。遗留应用系统的技术已经逐渐过时,并且开始逐渐被新技 术(例如,面向对象的编程模式)和新平台(云环境)取代。如何 针对早期开发的、其中控制规则与源代码紧密耦合的应用系统实现 改造(modernization),成为目前的一项关注的焦点。

在改造过程中,首先需要了解遗留应用系统的各项业务过程, 分析各项业务过程中所涉及的业务规则,之后基于业务规则实现遗 留应用系统的改造。现有的技术方案通常需要具有丰富编程经验的 技术人员人工读取遗留应用系统的源代码,进而获得相关的业务规 则。一方面,这需要大量的人力、物力和时间开销;另一方面,随 着编程语言的飞速发展,目前已经很难找到精通早期编程语言(例 如,COBOL语言)的技术人员。

因而,如何在无需人工操作的情况下,从遗留应用系统的源代 码生成业务规则模型成为应用系统改造中的一个关键问题。

发明内容

因而,期望开发一种能够自动地从遗留应用系统的源代码生成 业务规则模型的技术方案,期望生成的业务规则模型可以包括源代 码所执行的业务流程所遵循的各种规则,以便在后期处理中可以基 于业务规则模型实现对遗留应用系统的改造。

根据本发明的一个方面,提供了一种用于生成业务规则模型的 方法,包括:从应用系统的源代码提取源代码所执行的业务流程, 业务流程包括按顺序执行的多个业务过程;分析源代码中与多个业 务过程中的各个业务过程相关联的部分,建立描述各个业务过程所 遵循的业务规则的规则元数据;基于顺序和规则元数据生成描述业 务流程所遵循的业务规则模型。

在本发明的一个实施方式中,分析源代码中与多个业务过程中 的各个业务过程相关联的部分,建立描述各个业务过程所遵循的业 务规则的规则元数据包括:针对源代码中与多个业务过程中的各个 业务过程相关联的部分,基于源代码所引用的数据结构与业务流程 中的业务术语之间的映射关系,建立规则元数据。

在本发明的一个实施方式中,一种用于生成业务规则模型的装 置,包括:提取模块,配置用于从应用系统的源代码提取源代码所 执行的业务流程,业务流程包括按顺序执行的多个业务过程;建立 模块,配置用于分析源代码中与多个业务过程中的各个业务过程相 关联的部分,建立描述各个业务过程所遵循的业务规则的规则元数 据;生成模块,配置用于基于顺序和规则元数据生成描述业务流程 所遵循的业务规则模型。

在本发明的一个实施方式中,建立模块包括:第一建立模块, 配置用于针对源代码中与多个业务过程中的各个业务过程相关联的 部分,基于源代码所引用的数据结构与业务流程中的业务术语之间 的映射关系,建立规则元数据。

采用本发明所述的方法和装置,可以在无需人工干预的情况下, 自动地从应用系统的源代码中生成业务规则模型。进一步,可以使 用所生成的业务模型来验证源代码中是否存在冲突。更进一步,还 可以基于所生成的业务规则模型,辅助将遗留应用系统移至新的应 用环境。

附图说明

通过结合附图对本公开示例性实施方式进行更详细的描述,本 公开的上述以及其他目的、特征和优势将变得更加明显,其中,在 本公开示例性实施方式中,相同的参考标号通常代表相同部件。

图1示意性示出了适于用来实现本发明实施方式的示例性计算 机系统/服务器12的框图;

图2示意性示出了根据一个技术方案的遗留应用系统的源代码 的片段;

图3示意性示出了根据本发明一个实施方式的用于生成业务规 则模型的技术方案的框图;

图4示意性示出了根据本发明一个实施方式的用于生成业务规 则模型的方法的流程图;

图5示意性示出了根据本发明一个实施方式的包括规则分组的 业务规则模型的框图;

图6示意性示出了根据本发明有一个实施方式的业务规则模型 的框图;以及

图7示意性示出了根据本发明一个实施方式的用于生成业务规 则模型的装置的框图。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附 图中显示了本公开的优选实施方式,然而应该理解,可以以各种形 式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这 些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的 范围完整地传达给本领域的技术人员。

图1示出了适于用来实现本发明实施方式的示例性计算机系统/ 服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示 例,不应对本发明实施方式的功能和使用范围带来任何限制。

如图1所示,计算机系统/服务器12以通用计算设备的形式表现。 计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理 器或者处理单元16,系统存储器28,连接不同系统组件(包括系统 存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或 者存储器控制器,外围总线,图形加速端口,处理器或者使用多种 总线结构中的任意总线结构的局域总线。举例来说,这些体系结构 包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC) 总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及 外围组件互连(PCI)总线。

计算机系统/服务器12典型地包括多种计算机系统可读介质。这 些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包 括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介 质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计 算机系统/服务器12可以进一步包括其他可移动/不可移动的、易失 性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用 于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬 盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失 性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失 性光盘(例如CD-ROM,DVD-ROM或者其他光介质)读写的光盘驱 动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质 接口与总线18相连。存储器28可以包括至少一个程序产品,该程 序产品具有一组(例如至少一个)程序模块,这些程序模块被配置 以执行本发明各实施方式的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以 存储在例如存储器28中,这样的程序模块42包括——但不限于—— 操作系统、一个或者多个应用程序、其他程序模块以及程序数据, 这些示例中的每一个或某种组合中可能包括网络环境的实现。程序 模块42通常执行本发明所描述的实施方式中的功能和/或方法。

计算机系统/服务器12也可以与一个或多个外部设备14(例如 键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用 户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计 算机系统/服务器12能与一个或多个其他计算设备进行通信的任何 设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/ 输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过 网络适配器20与一个或者多个网络(例如局域网(LAN),广域网 (WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配 器20通过总线18与计算机系统/服务器12的其他模块通信。应当明 白,尽管图中未示出,可以结合计算机系统/服务器12使用其他硬件 和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单 元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储 系统等。

在下文中,将结合遗留应用系统的具体示例来阐明如何生成业 务规则模型。由于COBOL语言具有较强的稳定性,在诸如金融、电 力等行业中,早期的应用系统大都采用COBOL语言来开发。在本发 明的上下文中,将仅以利用COBOL语言开发的银行应用系统为具体 示例,示出如何实现本发明的技术方案。然而本领域技术人员应当 理解,本发明的技术方案并不局限于银行应用系统,也并不局限于 以COBOL语言开发,而是可以应用于以各种语言开发的各个行业的 应用系统。

为了更加清晰地示出本发明的技术方案,首先介绍在本发明的 上下文中涉及的技术术语的含义。

规则是指一系列特定的业务条件,或附属关系的策略、约束或 要求。具体而言,在银行的日常操作中,规则的一个示例可以是, 计算向用户收取的贷款利率的规则,该规则可以涉及多方面的内容, 例如贷款利率可以与贷款人的年龄、贷款金额等因素相关。规则的 另一示例可以是,计算转账手续费的规则,该规则可以涉及产品、 客户和地理位置等多方面。

由于业务具有复杂性,在执行业务流程时可能会涉及多个相关 联的规则,因而本发明还涉及规则分组的概念。规则分组是指包含 了一组要执行的规则的集合。当执行规则组时,应当按指定的顺序 执行规则组中的各个规则。

规则流是控制规则执行的方式,即,包括要执行哪些规则(组) 以及按什么顺序执行的规则(组),这些规则(组)前后相继地执 行,并且每个规则流都具有一个起点和至少一个终点。

图2示意性示出了根据一个技术方案的遗留应用系统的源代码 的片段200。图2所示的源代码片段实现计算向贷款人收取的利率的 业务流程,并且在该业务流程中基于贷款人的年龄和贷款金额来计 算利率。图2所示的源代码片段是基于COBOL语言编写的,并且在 该源代码片段中以附图标记210和220示出的两个“IF”语句分别 对应于业务流程中的两个业务规则。

附图标记210所示的“IF”语句用于判断贷款人的年龄是否大于 “65”岁,并且可以基于判断结果执行不同的步骤;附图标记220 所示的“IF”语句用于判断贷款金额和是否大于“1000000”元,并 且可以基于判断结果执行不同的步骤。在如图2所示的源代码片段 中,用于计算贷款利率的业务规则(例如,IF语句的判断条件“65” 和“1000000”)被嵌入到源代码中。然而随着银行应用系统改造以 及银行贷款规则的变化,期望从源代码中分离业务规则,并且进一 步,期望可以在无需重新编译源代码的情况下修改业务规则。例如 期望可以方便地将贷款人年龄的判断条件修改为“60”岁,等等。

尽管目前已经提出了在遗留应用系统的源代码中搜索诸如“IF” 语句等判断语句来获得业务规则的技术方案,这些技术方案仅仅能 够找到可能与业务规则相关联的潜在代码片段,然而在后期需要针 对找到的代码片段进行人工分析以获得业务规则。此外,这些技术 方案并不能获得所找到的代码片段之间的关系,因而也不可能获得 代码片段所对应的业务规则之间的关系。

针对现有技术方案中的不足,本发明提供了一种用于生成业务 规则模型的技术方案。图3示意性示出了根据本发明一个实施方式 的用于生成业务规则模型的技术方案的框图300。如图3所示,采用 本发明的技术方案,可以通过分析应用系统的源代码的主程序(例 如,MAIN-LOGIC)中对各个过程的调用(例如,PERFORM VALIDATION-MAXIMUMAGEREQ,以及PERFORMVALIDATION -MAXIMUMAMOUNT,等),来获得源代码所执行的业务流程。

接着,通过分析各个业务流程的源代码,可以建立各个业务流 程所遵循的业务规则的元数据。例如,规则元数据310可以对应于 源代码210,规则元数据320可以对应于源代码220。

继而,基于业务流程中的各个业务过程的执行顺序,可以生成 业务规则模型330。该业务规则模型330可以包括源代码片段所遵循 的规则(规则元数据310和规则元数据320),还可以包括各个规则 的执行顺序(如规则元数据310和320之间的箭头所示)。以此方 式,可以从应用系统的源代码中生成与源代码相关的业务流程所遵 循的业务规则模型。

具体地,在本发明的一个实施方式中,提供了一种用于生成业 务规则模型的方法,包括:从应用系统的源代码提取源代码所执行 的业务流程,业务流程包括按顺序执行的多个业务过程;分析源代 码中与多个业务过程中的各个业务过程相关联的部分,建立描述各 个业务过程所遵循的业务规则的规则元数据;基于顺序和规则元数 据生成描述业务流程所遵循的业务规则模型。

图4示意性示出了根据本发明一个实施方式的用于生成业务规 则模型的方法的流程图400。在步骤S402中,从应用系统的源代码 提取源代码所执行的业务流程,该业务流程包括按顺序执行的多个 业务过程。早期的编程语言通常是面向过程的语言,因而可以通过 分析应用系统的源代码的主程序中针对各个过程的调用来获取业务 流程。业务流程可以包括按顺序执行的多个业务过程,例如,对于 如图3所示的源代码的示例,业务流程可以包括以VALIDATION- MAXIMUMAGEREQ和VALIDATION–MAXIMUMAMOUNT表现 两个业务过程。在源代码涉及多个文件的情况下,还可以基于主程 序中的调用来在相应的文件中查找相关的业务流程。

在步骤S404中,分析源代码中与多个业务过程中的各个业务过 程相关联的部分,建立描述各个业务过程所遵循的业务规则的规则 元数据。在此步骤中,可以分别分析与VALIDATION- MAXIMUMAGEREQ和VALIDATION-MAXIMUMAMOUNT相关 联的源代码,并建立描述与VALIDATION-MAXIMUMAGEREQ和 VALIDATION–MAXIMUMAMOUNT相对应的业务过程所遵循的 业务规则的规则元数据。

具体而言,VALIDATION-MAXIMUMAGEREQ,需要满足如 图3中所示的“IF”语句210,而VALIDATION- MAXIMUMAMOUNT,需要满足如图3中所示的“IF”语句220。 本领域技术人员可以定义规则元数据的格式,只要该格式能够描述 源代码中与条件语句相关联的业务规则的含义即可。

在步骤S406中,基于顺序和规则元数据生成描述业务流程所遵 循的业务规则模型。由于已经知晓了业务流程中的各个业务过程的 执行顺序和各个业务过程相关联的规则元数据,因而可以按照执行 顺序来“组装”各个规则元数据,以便生成描述业务流程所遵循的 业务规则模型。本领域技术人员可以定义业务规则模型的数据格式, 举例而言,例如可以采用如图3所示的流程图的方式,或者还可以 基于XML语言、或者基于其他方式来存储业务规则模型。

在上文中,已经参见图3所示的源代码片段示意性示出了用于 生成业务规则模型的方法的概要步骤。在下文中,将参见银行应用 系统中用于计算转账手续费的源代码片段(如下文表1所示),进 一步示出用于生成业务规则模型的其他细节。

表1用于计算转账手续费的源代码片段

在上文表1所示的源代码片段中,当计算转账手续费时,需要 考虑三方面的信息:1)产品维度,即用户从哪种产品(活期产品/ 定期产品)中转账;2)客户维度,即用户是哪种类型的客户(个人、 普通客户/个人、VIP客户);以及3)位置维度,即转出银行与转 入银行的位置是否相同(同城/异地)。现在将参见上文表1所示的 源代码来描述本发明的实施方式的更多细节。

在本发明的一个实施方式中,从应用系统的源代码提取源代码 所执行的业务流程包括:基于源代码中的逻辑过程以及逻辑过程的 执行顺序以提取业务流程,其中业务流程中的业务过程对应于源代 码中的逻辑过程。

可以逐行分析源代码,以获取源代码中的逻辑过程以及逻辑过 程的执行顺序。具体而言,在上文表1所示的源代码中,在主逻辑 过程“0000-MAIN-PROCESS-RTN”中包括多个逻辑过程: “1000-SUB-LOGIC”、“1001-SUB-LOGIC”、…、以及 “3000-SUB-LOGIC”。此时,可以基于多个逻辑过程来提取业务过 程,具体地,逻辑过程“1000-SUB-LOGIC”对应于产品维度为“活 期”时应当执行的业务过程,逻辑过程“1001-SUB-LOGIC”对应于 产品维度为“定期”时应当执行的业务过程,等等。以此方式,可 以从应用系统的源代码提取源代码所执行的业务流程。

在本发明的一个实施方式中,分析源代码中与多个业务过程中 的各个业务过程相关联的部分,建立描述各个业务过程所遵循的业 务规则的规则元数据包括:针对源代码中与多个业务过程中的各个 业务过程相关联的部分,基于源代码所引用的数据结构与业务流程 中的业务术语之间的映射关系,建立规则元数据。

开发应用系统的过程是以编程语言(例如,COBOL语言)来描 述业务流程的过程,因而源代码中所引用的数据结构与业务流程中 的业务属于之间存在映射关系。基于两者之间的映射关系,可以明 确地了解源代码中的一个数据结构对应于哪个业务术语,因而可以 基于这种映射关系,在源代码与业务规则之间建立联系。

在下文表2中示意性示出了上文表1所示的源代码所引用的数 据结构的定义。在COBOL语言中,数据结构可以定义在 “COPYBOOK”文件中;当用户使用其他编程语言时,可以在其他 类型的文件中定义所使用的数据结构(例如,在C语言中,可以在 “.h”文件中定义数据结构)。

表2COPYBOOK文件的示例

在上文表2所示的COPYBOOK文件中,“02I-PRDTYPPIC X(9)”表示源代码中的数据结构的定义,而 “*SEMANTIC(/MODEL/product/type)”表示与该数据结构对应的 业务术语。具体而言,“I-PRDTYP”可以被映射至业务过程中的业 务术语“product/type”,即,表示产品类型的含义。又例如,“02 I-CUSTYPPICX(9)”与“customer/type”之间存在映射关系,即, 表示客户类型。又例如,“02CMFERAT1PICS9(13)V9(2) COMP-3”与“/fee/rate/product”之间存在映射关系,即,表示客户 维度费用优惠。又例如,“02I-CUSLEVPICX(9)”与 “customer/level”之间存在映射关系,即,表示客户等级,等等。

基于上文表1所示的源代码和表2所示的映射关系,可以建立 业务规则模型的框架,如下文表3所示。

表3业务规则模型的框架

本领域技术人员可以基于上文表3中所示的模型的架构,并且 通过分析与各个业务过程相关联的源代码,来自定义规则元数据的 数据结构。具体而言,目前已经基于COPYBOOK知晓了“I-PRDTYP” 对应于客户类型,例如可以从如下文表4所示的源代码片段建立元 数据。

表4源代码片段

表4的源代码表示如下规则:当产品类型为“活期”时,产品 维度费用优惠为100%。因而,针对表4所示的代码可以建立如表5 所示的规则元数据。本领域技术人员可以自定义规则元数据的格式, 只要能够描述规则即可。类似地,还可以针对其他代码建立其他的 规则元数据。

表5规则元数据示例

在上文中已经示意性示出了从源代码中与多个业务过程中的各 个业务过程相关联的部分来建立规则元数据的示例,在下文中将介 绍在多个业务过程之间存在关联关系时的具体操作。应用系统通常 需要满足复杂的业务规则,多个业务过程之间经常存在关联关系, 因而需要将存在关联关系的业务过程划分至相同的过程分组,并针 对该过程分组中的各个业务过程来建立规则元数据。

在本发明的一个实施方式中,针对源代码中与多个业务过程中 的各个业务过程相关联的部分,基于源代码所引用的数据结构与业 务流程中的业务术语之间的映射关系,建立规则元数据包括:识别 多个业务过程之间的关联关系以将多个业务过程划分为至少一个过 程分组;以及分析源代码中与至少一个过程分组中的各个过程分组 相关联的部分,基于映射关系建立与各个过程分组相关联的规则元 数据。

图5示意性示出了根据本发明一个实施方式的包括规则分组的 业务规则模型的框图500。在图5中,例如规则元数据310和320 分别来自于两个不同的业务过程,并且这两个业务过程之间存在关 联关系,此时可将这两个业务过程划分至相同的过程分组。相应地, 规则元数据310和320也位于相同的规则分组510。

具体而言,在上文表1所示的源代码中,逻辑过程 “2000-SUB-LOGIC”和“2001-SUB-LOGIC”均涉及基于客户维度 (包括客户类型(I-CUSTYP)和客户等级(I-CUSLEV)),来确 定相应的客户维度费用优惠,因而可以将对应于逻辑过程 “2000-SUB-LOGIC”和“2001-SUB-LOGIC”的两个业务过程划分 至相同的过程分组。

在上文表1所示的源代码中,计算转账手续费涉及到三方面的 内容:产品维度、客户维度和位置维度,因而可以基于这三个维度 来将业务过程划分为三个业务分组。具体地,图6示意性示出了根 据本发明有一个实施方式的业务规则模型的框图600。如图6所示, 业务规则模型可以包括三个规则分组,即,有关产品维度的规则分 组610、有关客户维度的规则分组620和有关位置维度的规则分组 630。进一步,有关产品维度的规则分组610包括两个规则:当产品 是活期产品时应当遵循的规则612、以及当产品是定期产品时应当遵 循的规则614。有关客户维度的规则分组620包括两个规则:当客户 是个人普通客户时应当遵循的规则622、以及当客户是个人VIP客户 时应当遵循的规则624。有关位置维度的规则分组630可以包括两个 规则:当转出银行与转入银行位于相同城市时应当遵循的规则632、 以及当转出银行与转入银行位于不同城市时应当遵循的规则634。通 过将业务过程划分分组,可以将各个业务过程应当遵循的业务规则 划分至相应的规则分组,因而可以清晰地定义规则元数据之间的层 次关系。

在本发明的一个实施方式中,分析源代码中与至少一个过程分 组中的各个过程分组相关联的部分,基于映射关系建立与各个过程 分组相关联的规则元数据包括:针对至少一个过程分组中的当前过 程分组,在源代码中与当前过程分组相对应的部分中查找执行语句 以获取段落关键字;基于关键字定位代码段落;以及基于映射关系, 解析代码段落以获得规则元数据。

对于以COBOL语言编写的源代码而言,可以在源代码中查找 “PERFORM”语句,并获取段落关键字(例如, “1000-SUB-LOGIC”),继而,可以基于“1000-SUB-LOGIC”找 到相对应的代码段落来用于后续的分析。

另外,本领域技术人员还应当注意,在源代码中还可能存在嵌 套调用的情况,例如,在逻辑过程“1000-SUB-LOGIC”中还可能通 过“PERFORM1002-SUB-LOGIC”语句调用另一逻辑过程 “1002-SUB-LOGIC”。此时可以采用类似方式通过查找“PERFORM” 语句,并获取进一步的段落关键字“1002-SUB-LOGIC”。

在本发明的一个实施方式中,其中基于映射关系,解析代码段 落以获得规则元数据包括:从代码段落获取条件语句以及与条件语 句相对应的动作语句;以及响应于条件语句与业务术语之间存在映 射关系,基于条件语句和动作语句形成规则元数据。

应当注意,由于业务流程中的业务规则在源代码中通常以条件 语句来表示,因而可以从相关代码段落中查找条件语句,来获得可 能与业务规则相关联的代码。具体而言,在以COBOL编写的源代码 中,条件语句可以以“IF…THEN…”的形式表示,因而例如可以采 用文本搜索的方式在相关代码段落中查找关键字“IF”和“THEN”。

在本发明的上下文中,可以将“THEN”之后的语句称为动作语 句,即,满足条件后应当执行的动作。此时,当条件语句与业务术 语之间存在映射关系时,可以基于条件语句和动作语句形成规则元 数据。

具体而言,当处理上文表4所示的源代码片段时,发现条件语 句“IFI-PRDTYPOFPCCMIRTA='活期'”以及动作语句“MOVE '100'TOCMFERAT1OFPCCMFEEA”,此时,可以建立如上文表 5所示的规则元数据。该规则元数据表示的含义是:如果产品类型是 “活期”,则将产品维度费用优惠的数值设置为100%。

类似地,本领域技术人员还可以通过处理其他源代码片段来建 立其他规则元数据。例如,继续上文的示例,可以处理与过程分组 相关联的源代码,并建立相应的规则元数据。例如,基于图6所示 的有关客户维度的规则分组620的源代码(如下文表6所示),可 以建立如下文表7所示的规则元数据。

表6源代码片段

表7规则元数据的示例

在上文中已经结合具体示例示出了如何生成规则元数据,可以 利用规则元数据来扩展上文表3所示的业务规则模型的框架,以便 获得最终的业务规则模型。具体而言,在处理如表1所示的源代码 后,可以生成如下文表8所示的业务规则模型。

表8业务规则模型

在上文中已经示意性示出了从源代码生成与计算转账手续费相 关联的业务规则模型的示例。在本发明的一个实施方式中,还可以 按照上述方法来从实现其他业务流程的源代码中生成相应的业务规 则模型。例如,可以从图2所示的源代码片段中生成与计算贷款利 率相关联的业务规则模型。

在本发明的一个实施方式中,进一步包括:基于业务术语之间 的约束关系,验证业务规则模型。

在此实施方式中,还可以基于生成的业务规则模型来辅助判断 在现有的源代码中是否存在潜在缺陷。假设从源代码中生成了如下 业务规则:1)存款产品的利率在2-10%之间,并且不需要审批;2) 定期存款产品的利率必须要审批。则此时可以发现这两个业务规则 之间可能会存在冲突。定期存款产品是一种特殊类型的存款产品, 并且当利率在2-10%之间时,根据业务规则1),该利率不需要审批; 而根据规则2)则该利率需要审批。此时将会出现冲突。

由于COBOL语言是面向过程的语言,该语言并不支持“继承” 的概念,因而需要分别定义不同的数据结构来表示不同的对象。具 体而言,定期存款产品是一种特殊类型的存款产品,当使用面向对 象的编程语言时,可以将定期存款产品定义为存款产品的子类。然 而当采用COBOL语言编写代码时也仅能按照面向过程的语言的语 法规定来定义两个数据结构。此时,在两个数据结构之间可能会存 在冲突。

在以面向过程的编程语言开发应用系统时,由于不能在两个单 独的数据结构之间建立继承关系,因而很难发现源代码中的潜在缺 陷。通过使用本发明的技术方案,可以从源代码中生成业务规则模 型,进而可以通过比较该模型中的规则,即可判断在源代码中是否 出现了潜在的缺陷。以此方式,可以验证业务规则模型中是否出现 了潜在的冲突。当发现冲突时,可以发出警报以指示该冲突。

前面已经参考附图描述了实现本发明的方法的各个实施方式。 本领域技术人员可以理解的是,上述方法既可以以软件方式实现, 也可以以硬件方式实现,或者通过软件与硬件相结合的方式实现。 并且,本领域技术人员可以理解,通过以软件、硬件或者软硬件相 结合的方式实现上述方法中的各个步骤,可以提供一种基于相同发 明构思的一种设备。即使该设备在硬件结构上与通用处理设备相同, 由于其中所包含的软件的作用,使得该设备表现出区别于通用处理 设备的特性,从而形成本发明的各个实施方式的设备。本发明中所 述设备包括若干装置或模块,所述装置或模块被配置为执行相应步 骤。本领域的所述技术人员通过阅读本说明书可以理解如何编写程 序实现所述装置或模块执行的动作。由于所述设备与方法基于相同 的发明构思,因此其中相同或相应的实现细节同样适用于与上述方 法对应的装置或模块,由于其在上文中已经进行了详细和完整的描 述,因此在下文中可能不再进行赘述。

图7示意性示出了根据本发明一个实施方式的用于生成业务规 则模型的装置的框图700。具体地,提供了一种用于生成业务规则模 型的装置,包括:提取模块710,配置用于从应用系统的源代码提取 源代码所执行的业务流程,业务流程包括按顺序执行的多个业务过 程;建立模块720,配置用于分析源代码中与多个业务过程中的各个 业务过程相关联的部分,建立描述各个业务过程所遵循的业务规则 的规则元数据;生成模块730,配置用于基于顺序和规则元数据生成 描述业务流程所遵循的业务规则模型。

在本发明的一个实施方式中,提取模块710包括:第一提取模 块,配置用于基于源代码中的逻辑过程以及逻辑过程的执行顺序以 提取业务流程,其中业务流程中的业务过程对应于源代码中的逻辑 过程。

在本发明的一个实施方式中,建立模块720包括:第一建立模 块,配置用于针对源代码中与多个业务过程中的各个业务过程相关 联的部分,基于源代码所引用的数据结构与业务流程中的业务术语 之间的映射关系,建立规则元数据。

在本发明的一个实施方式中,第一建立模块包括:分组模块, 配置用于识别多个业务过程之间的关联关系以将多个业务过程划分 为至少一个过程分组;以及分析模块,配置用于分析源代码中与至 少一个过程分组中的各个过程分组相关联的部分,基于映射关系建 立与各个过程分组相关联的规则元数据。

在本发明的一个实施方式中,分析模块包括:查找模块,配置 用于针对至少一个过程分组中的当前过程分组,在源代码中与当前 过程分组相对应的部分中查找执行语句以获取段落关键字;定位模 块,配置用于基于关键字定位代码段落;以及解析模块,配置用于 基于映射关系,解析代码段落以获得规则元数据。

在本发明的一个实施方式中,解析模块包括:获取模块,配置 用于从代码段落获取条件语句以及与条件语句相对应的动作语句; 以及形成模块,配置用于响应于条件语句与业务术语之间存在映射 关系,基于条件语句和动作语句形成规则元数据。

在本发明的一个实施方式中,进一步包括:验证模块,配置用 于基于业务术语之间的约束关系,验证业务规则模型。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产 品可以包括计算机可读存储介质,其上载有用于使处理器实现本发 明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使 用的指令的有形设备。计算机可读存储介质例如可以是――但不限 于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半 导体存储设备或者上述的任意合适的组合。计算机可读存储介质的 更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随 机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读 存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携 式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆 棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内 凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读 存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传 播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过 光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质 下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、 广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包 括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、 网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或 者网络接口从网络接收计算机可读程序指令,并转发该计算机可读 程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质 中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令 集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、 状态设置数据、或者以一种或多种编程语言的任意组合编写的源代 码或目标代码,所述编程语言包括面向对象的编程语言—诸如Java、 Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或 类似的编程语言。计算机可读程序指令可以完全地在用户计算机上 执行、部分地在用户计算机上执行、作为一个独立的软件包执行、 部分在用户计算机上部分在远程计算机上执行、或者完全在远程计 算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可 以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)— 连接到用户计算机,或者,可以连接到外部计算机(例如利用因特 网服务提供商来通过因特网连接)。在一些实施方式中,通过利用 计算机可读程序指令的状态信息来个性化定制电子电路,例如可编 程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA), 该电子电路可以执行计算机可读程序指令,从而实现本发明的各个 方面。

这里参照根据本发明实施方式的方法、装置(系统)和计算机 程序产品的流程图和/或框图描述了本发明的各个方面。应当理解, 流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合, 都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机 或其他可编程数据处理装置的处理器,从而生产出一种机器,使得 这些指令在通过计算机或其他可编程数据处理装置的处理器执行 时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/ 动作的装置。也可以把这些计算机可读程序指令存储在计算机可读 存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他 设备以特定方式工作,从而,存储有指令的计算机可读介质则包括 一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规 定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其他可编程数据 处理装置、或其他设备上,使得在计算机、其他可编程数据处理装 置或其他设备上执行一系列操作步骤,以产生计算机实现的过程, 从而使得在计算机、其他可编程数据处理装置、或其他设备上执行 的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动 作。

附图中的流程图和框图显示了根据本发明的多个实施方式的系 统、方法和计算机程序产品的可能实现的体系架构、功能和操作。 在这点上,流程图或框图中的每个方框可以代表一个模块、程序段 或指令的一部分,所述模块、程序段或指令的一部分包含一个或多 个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现 中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。 例如,两个连续的方框实际上可以基本并行地执行,它们有时也可 以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框 图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组 合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现, 或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本发明的各实施方式,上述说明是示例性的, 并非穷尽性的,并且也不限于所披露的各实施方式。在不偏离所说 明的各实施方式的范围和精神的情况下,对于本技术领域的普通技 术人员来说许多修改和变更都是显而易见的。本文中所用术语的选 择,旨在最好地解释各实施方式的原理、实际应用或对市场中的技 术的技术改进,或者使本技术领域的其他普通技术人员能理解本文 披露的各实施方式。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号