卡银行体系的业务建模

卡银行体系的业务建模

 

卡银行(CB,Card Bank)是各商业银行的统一金融门户,客户一旦登陆卡银行,意味着已经进入自己拥有的每个商业银行账户,可以实时跨行调拨资金,支付结算,购买理财产品或其它任何交易。基于卡银行可以建立公民征信体系,实现交易数据溯源,实施全面的金融监管。卡银行业务包括客户关系管理、存款业务、贷款业务、支付结算业务、卡业务、资金贸易融资业务。卡业务涉及到存款和贷款等其它业务,业务建模首先建立业务文档,包括业务场景名、用例概述、业务输入、流程描述、业务输出、会计分录等,通过建立业务文档对卡银行业务进行概念建模。然后根据业务文档描述的业务用例场景,提取绘制出业务流程图。将不同的业务参与者分为不同的甬道,如卡银行业务分为客户、柜员、系统、客户经理等甬道,对业务场景步骤进行分析、精炼、绘制流程图描述整个业务流程。业务流程图系统甬道一栏包括原子业务映射为系统用例以及与应用无关的判断。   1 业务建模   卡银行系统业务模型由概念模型、逻辑模型和物理模型三个部分构成。概念模型包括卡银行业务应用领域、业务领域类型、业务用例类型和业务用例。逻辑模型由业务用例场景和业务流程步骤构成,物理模型是由原子业务直接映射的系统用例组成;概念模型通过业务步骤流程映射为物理模型[1]。   1.1 巴科斯范式定义   概念模型可通过巴科斯范式定义卡银行系统的业务应用领域、业务领域类型、业务用例类型、业务用例、业务用例场景、业务步骤等多个层次,比如,<业务领域类型>∷=<业务领域>{<业务领域>};<业务领域>∷=<业务用例类型>{<业务用例类型>};<业务用例类型>∷=<业务用例>{<业务用例>};<业务用例>∷=<业务用例场景>{<业务用例场景>};<业务用例场景>∷=<业务步骤>{<业务步骤>};<业务步骤>∷=<业务步骤>{<业务步骤>}|<业务步骤><原子业务>{<原子业务>}|<原子业务>{<原子业务>};<业务步骤关系>∷=<is-instance-of>|<is-part-of>|<is-next-flow-of>|<is-dis-joint-of>;符号“∷=”右面的概念集合给出了“∷=”左面概念的内涵。业务步骤是一类特殊的概念,需要引入业务步骤关系确定业务步骤之间定序。原子业务是独立的不可再分割的业务步骤,直接映射为系统建模过程的系统用例。本研究已经全部完成了卡银行系统的业务建模,下文给出用巴科斯范式描述的例子。<卡银行核心业务>∷=<客户关系管理><卡业务><总账>;业务领域<卡业务>∷=<卡存款><卡贷款><卡支付结算><卡资金贸易融资><卡电子类交易><卡管理><电话银行业务>;业务用例类型<客户关系管理>∷=<客户关系管理>;业务用例类型<卡存款>∷=<个人卡存款><单位卡存款>;业务用例<卡贷款>∷=<一般个贷产品><单位固定资产贷款><单位流资类贷款><单位委托贷款><法人透支账户><票据贴现><或有业务>;业务用例<卡支付结算>∷=<卡银行汇票业务><卡银行本票业务><汇兑业务><委托收款业务><托收承付业务><大额支付系统业务><同城票据交换业务><小额支付系统业务>;业务用例<卡资金贸易融资>∷=<卡资金贸易融资>;业务用例<客户关系管理>∷=<客户关系管理>;业务用例<个人卡存款>∷=<个人卡账户开户><个人卡卡内其他账户开户><个人卡卡内其他账户开户———已经开立账户移入卡内><个人卡现金存款><个人卡转账存款><个人卡现金取款><个人卡转账取款><个人卡卡内定期部分提前支取现金><个人卡卡内定期部分提前转账支取><个人卡卡内其他账户销户><个人卡卡内其他账户销户———移出卡内非主账户><个人卡销户>;业务用例场景<一般个贷产品>∷=<一般个贷发放><一般个贷还款><一般个贷延长贷款到期日><一般个贷贷款转逾期><动态质押合同下的卡自助贷款发放><综合授信合同下的卡自助贷款发放><自助贷款展期><一般个贷转减值处理><一般个贷转减值后核销处理><一般个贷核销贷款收回>;业务用例场景<卡银行汇票业务>∷=<现金签发卡银行汇票><个人转账签发卡银行汇票><单位转账签发卡银行汇票><卡银行汇票现金兑付><卡银行汇票转账兑付><卡银行汇票重打><卡银行汇票查询><卡银行汇票挂失><卡银行汇票解挂>;业务用例场景<卡资金贸易融资>∷=<进出口押汇业务发放><进出口押汇到期二次转账结清><出口退税托管账户到期还款><资金贸易融资类贷款展期><开立进口信用证/保函><进口信用证/保函到期处理><保函到期未用退回><进出口代付发放><出口代付提前还款><出口代付到期代付行划来多余款项><出口代付到期付款><进口代付垫款><信用证下提货担保书的开立><提货担保到期处理>;业务用例场景<客户关系管理>∷=<建立个人客户><建立单位客户><维护客户关系连接><维护客户关系><建立客户密码><修改客户密码><重置客户密码><变更客户详细信息>;业务用例场景[1]。   1.2 提取原子业务   笔者通过建立基于Visio的跨职能流程图分离出原子业务。通过VB程序提取的原子业务并转存为CSV格式的数据,然后将CSV文件导入数据库。   2 业务系统架构   卡银行业务系统具有SOA架构的全部特征,其最大的好处是采用成熟稳定的标准化流程引擎,符合工作流管理联盟WfMC(Workflow Manage-ment Coalition)提出的工作流参考模型。业务流程作为流程引擎的输入数据。业务改变时,通过引入新的流程数据实现维护扩展,不必重新编译系统。图1为卡银行业务系统架构。工作流模型有组件1流程引擎,组件2流程设计平台和组件3界面设计平台。流程引擎类似于一个CPU,形式化的XML的业务流程相当于CPU中执行的程序,每一个业务都对应着相应的一个流程。对于发起的任何一个业务,流程引擎从应用服务器中调出相对应的业务流程驱动执行。工作流模型的流程设计平台,也是一个图形化的设计工具。各个业务的流程图作为流程设计平台的输入。流程设计平台自动提取相应的属性和参数,然后生成业务流程XML的形式化表示,存入流程引擎应用服务器的数据库。界面设计平台主要功能是将客户端应用程序与流程引擎进行交互时必需的界面信息,自动转换成形式化描述的XML格式,存入流程引擎应用服务器的数据库。#p#分页标题#e#   3 工作流引擎   工作流引擎就是流程引擎,目前有三大主流开源项目可供系统选用。   3.1 Shark   完全基于WfMC和OMG(Object Manage-ment Group,对象管理组)标准构建,用XPDL(XML Process Description Language)流程定义语言开发。其特点是较为简单的内部调度机制,采用循环遍历方法完成活动实例,调度机制直观,易于理解,但是对复杂运行模式难以支持。Shark最吸引人之处[[2]]是XPDL的Activity源于UML 1.x的活动图概念,易于控制并发分叉线程。   3.2 OSWorkflow   由opensymphony组织开发维护,用纯Java语言编写的OSWorkflow有限状态机模型。在OS-Workflow中用step ID和status联合表达状态(state),step ID中的某个status就是state,由动作(action)驱动完成status的转换。灵活性是OS-Workflow最大的优点,同时也让它非常难以掌握,成为推广使用的障碍。   3.3 jBPM   jBPM(Java Business Process Management)[3]没有采用目前工作流引擎遵循的主要两个标准(BPEL和WfMC标准),而是自定义了流程描述语言JPDL[4~5](jBPM Process Definition Language),结合应用状态图、活动图和PetriNet分离出数据管理的职能。数据库管理采用Hibernate技术,可以部署在任何应用服务器上,具有较好的灵活性,是目前应用最为广泛的开源工作流引擎。由于流程设计平台可将工作流程转换为XML格式的描述,因此可利用主流开源项目作为其引擎。但采用XML描述工作流程并非必要步骤。为此,本文给出工作流引擎CBE(Card Bank Engine)的一般实现方案。   3.4 CBE   CBE支持的流程大致有二种类型,分别是①固态流程,不支持流程再造;②静态流程,允许流程再造。固态流程通过预先设计确定语义树,流程路径由输入参数确定,因此CBE可实现为有限状态机。静态流程从外部输入语义树,要求引擎必须为流程提供存储和计数。静态流程的引擎CBE特征与CPU的程序控制器相似,实现为“定序器”,定序器继承了冯诺依曼架构的主要特征,其基本部件是构件队列、构件计数器和构件译码器。构件队列用来存储由构件名组成的流程。当一个节拍发生时,构件计数器当前指针指定的构件名送入构件译码器译码,通过服务总线激活相应的构件实体实施操作;同时构件计数器指向下一个构件名。流程的ID存储在流程队列中,流程计数器指向当前被激活的流程ID。   4 工作流建模   工作流模型[6]抽象表示工作流经营的生命周期。工作流模型定义了完整表示工作流的相关概念,其中包括为建模用户定义工作流所提供的元素或组件。工作流建模方法主要包括基于有向图的方法、基于对话的方法、基于PetriNet的ICN(Infor-mation Control Nets)方法等[7]。   4.1 有向图模型   这种模型的出发点是从定义经营过程入手,清楚地进行过程描述,模型有向图中的节点表示过程中的状态或者活动,有向弧用来表示节点之间在时序上的依赖关系。有向图工作流模型的优点是直观、易于理解;缺点是缺乏柔性,难以表示复杂逻辑。   4.2 语言对话模型   这种模型的理论基础是自然语言行为,通过语言描述、提炼、抽象出用户与系统两个角色间的交互行为,定义工作流过程,形成由相互连接的一系列闭合工作流环。基于对话的工作流模型通过语言交流信息、描述事物、规划并协调行为。   4.3 ICN模型   ICN工作流模型的理论基础是PetriNet,其实质是把工作流管理联盟规范中定义的基本工作流原语映射为与之对应的PetriNet,由此去建立工作流网的触发机制和基本的构件组。   4.4 流程描述语言模型   流程描述语言模型是本文提出的从流程描述语言视角描述的工作流模型。工作流程可描述为与问题无关部分和与问题关联部分。与问题无关部分是指对所有应用都是必需的,它包括:字符集、数据类型、关键字、表达式、语句(分支、跳转、条件、循环…)等基本控制要素;而与问题关联部分是指概念及其对应的原子操作集合、基本运算等。可针对具体问题抽象出概念,将概念分解为操作或运算的流程,对其形式化后可从需求分析中提取出此部分内容。因此采用流程描述语言模型可以很容易建立工作流模型,且更具一般性。   5 结论   讨论了卡银行业务系统架构,阐述了采用标准化流程引擎实现SOA架构的系统整体解决方案。按照SOA的理念,系统开发建设的主要任务集中在业务建模和提取业务流程。流程步骤节点上所需的服务构件主要依靠从构件市场采购,自行开发构件仅仅作为补充。讨论了流程引擎的抽象模型以及三种主流开源工作流引擎,比较了各自的优劣。给出了工作流引擎CBE和流程描述语言模型的一般实现方案。介绍了当前流行的业务建模主要方法,验证了本实验室自创并一直沿用的SOA三层模型建模方法的有效性。