一种内嵌Python解释器实现软件系统二次开发的方法技术方案

技术编号:8323208 阅读:292 留言:0更新日期:2013-02-13 23:58
本发明专利技术涉及软件系统二次开发方法领域,特别是公开了一种嵌入Python解释器实现系统软件对外提供二次开发的方法,包括归纳和抽象系统软件所需要对外提供的对象和方法;系统主程序配置链接Python解释器;在Python环境下为系统主程序编写实现对象和方法原型;为对象、方法定义函数内外接口并编写相关的接口说明文档;用户依据接口说明文档,以相应版本的Python脚本使用各个接口并融合入自身所需的流程、逻辑,实现自身二次开发的实际需求等步骤。本发明专利技术改变了插件式、流程式的传统的二次开发模式,实现面向对象、高度灵活的可编程接口的开发模式,使信息管理系统、辅助设计系统等具备更强的可扩展性。

【技术实现步骤摘要】

本专利技术涉及软件系统二次开发方法领域,特别涉及一种软件系统对外提供二次开发的实现方法。
技术介绍
行业通用软件系统对外提供二次开发的实现技术,是行业通用软件系统能够立足在复杂的应用环境中的有效途径。因为行业内各个企业的实际情况不同,行业通用的信息管理系统、辅助设计系统等无法完全符合各个使用单位的实际需求,如在造船行业,虽然多数造船公司整体生产管理流程一致,但流程上、标准上的细节差终究无法避免。所以,通用系统对外提供二次开发的实现技术,是使行业通用软件系统能够立足的有效途径。 目前,较多的信息管理软件、辅助设计软件均采用通过编写固定流程下的插件的方式对外提供二次开发,用户通过编写符合一定接口标准的插件,在满足设计初衷大流程的前提条件下,将自身的需求嵌入到通用系统中,从而实现自身的定制性需求。如申请专利号为CN200510098550. 2的用于二次开发平台的基于控件的插件管理系统及方法,它首先根据控件的标准接口,提供一个与所述控件的通讯连接与事件响应相符合的接口协议;然后遵照所述接口协议,提供至少一个具有外部自定义功能的插件;在所述控件中维护有一个插件链,当应用程序启动时,由控件调用所述接口协议,将所述插件加载入插件链中。此种方式虽然较为简单方便,但是可扩展的约束太大,设计初衷的流程将限制用户的二次开发范围,用户只能在固定流程前提下进行二次开发,无法灵活拓展,适应性较差。另外,插件式的开发对用户二次开发所采用的程序语言有一定限制,如.Net平台的软件产品,其插件通常情况下要求是同平台语言编写的,如此则抬高了用户的二次开发资金成本。
技术实现思路
针对目前多数软件系统没有提供二次开发接口或仅通过固定流程下插件式的传统二次开发方法无法适应用户特定流程需求的现状,本专利技术提出,使通用软件系统对外提供基础的API接口,用户利用基础的API接口和免费的Python语言进行二次开发,依据实际需求进行流程组合,灵活扩展通用软件系统的功能。本专利技术为解决上述技术问题采用的技术方案是内嵌Python解释器实现软件系统对外提供二次开发,具体方法如下步骤1,归纳和抽象系统软件所需要对外提供的对象和方法,这些对象和方法,是提供给用户二次开发的基本元素;步骤2,为系统主程序配置链接Python解释器;进一步地,Python解释器版本的选择可以依据用户实现系统的编程语言,C/C++程序链接CPython解释器,.Net平台语言链接IronPython解释器,JAVA语言链接Jython解释器;步骤3,在Python环境下,为步骤I归纳出的对象和方法在系统主程序中编写实现原型,该原型属于系统对外提供的二次开发框架的基础元素,相互之间并无流程关系;步骤4,为步骤3中实现的对象、方法定义函数内外接口,并编写相关的接口说明文档,该接口说明文档是上述基础元素的接口功能、规格说明;步骤5,用户依据接口说明文档,以相应版本的Python脚本使用各个接口并融合入自身所需的流程、逻辑,实现自身二次开发的实际需求。本专利技术采用以上技术方案与现有技术相比,具有以下技术效果I、系统在进行二次开发设计时,只需进行基础对象、方法功能的归纳总结,不必进行通用流程、业务逻辑的设计;2、主系统在链接Python解析器之时,可以依据系统主体的程序语言,选择相应版 本的Python语言解析器进行链接,C/C++程序链接CPython解释器,.Net平台语言链接IronPython解释器,JAVA语言链接Jython解释器,对于非主流语言可以通过COM技术对合适的Python解析器进行包装后再行链接;3、系统提供的二次开发接口说明文档,只需对接口规格进行说明,不必对任何流程性、业务逻辑进行说明,可读性、可理解性较高;4、用户编写的Python脚本,均可免费进行,不需要任何二次开发语言工具的费用开销。5、用户编写的Python脚本,可以自由控制、搭建自身的实际流程,灵活性很高。附图说明图I所示为内嵌Python解释器实现软件系统二次开发方法的技术原理图;图2所示为内嵌Python解释器实现软件系统二次开发方法的流程图。具体实施例方式下面结合附图对本专利技术的具体实施例对本专利技术做进一步的说明图I所示为内嵌Python解释器实现软件系统二次开发方法的技术原理图,本专利技术将软件系统主程序连接相应版本的Python的解释器,通过Python解释器提供内嵌的Python环境,在解释器所提供的环境中,主程序中对需要对外提供的对象及方法进行函数原型的构造、代码实现,并编写接口说明文档,用户通过接口说明文档,融合自身的实际业务逻辑、流程需求,以相应版本的Python脚本调用系统提供的接口,将自身灵活多变的实际业务逻辑、流程需求融入到系统中。 图2所示为内嵌Python解释器实现软件系统二次开发方法的流程图,结合本专利技术具体实施例作进一步的说明。本专利技术具体实施例以Windows操作系统为平台,以CodeBlock为编程工具,以C++语言为实现主程序的编程语言,以Cpython作为二次开发环境语言,以控制台程序作为主系统程序,向用户提供二次开发接口函数JMS_ChangeValue, Python 二次开发脚本JMS. py。通过嵌入Python解释器实现系统对外提供二次开发流程如下步骤I :归纳分析系统软件,抽象出系统需要向外提供接口 “JMS_ChangeValue”,该接口作用在于改变主系统进程中的一个变量的值;步骤2 :为主程序链接Python解释器,在CodeBlock的编译器和链接器选项中增加Python的头文件和库文件目录;配置操作系统的环境变量,在“系统变量”中增加“PYTHONHOME”,指向 python 目录;步骤3 :编写系统对外开放的二次开发接口的函数原型,包括以下过程3. DC++程序中必须包含如下代码#include〈Python. h>//包含Python解释器接口文件;3. 2)实现二次开发接口函数JMS_ChangeValue的功能原型,其中,各参数、返回值等均需声明为PyObject类型;通过PyArg_ParseTuple、Py_BuildValue等解释器提供的接口方法,将与Python交互的接口值与本地值(主程序)进行转换,转换后进行本地处理。3. 3)编写函数原型与用户可调用的二次开发接口的绑定代码,通过解释器提供的数据结构体PyMethodDef,来绑定本地函数与二次开发的接口。 3. 4)编写主程序调用用户脚本的控制代码(实际使用中,可以设计合适的机制灵活定义主程序调用用户脚本的文件路径)3. 4. I)通过解释器提供的Py_Initialize接口来初始化内嵌的python解释器;3. 4. 2)通过解释器提供的Py_InitModule接口来初始化对外提供的Python接口模块的名称;3. 4.3)通过解释器提供的PyFile_AsFiIe接口将用户的二次开发脚本文件转换为文件指针;3. 4. 4)通过解释器提供的PyRun_AnyFileEx接口将3中得到的文件指针交由解释器进行运行;3. 4. 5)通过解释器提供的Py_Finalize接口关闭解释器,释放资源。步骤4 :为步骤3中编写的函数原型定义函数内外接口,并编写相关函数原型的本文档来自技高网...

【技术保护点】
一种内嵌Python解释器实现软件系统二次开发的方法,其特征在于,包括如下步骤:步骤1,归纳和抽象系统软件所需要对外提供的对象和方法;步骤2,系统主程序配置链接Python解释器;步骤3,在Python环境下,为步骤1归纳出的对象和方法在系统主程序中编写实现原型;步骤4,为步骤3中实现的对象、方法定义函数内外接口,并编写相关的接口说明文档;步骤5,用户依据接口说明文档,以相应版本的Python脚本使用各个接口并融合入自身所需的流程、逻辑,实现自身二次开发的实际需求。

【技术特征摘要】
1.一种内嵌Python解释器实现软件系统二次开发的方法,其特征在于,包括如下步骤 步骤1,归纳和抽象系统软件所需要对外提供的对象和方法; 步骤2,系统主程序配置链接Python解释器; 步骤3,在Python环境下,为步骤I归纳出的对象和方法在系统主程序中编写实现原型; 步骤4,为步骤3中实现的对象、方法定义函数内外接口,并编写相关的接口说明文档;步骤5,用户依据接口说明文档,以相应版本的Python脚本使用各个接口并融合入自身所需的流程、逻辑,实现自身二次开发的实际需求。2.根据权利要求I所述的内嵌Python解释...

【专利技术属性】
技术研发人员:马晓平朱骏张祥
申请(专利权)人:江苏现代造船技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1