用于web开发系统的开发方法和web开发系统
技术领域
本发明涉及网络应用程序开发领域,更具体地,涉及用于web开发系统的开发方法和web开发系统。
背景技术
用于开发网络应用程序的web系统目前得到广泛应用。网络应用程序(简称webapp)是一种使用网页浏览器在互联网或企业内部网上操作的应用软件,其是一种以网页语言(例如HTML、JavaScript、Java等编程语言)撰写的应用程序,需要通过浏览器来运行。web系统是客户机——服务器模式。web客户机是客户端的浏览器。web服务器是资源存放的主机。
当前web系统的开发应用主要分为开发阶段和运行时阶段。在开发阶段,开发人员通过web系统进行如下操作:编写、编译、部署和运行。具体而言,开发人员利用各种IDE(集成开发环境)开发工具在本地直接编写功能代码或程序包。开发完功能代码或程序包之后再用IDE开发工具编译,并且部署到服务器来生成功能页面。对功能页面进行运行和调试。功能全部开发测试完成后再交给最终用户运行使用以进入运行时阶段。
由于技术条件限制,目前,在开发阶段,开发人员无法以所见即所得的方式看到所开发的功能页面。即,开发人员在开发时看到的只是代码或程序包,而无法直接看到要生成的功能页面。并且,在运行功能页面时,如果要进行一些修改,则必须重新返回到代码编写步骤以进行代码编辑或修改。并且需要重新编译代码或程序包并将其部署到服务器,并且重新启动服务器来重新生成功能页面。之后,才能在运行该功能页面时看到所述修改的生效。这使得开发人员在开发效率上受到影响。
同时,对于系统不熟悉的开发人员而言,需要花大量时间来读懂代码逻辑才能掌握现有代码继续开发工作。这需要相当多的学习成本,学习成本的大小由系统的复杂程度决定。
发明内容
发明人针对上述问题提出了一种全新的用于web开发系统的开发方法和web开发系统。本发明的用于web开发系统的开发方法和web开发系统直接在系统运行的状态下进行开发,代码无需在本地进行编写、编译并部署到服务器,而是在服务器上直接加载即可运行。
本发明的一方面提供一种用于web开发系统的开发方法,包括以下步骤:在web开发系统运行时,生成或修改脚本代码;经由脚本解析器解析生成或修改的脚本代码以生成新功能的对象类型或修改已有功能的对象类型;以及由对象管理器根据生成的新功能的对象类型或修改的已有功能的对象类型生成新功能的对象或修改的已有功能的对象,并组织该对象与其他对象之间的调用关系,从而在web开发系统运行时生成或改变web开发系统的功能。
优选地,在所述用于web开发系统的开发方法中,所述生成或修改脚本代码的步骤包括:通过输入的参数来调用功能模板库中的与预定功能对应的模板,所述功能模板库包括至少一个与功能对应的脚本代码的模板;以及生成与该预定功能对应的脚本代码。
优选地,在所述用于web开发系统的开发方法中,所述生成或修改脚本代码的步骤包括:自动调用与要修改的已有功能对应的脚本代码来进行修改。
优选地,在所述用于web开发系统的开发方法中,所述生成或修改脚本代码的步骤包括:以可视化方式对功能的呈现效果进行设计以自动生成或修改与所述功能的呈现效果对应的脚本代码。
本发明的另一方面提供一种web开发系统,包括:脚本代码生成和修改装置,用于在web开发系统运行时生成或修改脚本代码;脚本解析器,用于解析生成或修改的脚本代码以生成新功能的对象类型或修改已有功能的对象类型;以及对象管理器,用于根据生成的新功能的对象类型或修改的已有功能的对象类型生成新功能或修改已有功能的对象,并组织该对象与其他对象之间的调用关系,从而在web开发系统运行时生成或改变web开发系统的功能。
优选地,在所述web开发系统中,所述脚本代码生成和修改装置包括:功能模板库,包括至少一个与功能对应的脚本代码的模板;以及代码生成器,用于通过输入的参数来调用功能模板库中的与预定功能对应的模板,以生成与该预定功能对应的脚本代码。
优选地,在所述web开发系统中,所述脚本代码生成和修改装置包括:代码编辑器,用于自动调用与要修改的功能对应的脚本代码来进行修改。
优选地,在所述web开发系统中,所述脚本代码生成和修改装置包括:页面设计器,用于以可视化方式对功能的呈现效果进行设计以自动生成或修改与所述功能的呈现效果对应的脚本代码。
优选地,在所述web开发系统中,所述对象管理器与代码生成器、代码编辑器和/或页面设计器连接,以将代码生成器、代码编辑器和/或页面设计器生成的或编辑的代码生成为对象以及对象之间的关系。
根据本发明的用于web开发系统的开发方法和web开发系统通过在开发阶段使开发人员直接在web开发系统运行状态下以所见即所得或者模板的方式,通过框架运行脚本代码将具有新功能的对象动态地创建到系统的内存里,或者更新已有功能的对象,快速生成功能从而做到在运行状态下以所见即所得方式快速地开发系统功能。并且该web开发系统可以快速连接到与已开发功能对应的代码,方便开发人员快速了解原有系统并且对原有功能进行修改。
此外,用此web开发系统开发的每个功能模块都可以被控件化,从而每个功能模块可以被其他功能模块直接调用。这样每个模块的代码可以做到高度的重用。大大提高了开发的效率。另外,系统在升级时,无需停机,直接加载新功能的代码即可升级。这样大大减少了升级时的工作量,提高了工作效率。
综上所述,根据本发明的上述用于web开发系统的开发方法和web开发系统可以改变目前的开发方式,提高开发效率,提高软件生产企业的生产力。
附图说明
图1是本发明的web开发系统的工作原理的框图;
图2是本发明的web开发系统的系统层级架构的示意图;
图3是本发明的web开发系统的工作原理的流程图;
图4是本发明的web开发系统中的代码生成的流程图;
图5为本发明的第一实施例的web开发系统中的脚本代码生成和修改装置的框图;
图6A到6D是本发明的第一实施例的web开发系统的在运行状态下的开发过程的示例的示意图;
图7是本发明的第二实施例的web开发系统中的脚本代码生成和修改装置的框图;
图8是本发明的第二实施例的web开发系统在运行状态下进行功能修改的流程图;
图9是本发明的第二实施例的web开发系统在运行状态下的其中包含的代码编辑器的代码编辑页面的示例的示意图;
图10是本发明的第三实施例的web开发系统中的脚本代码生成和修改装置的框图;
图11是本发明的第三实施例的web开发系统在运行状态下的其中包含的页面设计器进行页面布局的流程图;
图12是本发明的第三实施例的web开发系统在运行状态下的其中包含的页面设计器进行设计的示意图;
图13是本发明的第四实施例的web开发系统中的脚本代码生成和修改装置的框图;以及
图14是本发明的第四实施例的web开发系统的系统架构示意图。
具体实施方式
现在将按照附图详细描述本发明的优选实施例。注意,实施例中的组件的相对布置和器件的形状仅被描述为例子,并且并不旨在将本发明的范围限制于这些例子。此外,相似的附图标记和字母在图中指代类似的项,由此,只要在一个图中定义一项,则无需对于后续的图讨论该项。
本发明的web开发系统可以在系统运行状态下进行开发。代码无需编译、部署,只需加载到服务器上就可运行。在本发明中实现了在web系统的运行状态下编写和修改代码。具体地,为了实现上述目的,本发明采用了图1所示的web开发系统。图1是本发明的web开发系统的工作原理的框图。
所述web开发系统包括:脚本代码生成和修改装置11、脚本解析器12和对象管理器13。
1、脚本代码生成和修改装置11以及脚本解析器12
现有技术中,开发人员通过Java语言编写Java应用代码,编写完成之后对代码进行编译,部署到服务器上,并且运行服务器才能实现具体预定功能的web应用系统。在需要改变功能时,需要重新编写代码,并且重新进行编译、部署,并且重新启动服务器来运行具有改变的功能的web应用系统。而在本发明中,利用了脚本代码生成和修改装置以及脚本解析器来进行代码的编写和修改。所述脚本代码生成和修改装置11对脚本代码进行开发和修改。脚本解析器12对脚本代码进行解析以生成新功能的对象类型或者修改已有功能的对象类型。
利用脚本代码和脚本解析器使得能够在web系统的运行状态下进行代码的编写和修改。并且只需将代码加载即可实现新功能或改变的功能。这使得完全摆脱了传统方式的限制,使web应用的开发和修改变得更加方便和快捷。
具体而言,所述脚本代码例如为符合groovy脚本语法规范的代码。所述脚本解析器12例如为groovy脚本语言解析器。当然,本领域技术人员可以理解,所述脚本代码可以为能够应用于web开发系统的任何其他脚本代码。脚本解析器12为能够解析脚本代码以生成功能的对象类型的任何脚本解析器。
2、对象管理器13
对象管理器13用于根据所生成的功能的对象类来生成对象,并且对功能的对象进行存储和管理。更具体地,对象管理器对每个功能对象赋予唯一标识ID,设置功能对象之间的关系。所述关系可以为当点击一个功能对象时,可以调用另一个功能对象。所述对象管理器13可以通过spring开源技术或其他能够进行功能对象的管理和设置的技术来实现。
图2是本发明的web开发系统的系统层级架构的示意图。
如图2所示,在所述web开发系统中,对象管理器对于从代码生成的对象进行管理。所述代码对象进一步与由代码生成器、代码编辑器和页面设计器生成和/或修改的脚本代码对应。
具体而言,所述代码对象包括用户接口(UI)层对象、业务逻辑层(service层)对象和数据库持久层(dao层)对象。
所述UI层对象是与最终呈现给用户的可视化页面对应的对象。例如,呈现给用户的页面中表单的格式、布局以及各字段的字体、颜色等以及其他与所呈现的页面相关的属性。
所述业务逻辑层对象是与实现业务的处理相关的对象。业务功能包括对数据库里某张业务表的数据的增删改查功能,当用户在新增页面录入业务数据后提交到系统,系统会调用业务逻辑层相应的对象和函数把用户提交的数据存入对应的数据库表中。
所述数据库持久层对象用于对数据库进行访问和存储。在所述web开发系统中,对数据库的访问和存储是以对象的形式由数据库访问器(未示出)来进行的。从而通过查询对象即可访问数据库内容。
所述数据库持久层对象访问数据库持久层引擎。所述数据库持久层引擎将数据库里的表与程序里的值对象进行映射绑定,绑定后开发人员只需对值对象里的数据进行增删改查操作,即可修改被映射了的表里的数据,无需再通过调用手工编写的sql语句的方式来对数据库数据进行操作。这一方面简化了数据库访问部分的代码,另一方面隔离了不同数据库的区别和变化,因为不同的数据库的sql语句的语法是不同的,因此使得系统可以很方便地实现对多种数据库的支持。
下面结合图3说明本发明的web开发系统的工作原理。图3是本发明的web开发系统的工作原理的流程图。
如图3所示,在步骤S101中,开发人员在web系统的运行状态下生成或修改脚本代码。在步骤S102中,脚本解析器12解析所生成或修改的代码,以生成新功能的对象类型或修改已有功能的对象类型。在步骤S103中,对象管理器根据对象类型生成对象,并且管理该对象与其他对象之间的关系。从而实现了在web系统运行时生成或改变系统功能。
另选地,在本发明中可以应用vaadin技术。vaadin技术是系统(UI)界面的渲染引擎,它包含一套丰富的(UI)控件库以及(UI)页面的渲染功能。开发人员通过调用UI控件的API来开发界面,利用vaadin开发人员不再需要像以前那样既要设计编写前端页面代码,又要设计编写服务端代码。开发人员只需要在服务端代码里通过调用vaadin就可以实现功能的界面。利用vaadin实现了前端代码和后台服务端代码的二合一,从而简化了功能代码,实现了页面与业务处理代码的统一调用统一加载,使得系统在运行时改变功能成为可能。当然,本领域技术人员可以理解,任何能够将前端代码和后台服务端代码二合一的技术都能够应用于本发明。
下面对在web系统运行状态下的系统功能的生成和修改分别进行详细的描述。
图4是本发明的web开发系统中的代码生成的流程图。
如图4所示,在步骤S201中,开发人员手工编写代码或利用代码生成器(如图5所示,下文将详细描述)快速生成代码。开发人员手工编写代码为符合脚本语法规范的代码。在步骤S202中,web开发系统加载所述代码来生成与该代码对应的功能对象。在步骤S203中,所述web系统通过运行所述功能对象来进行预览或测试,从而能够查看到web系统实际运行时的效果。在步骤S204中,将功能对象绑定到系统菜单里以供用户使用。通过上述过程来实现在web系统运行状态下的代码生成。
下面详细描述利用代码生成器快速生成代码的处理。图5为本发明的第一实施例的web开发系统中的脚本代码生成和修改装置的框图。如图5所示,根据本发明的第一实施例的脚本代码生成和修改装置包含:基础功能模板库301和代码生成器302。
所述基础功能模板库301包含与基础功能对应的代码的模板。本领域技术人员能够理解,所述基础功能为用于实现业务的基础功能。例如,对于数据库而言,所述基本功能例如为数据库内容的增加、删除、修改和查找。
所述代码生成器302用于使开发人员在运行状态下快速生成代码。开发人员在所述代码生成器302中输入参数,例如sql查询语句等,系统会自动将查询的主表名称和包含的字段名解析出来,并初始化到代码生成器的设置页面中,参数包括查询功能查询的表名以及查询列表里包含的查询字段,新增功能的表名及字段,修改功能的表名及字段,删除功能的表名和删除条件字段。开发人员可以在此基础上对参数做进一步修改,修改完成点保存,模板引擎会根据相应的模板和参数生成脚本代码。所述代码生成器302将参数加载到基础功能模板库301,最终生成想要的代码。即,代码生成器302提供一个接口以允许开发人员输入参数从而自动调用基础功能模板库301来生成相应的功能页面的代码。作为一种实现方式,所述代码生成器302可以通过freemarker开源技术将参数加载到基础功能模板库301来生成代码。所述代码生成器302是预先创建的并且已经部署到服务器上从而可直接在服务器上运行,因此,开发人员在进行开发时只需直接使用所述代码生成器302。
下面结合本发明的web系统运行时的画面描述根据第一实施例的web开发系统运行状态下的开发过程的示例。图6A到6D是第一实施例的web开发系统的在运行状态下的开发过程的示例的示意图。
图6A示出了新建项目的画面。如图6A所示,开发人员可以在代码生成器302中选择新建项目,在所述画面的对话框中输入项目的名称等信息作为参数,从而调用模板库中的与新建项目对应的模板,从而将所述参数带入模板来生成脚本代码。
图6B示出了新建应用的画面。一个项目可以由多个应用构成,通过多个应用的组合来实现具有一定功能的项目。如图6B所示,在新建应用的画面中,开发人员可以输入该应用所属于的项目以及应用的名称等来新建应用。随后再调用模板库中的相应模板生成脚本代码。
图6C示出了代码生成画面。在代码生成画面中,开发人员可以输入或选择项目和应用,并且选择与该项目和应用对应的要实现的功能,例如“新建功能”、“修改功能”、“查询功能”和“删除功能”。此后调用模板库中的相应模板来生成脚本代码。
图6D示出了通过图6A到6C的操作所生成的代码。如图6D所示,所述脚本代码中包含了通过图6A创建的项目“test”。项目“test”中包含通过图6B创建的两个应用,即,“UserMng”和“DeptMng”。并且每个项目中包含新建功能的脚本代码“CreateUI.groovy”和/或查询功能“SearchUI.groovy”。
通过图6A到图6D以示例方式示出了如何利用模板库和代码生成器生成脚本代码。当然本领域技术人员能够理解上述图6A到图6D仅是示例,实际中利用模板库和代码生成器能根据实际需要生成各种功能的脚本代码。
通过根据本发明第一实施例的web开发系统,能够在运行状态下以所见即所得的方式生成代码。即,开发人员通过该web开发系统直接访问服务器,在服务器上在运行状态下直接加载代码来生成功能页面。而不是像现有技术那样,需要在本地进行代码编写、编译和部署才能生成功能页面。这样提高了开发效率。
(第二实施例)
图7是根据本发明的第二实施例的web开发系统中的脚本代码生成和修改装置的框图。所述脚本代码生成和修改装置与第一实施例的脚本代码生成和修改装置的不同之处在于除了包含基础功能模板库301和代码生成器302以外,还包含代码编辑器503。开发人员可以通过代码编辑器503直接将脚本代码的内容显示出来进行编辑和修改,以及对一些配置文件进行编写和修改。代码修改完只需重新加载即可改变原有功能。如所述代码生成器302一样,代码编辑器503也是预先创建的并且已经部署到服务器上从而可直接在服务器上运行,因此,开发人员在进行开发时只需直接使用所述代码编辑器503即可。
在第二实施例的web开发系统中,开发人员可以通过选中要修改的功能调用与所述功能对应的代码,从而在所述代码编辑器503中直接呈现与要修改的功能页面对应的代码来进行编辑和修改。所述代码编辑器503基于实际的需求在已有基础功能上进行编辑或修改以在基础功能上实现具有特定特性的功能页面。
图8是本发明的第二实施例的web开发系统的在运行状态下进行功能修改的流程图。在步骤S601中,开发人员在功能导航里选中要修改的功能,从而代码编辑器503自动调用与该功能对应的代码文件。在步骤S602中,开发人员在代码编辑器503中对代码进行手工修改。并且在步骤S603中,重新加载修改后的代码以生成功能对象。在步骤S604中,通过运行功能对象来预览修改的功能。
通过代码编辑器503,可以对与功能对应的代码进行更精细的修改和编辑。并且修改之后的代码通过重新加载功能以修改对象的原有功能,而无需像常规web系统那样由开发人员在本地编辑代码,对代码进行编译并且部署到服务器上才能运行。
图9是示出代码编辑器503的运行状态下的示例的示意图。如图9所示,在系统中直接呈现代码中的名为“CreateUI.groovy”的代码来进行修改。
通过根据本发明的第二实施例的web开发系统,能够在运行状态下通过代码编辑器对代码进行编辑和修改。从而直接在web开发系统中非常容易地定位到要编辑或修改的代码段来进行修改,而无需人工地在源代码中费时地寻找要修改的代码段。并且将修改后的代码直接加载就可运行。无需像常规web系统那样由开发人员在本地编辑代码,对代码进行编译并且部署到服务器上才能运行。
(第三实施例)
图10是根据本发明的第三实施例的web开发系统中的代码生成和修改装置的框图。所述代码生成和修改装置与第一实施例的代码生成和修改装置的不同之处在于除了基础功能模板库301和代码生成器302以外,还包含页面设计器804。
在第三实施例中,页面设计器804用于可视化地对最终呈现给用户的功能页面的效果进行设计。即,页面设计器804对用户接口层代码进行可视化的修改。开发人员可以通过页面设计器804可视化地直观地通过拖拽将新的控件添加到原有页面,或者改变原有控件的位置和颜色等样式属性。开发人员还可以在使用设计器804设计页面的时候给每个控件定义权限,例如可见不可见,可用不可用。控件的权限被定义之后,在权限设置的功能里可以对用户或者角色进行控件权限的授权,有权限的用户才能在相应的页面上看到或使用相应的控件。
图11是本发明的第三实施例的web开发系统的在运行状态下通过页面设计器进行页面修改的流程图。在步骤S901中,开发人员在功能导航里选中要修改的功能,从而页面设计器804自动显示与该功能对应的可视化页面。在步骤S902中,开发人员在页面设计器804中通过控件的选择以及拖拽等操作对页面的呈现效果进行修改,从而对与该页面的呈现效果对应的代码及性能进行修改。并且在步骤S903中,重新加载修改后的代码以生成功能对象。在步骤S904中,通过运行功能对象来预览修改的功能。
图12示出根据第三实施例的页面设计器804的画面的示例示意图。如图12所示,左侧为最终呈现的页面的效果,右侧为可以在所述页面上添加的控件。在左侧可以设置表单的宽度、高度等。如图12右侧所示,所述控件包括页面的颜色、排版等。开发人员可以通过选择控件来对页面的呈现效果进行修改。
通过根据本发明的第三实施例的web开发系统,能够在运行时态下以可视化方式对页面的呈现属性进行修改。从而直接在web开发系统中可视化地修改与UI层对应的代码。而无需人工地在源代码中费时地寻找要修改的UI层代码段。并且将修改后的代码直接加载就可运行。无需像常规web系统那样由开发人员在本地编辑代码,对代码进行编译并且部署到服务器上才能运行。
(第四实施例)
图13是本发明的第四实施例的web开发系统中的代码生成和修改装置的框图。
图13的代码生成和修改装置与图5所示的代码生成和修改装置的不同之处是增加了代码编辑器1103和页面设计器1104。代码编辑器1103与图7所示的代码编辑器503相同,并且页面设计器1104与图10所示的页面设计器804相同。对于代码编辑器1103和页面设计器1104的描述与前文针对代码编辑器503和页面设计器804的描述相同,这里不再赘述。
图14是本发明的第四实施例的web开发系统的系统层级架构的示意图。图14的第四实施例的系统层级架构中详细描绘了代码生成器、代码编辑器与页面设计器与代码对象的各层的关系。从图14可以看出,代码生成器、代码编辑器和页面设计器对与页面层对象和业务逻辑层对象对应的代码进行生成和修改。
虽然针对第四实施例示出了代码生成器、代码编辑器和页面设计器与代码的对象的关系。但是本领域技术人员可以理解,上述关系同样适用于第一实施例到第三实施例。例如,对于第一实施例而言,代码生成器对与页面层对象和业务逻辑层对象对应的代码进行生成和修改。对于第二实施例而言,代码生成器和代码编辑器对与页面层对象和业务逻辑层对象对应的代码进行生成和修改。对于第三实施例而言,代码生成器和页面设计器对与页面层对象和业务逻辑层对象对应的代码进行生成和修改。
通过根据本发明的第四实施例的web开发系统,能够在运行时态下通过代码编辑器对代码进行编辑和修改。从而直接在web开发系统中非常容易地定位到要编辑或修改的代码段来进行修改,而无需人工地在源代码中费时地寻找要修改的代码段。并且将修改后的代码直接加载就可运行。无需像常规web系统那样由开发人员在本地编辑代码,对代码进行编译并且部署到服务器上才能运行。
此外,根据本发明的web开发系统,不仅在开发阶段可以以运行时态以所见即所得的方式进行开发。并且在使用过程中,当系统要进行升级时,只需修改脚本代码并由系统的服务器重新加载脚本代码即可升级。而无需像现有技术中那样需要对系统进行停机,对代码进行重新编译、部署和运行。这样提高了升级效率并且使得用户体验度更加良好。并且这样的升级可以是局部的或者全部的。使得升级变得更加灵活。
此外,用此web开发系统开发的每个功能模块都可以被控件化,从而每个功能模块可以被其他功能模块直接调用。这样每个模块的代码可以做到高度的重用。
虽然上面参照示例性实施例描述了本发明,但是本发明并不仅限于上述具体实施方式。本领域普通技术人员在本发明的实质范围内作出的变化、改型、添加或替换,也应属于本发明的保护范围。