第1课 规划您的应用
首先在编码前,先在纸上设计您的应用。
当您在规划一个应用时,您可以按照如下步骤进行:
- 列出应用的目标,正如教程以前所作的;
- 勾勒出界面的一个草稿;
- 仔细考虑应用的事件流;
- 确定应用的结构。
1.1 画出界面的草稿
按照界面草稿创建界面组件:
将UI勾勒出来;
该草稿包含两个部分,一个显示所有记录,另外一个显示选中记录的所有字段;
在左边是三个按钮(Add,Delete,Sample)和一个数据网格,在右端是两个按钮(Clear和Save),以及一个单记录布局;
1.2 考虑应用流
运行时,用户可以做如下事:
-
点击Sample按钮后,从数据库表中删除所有的行,添加样例行记录,并显示在数据网格中;
-
点击Add按钮后,添加一个最基本的行到数据库,并显示该数据;
-
点击Delete按钮后,从数据库中删除目前DataGrid部件中显示的字段;
-
点击Clear按钮后,从单记录布局中清除数据;
-
点击DataGrid部件中的记录,会将选中记录信息复制到单记录布局中;
-
改变所选记录中的信息,点击保存按钮后会更新所有相关的数据库行记录;
读者可能不同意这样的事件流。例如,为什么没有用户清除记录单布局后,从单记录布局中输入数据,再点击Add按钮来创建一个数据行记录?这种变化只是许多选项之一,而一个良好的学习策略是按照本教程的步骤,然后将课程所学应用到产品级的应用中。
1.3 确定应用结构
当您写一个复杂的富用户界面(RUI)应用程序时,您会在一些RUIHandler中写程序,每个都对应到一个网页或者网页的一部分。然而,在本教程中,您将只需要开发一个Handler。如前所述,一个Handler可以访问许多服务,其中一些可能就是利用EGL开发的,不管怎样,最好尽可能的使用已经存在的资源,您的RUI应用将会使用到如下产品需要的EGL项目:
com.ibm.egl.rui.dojo.widgets,它为本教程提供如下Widget类型
-
DojoButton
-
DojoCheckbox
-
DojoComboBox
-
DojoCurrencyTextBox
-
DojoDateTextBox
-
DojoTitlePane
所有这些Widget类型都基于Dojo,你还能使用到其他许多Widget。如果要了解该技术的细节,可以参考Dojo工具包(http://dojotoolkit.org/)。
com.ibm.egl.rui,它为本教程提供如下widget类型:
-
DataGrid
-
GridLayout
-
TextField
-
TextLabel
您将需要开发如下逻辑:
SQLService
专门与数据库表进行交互的服务
PaymentLib
为handlers提供代码的库
PaymentFileMaintenanceHandler
定义该Web应用的Handler。
1.4 课程学习点
在该课程中,您需要完成如下任务:
-
勾勒出的应用程序接口
-
考虑运行的事件流。
-
确定应用程序结构
在下一课中,您将创建一个Derby数据库和表。
第2课:创建项目
一个EGL应用程序被组织在一个或多个项目,其中每个对应于工作空间中的一个物理文件夹。每个项目包含有一个EGL源文件夹,该文件夹包含一个或多个包(Package),其中又会包含EGL源文件。这个是你使用EGL工作的基本层次:一个项目,然后是一个EGL源文件夹,最后是包含EGL源文件的包。
EGL源文件包含的EGL部分是你创建的类型定义。例如,服务的逻辑部分,记录(Record)部分,在记录的基础上服务便可以声明使用许多记录变量。包非常重要,它将不同部件分隔入不同的上下文环境或命名空间中:
-
一个部件的名称可能在两个不同的包中重复,然而任何EGL的源代码仍能够准确的应用其他部分,命名空间的主要好处是,不同的团队可以开发不同的EGL部件而不造成命令冲突;
-
在给定包中的每个部件名称都在该包内是独一无二的;
-
通过指定部件名称,同一个包中的部件能很容易的引用同一个包中其它部件,例如,一个记录的声明是基于该记录的部件部分MyRcordPart:myRecordMycordPart{};
-
通过指定包与部件名称,一个包中的部件能够应用到其他包中的部件,或者通过导入的快捷方法来包含部件。
-
当且仅当EGL的生成路径能够确定被引用的项目时,该项目可以引用被引用项目中的其他部件部分,本教程将会在后面给出例子。然而,不管怎样,仍然要避免不同项目中出现同样的包名称,那样使用将会在名字解析时引起问题。
您的下一个任务是创建如下项目:
PaymentService
包含EGL服务部件和相关的定义;
PaymentClient
包含富UI处理器和相关的定义;
PaymentShared
包含Web客户端(浏览器端)使用的Handler部件和Web应用服务器端使用EGL服务部件。
你可以在一个单一的项目包括所有的代码,但通过将他们分离开来,您能轻松将两种代码以不同的方式部署开来。
任何一个项目中的部件都可以在不同的项目中使用。EGL会使用一个生成路径来搜索任何未解析的引用。在该课程的后面部分,你将会将服务项目添加到客户端项目的生成路径中,而共享项目添加到服务与客户端项目的生成路径中。
2.1 创建PaymentShared项目
要创建共享项目:
-
如果在当前工作空间中已经使用过EGL,点击File>New>EGLProject。如果你还没有使用过EGL,点击File>New>Other,然后展开EGL并点击EGLProject。
-
在EGLProject窗口中,输入项目名称PaymentShared,点击模板Basic,然后点击Next。
-
在EGLSetting窗口中,接受默认值,然后点击Finish。
-
EGL创建一个名为PaymentShared的项目。注意到目录中的文件夹:
EGLSource
存放所有的包与源文件。
src
放置定制的Java源文件。这些文件在生成过程中并不会被覆盖。
JRE System Library
EGL使用该文件夹来存放JAR文件,支持Java运行时环境。
一旦你添加了第一个EGL程序,如下额外的目录将会被自动添加:
generatedJava
EGL存放生成的Java文件。
EDT Java runtime
EGL使用该文件夹来存放JAR文件,支持EDTJava运行时环境.
2.2 创建PaymentService项目
要创建EGL服务项目:
-
点击File>New>EGL Project。
-
点击EGL Project窗口,输入项目名称PaymentService,点击模板Basic或者Web2.0 client application,然后点击Next。
-
在EGLSetting窗口,检查OverrideGeneration Setting,取消JavaScriptGenerator,然后点击Next。
-
在EGLBuildPath窗口,选中PaymentShared(服务项目将使用共享项目中的部分部件),然后点击Finish;
-
在JavaBuild Path,添加PaymentShared为需要的项目。
2.3 创建PaymentClient项目
EGLRichUI项目包含有许多快捷方法来加速Web用户界面的开发。要创建一个EGLRichUI项目:
-
点击File>New>EGLProjects
-
在EGLProject窗口,输入项目名字PaymentClient,点击模板Web2 Client Application,然后点击Next。
-
在Web2.0 Client Application Setting窗口,接受默认值,然后点击Next。
-
在EGLBuildPath窗口,选中PaymentShared和PaymentService(客户端项目会使用到共享项目与服务项目中的部分部件),然后点击Finish。
-
配置项目的JavaBuild Path,添加需要的服务项目。
EGL将创建一个名为PaymentClient的项目,当你首次添加一个RichUI项目到你的工作空间时,两个其他的项目将会被自动添加进来:
-
org.eclipse.edt.rui.dojo_versionNumber
-
org.eclipse.edt.rui.widgets_versionNumber
这两个项目包含你创建RUI应用所使用的widgets和其他支持文件。
除此之外,EGL将为你的项目创建一个基础的目录结构,一个Web2.0的项目包含有如下目录:
WebContent
包含支持性文件,如CSS文件和图片。
2.4 课程要点
本科中,您将完成如下任务:
-
为服务项目与RUI应用项目开发公用的EGL项目;
-
为服务项目创建一个EGL项目;
-
为web2.0 RUI页面创建一个EGL项目;
在下节课,您将:
-
创建数据库连接;
-
创建数据库表;
-
创建一个记录,从数据库获取数据;
第3课:连接一个新的Derby数据库
使用Derby开源数据库管理器来处理应用的数据存储。
本篇教程将使用开源的Derby数据库。在本章,你将会连接到一个Derby数据库,创建将被访问的数据表。你还能可选的连接到Cloudscape、DB2®UDB或SQL Server 数据库。
按照如下步骤来创建Derby数据库:
-
在EclipseIDE中安装Derby插件;
-
在服务项目中添加Derby;
-
启动Derby服务器;
-
创建一个SQLDatabase连接;
-
新建一个SQL脚本文件,在数据库中创建表;
-
在表中创建EGL行记录;
安装Derby插件
-
按照Derby官方网站指导,将DerbyEclipse插件下载到你EclipseIDE中,如Apache Derby10.8.2.2Release(http://db.apache.org/derby/releases/release-10.8.2.2.cgi)版本。该Release版本将会有两个插件压缩zip文件:
-
derby_core_plugin– 为eclipse的其他插件提供Derbyjar文件。
-
derby_ui_doc_plugin– 在eclipse中提供ApacheDerby特性,方便数据库应用开发。
-
将插件解压缩到Eclipse主文件夹,结果,eclipse/plugins目录会收到如下文件夹:
-
org.apache.derby.core_10.8.2
-
org.apache.derby.plugin.doc_1.1.3
-
org.apache.derby.ui_1.1.3
-
重启EclipseIDE来激活Derby插件。
3.1 添加Derby特性到服务项目
要添加Derby特性到PaymentService项目:
-
在项目窗口中右击PaymentService;