首页> 中国专利> 一种面向行业应用的解释型业务组件动态构建方法

一种面向行业应用的解释型业务组件动态构建方法

摘要

一种面向行业应用的解释型业务组件动态构建方法,属于计算机系统技术平台领域。采用采用类似机器语言的指令集方式固化业务需求的原子事务操作,并封装了应用开发中的日志、事务、数据访问、数据运算、消息处理等技术,然后通过对有限指令集的动态组装来实现组件化,让开发者不用去关注技术实现细节,而在业务逻辑实现本身,缩短学习曲线,简化开发,提高效率与快速响应用户需求的服务能力。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-04-27

    授权

    授权

  • 2013-10-09

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

    实质审查的生效

  • 2013-09-04

    公开

    公开

说明书

技术领域

本发明属于计算机系统技术平台领域,特别是涉及一种面向行业应用 的解释型业务组件动态构建方法。 

背景技术

传统开发语言分为编译执行型和解释型,编译型如java,c,等面向对 象语言,直接采用这些语言开发的业务组件,如果逻辑发生变化后修 改代码时,需要进行编译、打包重新部署,开发周期比较长。另外, 从业务应用角度而言,这些语言本事属于底层开发语言,语言具有灵 活性、通用性强的特点,但是针对性确不强,通常运用在底层技术实 现上,通过封装可用对象来实现复用。这就需要在开发过程中遵循统 一的对象设计,开发规范,和文档化,程序管理过程复杂,管理难度 大。通常采用底层语言直接开发的系统,如果设计不合理,规范做不 到位,就会为维护工作带来困难,知识转移困难。通用型强表示语言 本身可实现能力强,但是同样也带来复杂度的增加,比如面向对象的 ,对象层级、各个类库的提供的API,粒度过于细,而不利于简化开发 ,可读性差。

而传统的解释型语言,如perl,python等,虽然可以做到不需要编译 ,在线部署后动态执行,但是语言本身也是属于底层语言范畴,开发 学习周期长,同样面临着针对性不强的问题。开发人员需要花大量的 精力去掌握技术的底层实现,而不是在业务实现上。

发明内容

本发明的目的在于提供一种面向行业应用的解释型业务组件动态构建 方法,通过抽象出业务应用的原子事务操作,暂且称之为原子块,对 其进行动态编排实现业务组件的构建,从传统的面向开发语言硬编码 实现业务组件方式转向将原子块类似积木搭建方式动态构建组件。从 而实现业务组件以业务描述方式,可配置、低耦合、可组装、动态部 署的灵活配置管理,解决采用底层语言实现业务组件在开发、维护过 程中开发周期长、维护量大、不能快速响应用户需求的问题。

本发明采用采用类似机器语言的指令集方式固化业务需求的原子事务 操作,并封装了应用开发中的日志、事务、数据访问、数据运算、消 息处理等技术,然后通过对有限指令集的动态组装来实现组件化,让 开发者不用去关注技术实现细节,而在业务逻辑实现本身,缩短学习 曲线,简化开发,提高效率与快速响应用户需求的服务能力。包括以 下步骤:

(1)构建数据类型:采用描述性的xsd文件对行业领域模型进行语义 建模,建立描述性语义对象模型,并通过命名规范映射到关系型数据 库。

(2)构建操作指令:取代传统面向对象对象的细粒度设计方法,分析 行业应用 抽象出共性操作,采用指令方式以粗粒度方式封装业务原子事务操作 。

(3)构建业务组件:根据业务处理逻辑,通过对有限指令集的描述性 编排,来装配成业务组件。 业务组件可以通过组装指令与其他组件 进行组装成更大的组件向外提供服务。

(4)构建函数集:通过语言扩展机制,根据个性化需要构建自定义函 数来提供给指令输入表达式。随着业务的不断发展,内置指令、或者 函数可能会不能满足行业应用需求,这时可以通过自定义函数的方式 进行语言操作能力的扩展。扩展的函数注册后,在语言编辑器中可以 直接使用。

(5)对业务组件进行生命周期管理:通过实现Eclipse插件方式,实 现语言编辑器来创建、修改、调试、部署组件,至少包括语法校验、 语法高亮显示、代码辅助提示、动态部署发布、运行与调试功能。

其中,所述采用xsd文件方式进行数据类型构建,xsd里通过复合类co mplexType定义了面向行业应用的领域对象模型,包括对象属性、业务 键值、对象关系,与数据库表之间采用命名规范方式建立映射,之间 实现双向同步方式。其中:xsd文件放置的目录结构为 [schema名称 ]\orm\[模块名].xsd,其中,schema名称对应于表名称的前缀字符, 比如mes\orm目录下定义的xsd类型对应于‘mes_’开始的数据库表, 另外,xsd里定义的复合类型complexType通过语义方式映射到数据表 ,复合类型的id代表了对象在领域模型里的语义标识,对应于表的主 键名称;复合类型的名称对应于数据库对象名,包括表、视图。

基于指令方式的操作方法构建,指令覆盖了业务操作的共性特征,具 体实现细节包括以下指令:

(1)数据操控指令:用于对应用上下文Context中的数据进行逻辑运 算,包括数学运算、逻辑运算、根据xsd类型创建对象实例、数据复制 、数据打印、数据验证。

(2)数据访问指令:用于与持久存储单元,如数据库,依据xsd定义 的对象属性与关系型数据映射、进行增、删、改的事务操作SAVE指令 。

(3)组件装配指令:用于对平台已注册组件进行调用、装配的控制指 令,包括引用已有组件调用与用已有的小粒度组件组装成大粒度组件 。

(4)流程控制指令:封装执行分支IF-ELIF-ELSE、执行函数DO、循环 体类的继续CONTINUE、与中断BREAK等指令。

(5)循环控制指令:用于循环Context中的列表对象进行处理的指令 。包括LOOP循环、WHILE循环、迭代循环ITERATE、与笛卡尔穷举循环 DECARTES指令。循环指令体内可以递归编排指令序列来实现业务逻辑 。

其中,数据访问指令通过编辑EXPR与XQL动态执行语言实现,EXPR为自 主定义的动态解析规则语言,是对内存中Context上下文数据进行动态 解析与执行的表达式引擎,包括基本的加减乘除、函数运算,和取值 逻辑计算,Context上下文数 据包括界面请求元数据与工作流实例的上下文数据。表达式包括:

1)算术表示:指基本的加减乘除{ +,-,*,/ }、函数运算,数学函 数如CEIL/FLOOR/ROUND/MIN/MAX,以及其他自定义函数。

2)逻辑表示:指比较运算符{>,<,<>,=,>=,<=},与逻辑运算符{AND,  OR}

3)取值表达式:指从Context 上下文中获取参数的表达式,参数值 以目录方式在Context进行存取,比如:\SOI\THICKNESS.MID 表示从 SOI子目录中取出厚度THICKNESS参数,并取其均值。

XQL(Xml schema based Query Language) 是查询指令自定义的 基于Xsd建模技术的动态查询语言,通过XQL实现从数据库装载出满足 查询条件的持久化数据到应用上下文Context中进行运算。书写规范如 下:在‘/’符号后输入语义标识符来描述所查询对象,之后可连接  / 符号、[]、和+符号,/ 符号表示所需关联的相关对象。其后可在  [] 括号内,输入目标对象的静态查询条件,其格式如: /父亲/ 儿子[属性1='参数值|常量' 属性2=...];采用 + 号关联关系对象 ,其格式如 :/父亲/儿子/+朋友/+亲戚。

指令集建立起来后,通过对指令的描述性编排方式来组装业务组件, 可以在当前组件中使用CALL指令来引用组件库中已有组件,引用时由 编辑器验证组件声明参数是否已输入、否则提示调用错误。CALL指令 可设置调用路径与上下文传入方式,调用路径是指传入Context上下文 的子对象路径作为应用组件的工作Context,上下文传入方式是指是创 建一个新的上下文、还是在输入路径上执行引用组件,如果是创建方 式,引用组件通过RETURN 指令返回组件处理结构到调用上下文中。

另外,本发明方法所述的组件编排机制,封装了表达式可引用的通用 函数,包括数学运算函数、参数操作函数、Context操作函数,如统计 、排序、列表操作、复制、删除、对象转换等,以及其他对技术组件 访问函数,如访问工作流数据,访问Session数据、系统配置元数据等 。如果需要根据业务复杂情况对函数进行扩展,可以根据自定义函数 的语言扩展机制,对于每一个自定义的函数需按规范接口实现,接口 至少包括函数名称、参数描述、函数使用说明描述,与实现代码,并 通过第三方类库动态加载到语言平台中。

本发明的有益效果:

本发明采用有限指令集的动态编排方式来实现组件化,结合动态语法 校验、与语义解析方式实现面向业务的组态式高级语言。使得开发者 在实现业务逻辑时候,只需要关注如何将业务逻辑分解为指令与表达 式去进行描述,而不需要去关注繁重的底层实现细节,大大加快了开 发速度;另外,该方法统一规范了组件运行日志,可以方便开发者快 速定位到错误;第三,配置的组件可以在不停机的情况下动态刷新到 服务端及完成了发布过程,开发周期短,可以快速响应业务人员的需 求。从技术上讲,实现了以下收益:

1、业务规则可配置:可通过引擎层提高规则语言表达式、与数据访问 语言配置 业务规则。

2、业务组件可配置:通过指令集进行动态、灵活配置。增加系统的灵 活性与敏捷性。

3、业务组件可组装:可通过组装指令对已有组件进行组装,从而实现 服务级复用能力。

4、业务发生变化后,只需要在线更改业务组件配置,及可以实现变化 的业务需求,提升快速响应用户需求的能力

5、系统功能提出变更时候,不需要停机去发表新程序,只需要发布新 的配置数据版本即可

6、通过对业务组件配置版本的管理,实现对业务组件的管理能力。

附图说明

图1为本发明具体实施方式的业务组件活动示意图。

图2为本发明具体实施方式的业务组件结构示意图。

具体实施方式:

本发明采用有限指令集的动态编排方式来实现组件化,结合动态语法 校验、与语义解析方式实现面向业务的组态式高级语言。结合附图和 实例详细说明如下:

下面以制造行业销售订单审核业务组件为实施例详细说明对其进行指 令编排构建过程,为简化业务逻辑,本实例假定业务需求为:

前提条件:销售订单为正式用订单且未审核过

输入参数:销售订单号

处理逻辑:

1、验证销售订单下每一个行项目的activeYn属性为Y,表示正式启用 的订单

2、验证销售订单下每一个行项目状态为待审核“STA_SOI_WT_AUDIT”

3、将销售订单下每一个行项目状态设置为“STA_SOI_AUDTED”表示审 核通过,并记录订单的审核人(auditor)与审核时间(auditDt)

4、设置销售订单状态为STA_SO_AUDITED,表示订单已经审核

5、如果订单是新品订单发送消息M001到质量设计系统。

本实例的销售订单审核业务组件构建分为两个组件,一个是销售订单 审核组件,另外一个是销售订单行项目审核组件。首先,先构建销售 订单行项目审核组件。步骤如下:

(1)判断领域模型是否已经建立,如果未建立,那么通过后台开发界 面,采用xsd文件对领域模型进行语义建模,建立与关系型数据库的映 射关系。

这里根据查询需求,首先建立so.xsd领域模型文件,并根据命名规范 ,放置于mes\orm\so.xsd路径下,在文件里需建立三个语义对象,销 售订单、销售订单行项目俩个xsd 的complexType复合类型。其中, 销售订单类型id为so,名称为SalesOrder,根据方法规定的映射规范 系统自动对应于mes_sales_orders 表,销 售订单行项目类型id为soi,名称为SoItem自动对应于mes_so_items表 。

语义对象建立好后,下面为每一个语义对象建立关系与属性,首先为 so与soi建立关系,一个so下面包括多个soi,所以在soi的复合类型下 建立一个类型为SaleOrder的关系属性so,另外建立soi的固定属性, 包括行项目号(soiId)、是否启用 (ActiveYn)、行项目状态(Stat us)、审核人(Auditor)、审核时间(AuditDt)等。so对象属性包括 订单类型(Type)、销售订单号、销售订单状态(Status)等。

(2)构建销售订单行项目审核组件,通过支撑工具集的组件编辑器创 建:

HANDLER TXN_SOI_AUDIT AS

1)编排input指令声明必输变量 soiId,表示销售订单行项目号

INPUT soiId (required) AS string; 

2)编排set指令,调用xql表达式装载出订单号等于soiId变量的销售 订单行项目soi,脚本如下:

SET soi = xql:/soi[soiId=#soiId];

3)编排assert指令做非空验证,如果为空,提示数据库定义的SOI00 1错误。脚本如下:

VAL soi=NEX  AS SOI001;

4)编排业务验证指令,验证如果soi未启动,提示数据库定义的SOI0 02错误。

VAL soi\activeYn=’N’ AS SOI002;

5)业务验证,如果soi未启动,提示数据库定义的SOI003错误。

VAL soi\status!=’ STA_SOI_WT_AUDIT’ AS SOI003;

6)编排SET指令更改Context中soi对象属性,设置soi的状态为“已审 核”

SET soi\status = ‘STA_SOI_ AUDITED’;

7)编排save指令保存Context中的soi对象到数据库中

SAVE soi;

END

(3)构建销售订单审核组件,通过支撑工具集的组件编辑器创建:

HANDLER TXN_SO_AUDIT AS

1)编排input指令声明必输变量 soId,表示销售订单号

INPUT soId (required) AS string;

2)编排set指令,调用xql表示装载出销售订单与关联的销售订单行项 目对象,脚本如下:

SET so = xql:/so[soiId=#soId]/+soi;

3)编排assert指令做非空验证,如果为空,提示数据库定义的SO001 错误。脚本如下:

VAL so=NEX AS SO001;

4)循环指令遍历so下的soi数组里的每一个元素。调用销售订单行项 目审核组件进行soi审核。

LOOP soi : so\soi AS

CALL TXN_SOI_AUDIT (ctxpath->soi);

END

5)编排SET指令更改Context中so对象属性,设置so的状态为“已审核 ”

SET so\status = ‘STA_SO_ AUDITED’;

6)编排save指令保存so到数据库中

SAVE so;

7)采用条件控制指令判断so类型是否为新品订单,如果是,则在IF指 令体内编排创建消息的指令。

IF so\type = ‘PRD’ THEN

8)使用创建指令创建M001销售,消息类型soiMsg是在xsd中定义的类 型,包括设置消息号msgId,与订单号soId。

CREATE m001 AS xsd:soiMsg

.msgId = ‘M001’;

.soId = \so\soId;

END

9)调用内置技术组件,消息发送组件,发送通知消息到消息中间件

CALL TXN_INF_MSG_SENDER(ctxpath->m001);

END

END

(4)通过组件编辑器测试组件,测试成功后,动态注册到组件库中, 如果是业务应用系统,编辑器插件提供socket接口,将组件配置刷新 到远程应用组件库中。并动态部署到应用环境。

本发明采用有限指令集的动态编排方式来实现组件化,结合动态语法 校验、与语义解析方式实现面向业务的组态式高级语言。使得开发者 在实现业务逻辑时候,只需要关注如何将业务逻辑分解为指令与表达 式去进行描述,而不需要去关注繁重的底层实现细节,大大加快了开 发速度;另外,该技术统一规范了组件运行日志,可以方面开发者快 速定位到错误;第三,配置的组件可以在不停机的情况下动态刷新到 服务端及完成了发布过程,开发周期短,可以快速响应业务人员的需 求。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号