程序定制方法和装置的制作方法

文档序号:6340099阅读:118来源:国知局
专利名称:程序定制方法和装置的制作方法
技术领域
本发明涉及应用程序的个性化定制,尤其涉及一种程序定制方法和装置。
背景技术
在互联网速度和软件技术持续发展的当今,C/SKlient/Server,客户端/服务 器)、B/S (Browser/Server,浏览器/服务器)、Rich Client (胖客户端)模式的架构层出 不穷,B/S程序在免安装部署方面以及互联网应用领域的应用尽显优势。C/S模式的软件因 为其安全性、良好的用户交互体验依然占据半壁江山。但是在软件项目实施中,C/S的个性 化定制的灵活方便性和安全性以及软件的健壮性一直是软件企业在不断探索的课题。从市面上看,C/S个性化定制主要以以下几种方式实现1)针对当前实施的项目 直接修改软件的源代码重新编译;2)根据项目经验的不断抽象,定制出足够多的开关配置 项,尽量一份源代码能满足更多的客户需求;3)将业务功能进行组件化封装,尽量以业务 组件装配的方式来达到快速的,最小代码量的定制;4)将某个或某些功能发布规范的插件 接口,项目定制时以插件(Plug-in)的方式完成项目个性化需求。以上方式在实际产品中可能是其中的一种或者是多种的组合形式。在第一种模式 中,定制化开发的代码工作量是最大的;第二种模式和第三种模式随着产品的不断的抽象, 不断的经验积累,代码量逐渐变小。但这些模式都无一例外的需要重新编译程序,发布程 序,部署程序。第四种模式对每个功能的插件接口需要预先做出规划,而插件本身的开发也 需要程序员的介入。程序代码的开发集中在软件公司的程序员身上,随着产品客户的增加,软件公司 不得不增加程序员来满足庞大客户群的个性化定制需求。而程序员的成本在整个软件项目 实施环节中较高,这就使得软件的个性化定制的成本大大提高。随着用户对软件个性化需 求的不断增加,如何简单有效地以适度开放的方法来满足客户的需求,同时满足软件公司 对于安全性和程序稳定健壮性的需求,成为当前软件企业主要探索的课题。因此,需要一种程序定制方法,使应用程序不需要重新编译、发布和部署,便能简 单有效地实现适度开放地对软件程序进行个性化定制,同时降低开放难度,缩短实施周期, 实现个性化定制的低成本,来满足最终用户软件的个性化需求。

发明内容
有鉴于此,本发明所要解决的技术问题在于,提供一种程序定制方法,使应用程序 不需要重新编译、发布、部署,在客户实施现场,项目实施人员可以直接针对某个程序功能 编写脚本语言在许可的程序切入点加入个性化业务逻辑或控制界面元素行为、表现、模式, 完成最终用户软件的个性化需求。本发明提供了一种程序定制方法,包括步骤102,在程序中设置切入点,并为所 述切入点设置切入脚本;步骤104,使所述程序运行至所述切入点时,执行所述切入脚本。 通过该技术方案,可以使程序在运行到切入点时,自动执行预先设置好的切入脚本,为用户提供个性化的业务逻辑或控制界面元素行为、表现和模式,实现最终用户软件的个性化需 求。在上述技术方案中,优选地,在所述步骤102中,为所述切入点设置切入方式,所 述切入方式包括前切入和/或后切入,所述切入脚本包括对应前切入的前切入脚本和/或 对应后切入的后切入脚本;在所述步骤104中,所述程序运行至所述切入点时,根据所述切 入方式进行后续操作,在所述切入方式包括所述前切入时,使所述程序在执行所述前切入 脚本后,再执行所述切入点的内置逻辑;在所述切入方式包括所述后切入时,使所述程序在 执行所述内置逻辑之后,再执行所述后切入脚本。通过该技术方案,可以实现程序中每一个 功能或元素的个性化定制。在上述技术方案中,优选地,在所述步骤102之前,预先制定并存储所述切入脚 本。这样,降低了程序定制的开发难度,缩短了程序定制的实施周期。在上述技术方案中,优选地,在所述步骤102中,将所述切入点设置在所述程序的 功能和/或元素上。这样可以保证功能中所有的元素都能被调用。通过本发明提供的程序定制方法,可以保证程序的个性化开发中系统的稳定性、 安全性,降低了开发难度、缩短了实施周期、降低了软件实施成本。本发明还提供了一种程序定制装置,包括切入设置模块,在程序中设置切入点, 并为所述切入点设置切入脚本;切入执行模块,使所述程序运行至所述切入点时,执行所述 切入脚本。通过该技术方案,可以使程序在运行到切入点时,自动执行预先设置好的切入脚 本,为用户提供个性化的业务逻辑或控制界面元素行为、表现和模式,实现最终用户软件的 个性化需求。在上述技术方案中,优选地,所述切入设置模块还为所述切入点设置切入方式,所 述切入方式包括前切入和/或后切入,所述切入脚本包括对应前切入的前切入脚本和/或 对应后切入的后切入脚本。所述程序运行至所述切入点时,所述切入执行模块根据所述切入方式进行后续操 作在所述切入方式包括所述前切入时,所述切入执行模块使所述程序在执行所述前切入 脚本后,再执行所述切入点的内置逻辑;在所述切入方式包括所述后切入时,所述切入执行 模块使所述程序在执行所述内置逻辑之后,再执行所述后切入脚本。通过该技术方案,可以 实现程序中每一个功能或元素的个性化定制。在上述技术方案中,优选地,所述切入脚本预先制定完成并存储。这样,降低了程 序定制的开发难度,缩短了程序定制的实施周期。在上述技术方案中,优选地,所述切入设置模块将所述切入点设置在所述程序的 功能和/或元素上。这样可以保证功能中所有的元素都能被调用。通过本发明提供的技术方案,可以保证程序的个性化开发中系统的稳定性、安全 性,降低程序定制的开发难度、缩短实施周期、降低软件实施的成本。


图1示出了根据本发明的一个实施例的程序定制方法的流程图;图2示出了根据本发明的一个实施例的程序定制装置的框图;图3示出了根据本发明的一个实施例的程序定制方法的功能切入点示意图4示出了根据本发明的一个实施例的程序定制方法的切入点运行流程图;图5示出了根据本发明的一个实施例的程序定制方法的切入模式的运行构架图。
具体实施例方式为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实 施方式对本发明进行进一步的详细描述。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可 以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实 施例的限制。图1是根据本发明的一个实施例的程序定制方法的流程图。如图1所示,本发明提供了一种程序定制方法,包括步骤102,在程序中设置切入 点,并为切入点设置切入脚本;步骤104,使程序运行至切入点时,执行切入脚本。通过该技 术方案,可以使程序在运行到切入点时,自动执行预先设置好的切入脚本,为用户提供个性 化的业务逻辑或控制界面元素行为、表现和模式,实现最终用户软件的个性化需求。在上述技术方案中,在步骤102中,为切入点设置切入方式,切入方式包括前切入 和/或后切入,切入脚本包括对应前切入的前切入脚本和/或对应后切入的后切入脚本; 在步骤104中,程序运行至切入点时,根据切入方式进行后续操作,在切入方式包括前切入 时,使程序在执行前切入脚本后,再执行切入点的内置逻辑;在切入方式包括后切入时,使 程序在执行内置逻辑之后,再执行后切入脚本。通过该技术方案,可以实现程序中每一个功 能或元素的个性化定制。在上述技术方案中,在步骤102之前,预先制定并存储切入脚本。这样,降低了程 序定制的开发难度,缩短了程序定制的实施周期。在上述技术方案中,在步骤102中,将切入点设置在程序的功能和/或元素上。这 样可以保证功能中所有的元素都能被JavaScript脚本调用。通过本发明提供的程序定制方法,可以保证程序的个性化开发中系统的稳定性、 安全性,降低了开发难度、缩短了实施周期、降低了软件实施成本。图2是根据本发明的一个实施例的程序定制装置的框图。如图2所示,本发明还提供了一种程序定制装置200,包括切入设置模块202,在 程序中设置切入点,并为所述切入点设置切入脚本;切入执行模块204,使所述程序运行至 所述切入点时,执行所述切入脚本。通过该技术方案,可以使程序在运行到切入点时,自动 执行预先设置好的切入脚本,为用户提供个性化的业务逻辑或控制界面元素行为、表现和 模式,实现最终用户软件的个性化需求。在上述技术方案中,切入设置模块202还为切入点设置切入方式,切入方式包括 前切入和/或后切入,切入脚本包括对应前切入的前切入脚本和/或对应后切入的后切入 脚本。在上述技术方案中,程序运行至切入点时,切入执行模块204根据切入方式进行 后续操作在切入方式包括前切入时,切入执行模块204使程序在执行前切入脚本后,再执 行切入点的内置逻辑;在切入方式包括后切入时,切入执行模块204使程序在执行内置逻 辑之后,再执行后切入脚本。通过该技术方案,可以实现程序中每一个功能或元素的个性化定制。在上述技术方案中,切入脚本预先制定完成并存储。这样,降低了程序定制的开发 难度,缩短了程序定制的实施周期。在上述技术方案中,切入设置模块将切入点设置在程序的功能和/或元素上。这 样可以保证功能中所有的元素都能被JavaScript脚本调用。通过本发明提供的技术方案,可以保证程序的个性化开发中系统的稳定性、安全 性,降低程序定制的开发难度、缩短实施周期、降低软件实施的成本。图3是根据本发明的一个实施例的程序定制方法的功能切入点示意图。在本实施例描述的JavaScript脚本面向功能的切入方法中,界面功能的生命周 期中任何行为、界面可视元素、不可视元素等规划的功能点都可以被动态插入JavaScript 脚本运行。功能中常用的元素包括界面可视元素包括按钮、复选按钮、单选按钮、文本输入框、列表框、下拉列表、图 片控件、表格、树控件、主菜单或弹出菜单、工具栏等;不可视元素包括数据集、定时器、各种业务组件等。如图3所示,基本的功能脚本切入点包括功能打开302,该功能被点击加载开始执行,为其提供OnLoad切入点;用户交互304,包括界面可视元素1至η 为其提供OnLoad(控件被打开加载时)切 入点、提供OnChange (值改变时)切入点,其中,第一个切入点脚本为OnLoad切入点,切入 方式为前切入。第二个切入点脚本为OnChange切入点,切入方式为前切入。第三个切入点 脚本为OnClose切入点,切入方式为后切入。另外,对于界面可视元素,还提供OnFocus (获 得焦点时)、OnBlur (失去焦点时)切入点、提供OnKeyDown(有按键时)、0nClick(鼠标单 击时),OnDoubleClick (鼠标双击时)等切入点。用户交互还包括不可视元素1至η 为其提供OnLoad(不可视元素被加载时)切 入点;同时提供OnChange (值改变时)切入点。功能关闭306,为功能被关闭时提供OnClose切入点。每一个界面可视元素或不可视元素在被设计时,由开发人员设定好提供哪些基础 的切入点。在每一个业务应用功能开发时,可以根据当前功能的实际要求屏蔽一些切入点 的行为以保证应用的安全性和稳定性。JavaScript脚本切入程序功能切入点的示意如图3所示。对于每一个功能或元素的切入点,切入方式分为前切入和后切入两种方式。每个 切入点都可以被定义是否允许前切入,是否允许后切入,是否允许跳过系统内置系统功能, 对于前切入模式,切入函数的返回值可以决定是否跳过系统内置功能(被允许跳过的前 提)。每个可切入功能点的程序执行为,当运行到切入点时首先判断该切入点是否允许前切入(由开发人员设计时确定),如果允许前切入 并且有“前切入脚本”,则执行前切入脚本,否则直接执行系统内置的当前切入点的业务逻 辑功能;如果前切入脚本有返回值并且返回值为False,再判断该切入点是否允许跳过内 置业务逻辑(由软件供应商提供的开发人员开发),如果允许被跳过,则跳过内置逻辑,否则执行内置逻辑。对于是否允许跳过内置逻辑,在当前规划时应该比较谨慎,否则可能会影 响当前功能的健壮性;在执行完内置逻辑以后,判断该切入点是否允许后切入,如果允许并且有“后切入 脚本”,则执行后切入脚本。图4是根据本发明的一个实施例的程序定制方法的切入点运行流程图。如图4所示,实现JavaScript脚本面向功能的切入方法流程,包括步骤402,执行程序到功能的切入点;步骤404,判断该切入点是否允许切入,若不允许,则执行内置系统业务逻辑,若允 许切入,则进入下一步;步骤406,执行前切入脚本;步骤408,判断返回值是否为False,若不是,则执行内置系统业务逻辑,若是 False,则进入下一步;步骤410,判断是否允许跳过内置逻辑,若不允许,则执行内置业务逻辑,若允许, 则进入下一步;步骤412,判断是否允许后切入,若不允许,则结束;若允许,则进入下一步;步骤414,执行后切入脚本。要实现这种JavaScript脚本面向功能的切入方法,有下面几个重要的技术点需 要提前规划和设计好功能中所有的元素(包括可视元素和不可视元素)都必须能被JavaScript脚 本调用,这根据不同的开发语言可以做不同的预案。对于C++/C/Delphi这种原生代码语 言,可以考虑使用ActiveX控件封装所有的元素,这样所有可以暴露的属性和方法都能被 JavaScript脚本以对象的方式引用。对于具有反射机制(Reflection)的使用虚拟机机 制运行的开发语言,如Java或0#,直接使用语言本身提供的反射机制就可以访问和控制 这些对象。具体控制到什么样的程度通过这些对象的重新封装或者提供代理模式(Proxy Pattern)或修饰模式(Facade Pattern)来决定。JavaScript脚本执行引擎的选用。在C/C++/Delphi/VB项目中可以使用Google提 供的开源的JavaScript引擎V8,也可以使用Moz i 11 a提供的开源的Spider Monkey引擎。 在Java语言开发的项目中可以直接使用JDK1. 6内置的JavaScript引擎或者使用Mozilla 提供的开源Rhino引擎。元素切入点的规划,对于每个界面可视元素或不可视元素,都要预先设计好其切 入点及控制模式。切入点的规划直接影响到系统的灵活性,在平台健壮性和灵活性中,需要 架构人员把握好一个度。个性化开发切入脚本的存储,加载,版本控制机制,这里的版本控制不仅仅限定于 不同的最终用户,同一个最终用户中的不同分支机构或部门可能都需要功能的个性化。因 此版本控制可以在一个系统内部随着机构/角色的划分而不同。规划好系统内置的对象类库(Class Library),以便二次开发人员在脚本编写中 的调用和引用。在最初的软件版本中可能类库并不一定会非常完备,在项目的不断累积中, 类库的功能将会随着不断的抽象而逐渐完备,这是一个长期的抽象过程。图5是根据本发明的一个实施例的的程序定制方法的切入模式的运行构架图。
如图5所示,在本实施例中,切入JavaScript脚本506的运行是在JavaScript引 擎502基础上通过平台JavaScript类库504提供的类和系统API来完成与程序功能逻辑 508及界面的互动的,任何涉及到操作系统安全性的系统API都应该被屏蔽。通过本发明提供的JavaScript脚本切入功能的方法,在项目实施时给个性化开 发带来较高的安全性,缩短了实施周期,降低了软件实施成本,具体为保证了系统的稳定性软件开发商提供的每一个功能是独立完备的,由软件开发 商提供最基本完善的功能,二次开发(项目个性化开发)只是在原有功能的基础进行个性 化定制,在保证主流程顺利执行的前提下进行小范围的控制和功能逻辑插入。保证了系统的安全性由于提供的脚本切入机制只能访问系统所允许的有限资 源,对于操作系统的安全性以及软件系统的安全性都不会构成威胁。同时也不会对软件开 发商的许可保护(License)有影响。降低了开发难度使用系统提供的丰富类库以及使用语法相对比较简单的 JavaScript脚本大大降低了系统的开发难度。同时,主功能/主流程已经由软件开发商完 成,项目实施人员(二次开发人员)只是在其基础上进行个性化的修改,所要求的开发能力 也大幅降低。缩短了实施周期传统的软件项目的实施是将无法通过参数定制化的需求反馈到 软件开发商程序员,由程序员修改代码后重新编译程序,发布版本或补丁,通过系列的控制 之后才发布到项目实施者手中进行安装实施,流程周期较长。降低了软件实施成本开发商程序员的工资收入普遍比实施人员的工资高,这是 一个现状,将开发的所有能力集中在开发商程序员手上,提高了项目的成本。并且随着项目 的增多或者客户数的逐渐累积,开发工作量不断加大,软件开发商不得不招聘大量的程序 来满足客户不断的个性化需求,这成本是十分昂贵的。通过将个性化定制开发的能力“下 放”到项目实施人员手中,培训项目实施人员一定的JavaScript开发能力,无疑将大大缩减 开发成本以及提高人均创效。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技 术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种程序定制方法,其特征在于,包括步骤102,在程序中设置切入点,并为所述切入点设置切入脚本; 步骤104,使所述程序运行至所述切入点时,执行所述切入脚本。
2.根据权利要求1所述的程序定制方法,其特征在于,在所述步骤102中,为所述切入 点设置切入方式,所述切入方式包括前切入和/或后切入,所述切入脚本包括对应前切入 的前切入脚本和/或对应后切入的后切入脚本;在所述步骤104中,所述程序运行至所述切入点时,根据所述切入方式进行后续操作, 在所述切入方式包括所述前切入时,使所述程序在执行所述前切入脚本后,再执行所 述切入点的内置逻辑,在所述切入方式包括所述后切入时,使所述程序在执行所述内置逻辑之后,再执行所 述后切入脚本。
3.根据权利要求2所述的程序定制方法,其特征在于,在所述步骤102中,设置预定值, 用于确定是否使所述程序执行所述内置逻辑;在所述步骤104中,执行所述前切入脚本后,根据所述前切入脚本的返回值与所述预 定值的比较,判断是否使所述程序执行所述内置逻辑,在确定使所述程序不执行所述内置逻辑,且所述切入方式包括所述后切入时,使所述 程序执行所述后切入脚本。
4.根据权利要求1所述的程序定制方法,其特征在于,在所述步骤102之前,预先制定 并存储所述切入脚本。
5.根据权利要求1至4中任一项所述的程序定制方法,其特征在于,在所述步骤102 中,将所述切入点设置在所述程序的功能和/或元素上。
6.一种程序定制装置,其特征在于,包括切入设置模块,在程序中设置切入点,并为所述切入点设置切入脚本; 切入执行模块,使所述程序运行至所述切入点时,执行所述切入脚本。
7.根据权利要求6所述的程序定制装置,其特征在于,所述切入设置模块还为所述切 入点设置切入方式,所述切入方式包括前切入和/或后切入,所述切入脚本包括对应前切 入的前切入脚本和/或对应后切入的后切入脚本;所述程序运行至所述切入点时,所述切入执行模块根据所述切入方式进行后续操作, 在所述切入方式包括所述前切入时,所述切入执行模块使所述程序在执行所述前切入 脚本后,再执行所述切入点的内置逻辑,在所述切入方式包括所述后切入时,所述切入执行模块使所述程序在执行所述内置逻 辑之后,再执行所述后切入脚本。
8.根据权利要求7所述的程序定制装置,其特征在于,所述切入设置模块还设置预定 值,用于确定是否使所述程序执行所述内置逻辑;执行所述前切入脚本后,所述切入执行模块还根据所述前切入脚本的返回值与所述预 定值的比较,判断是否使所述程序执行所述内置逻辑,在确定使所述程序不执行所述内置逻辑,且所述切入方式包括所述后切入时,所述切 入模块使所述程序执行所述后切入脚本。
9.根据权利要求6所述的程序定制装置,其特征在于,所述切入脚本预先制定完成并存储。
10.根据权利要求6至9中任一项所述的程序定制装置,其特征在于,所述切入设置模 块将所述切入点设置在所述程序的功能和/或元素上。
全文摘要
本发明提供了一种程序定制方法,包括步骤102,在程序中设置切入点,并为所述切入点设置切入脚本;步骤104,使所述程序运行至所述切入点时,执行所述切入脚本。本发明还提供了一种程序定制装置。根据本发明提供的技术方案,可以使应用程序不需要重新编译、发布、部署,便能简单有效地实现适度开放地对软件程序进行个性化定制,同时降低开放难度,缩短实施周期,实现个性化定制的低成本,来满足最终用户软件的个性化需求。
文档编号G06F9/44GK102004648SQ201010607750
公开日2011年4月6日 申请日期2010年12月27日 优先权日2010年12月27日
发明者陈胜望 申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1