1.基本概念
动态模型是一种面向对象的标记语言,可以在运行时编程。它使用XML这样结构化数据作为模型,模型同时也是对象,模型有属性和可以执行的行为。
SWT是Eclipse的项目,用于编写桌面程序。
RAP是Eclipse的项目,它可以让SWT程序在浏览器中运行。
XWorker是动态模型的IDE和开发环境,也包含了各种模型库。
动态模型引擎X-Meta和XWorker都是Apache2.0开源协议。
2.示例
示例截图。
示例在线网址,http://www.xworker.org/do?sc=xworker.app.orgweb.web.Index&id=1828。
3.开发环境设置
3.1.下载XWorker
XWorker是动态模型的开发环境,使用XWorker开发RAP程序需要先下载和安装XWorker。
XWorker的下载和安装地址:http://www.xworker.org/do?sc=xworker.app.orgweb.web.Index&id=175。
3.2.创建模型项目
XWorker下载和安装完毕后,准备一个空目录,创建一个名为dml.prj的空文件,表示该目录现在是一个动态模型的项目根目录。
3.3.运行Jetty
XWorker内置了Jetty,在项目目录下创建jetty.dml文件,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<SimpleHttpServer name="TestLongConnectioJettyServer" descriptors="xworker.http.server.SimpleHttpServer"
port="8080" resourcesForCopy="fckeditor,js/xworker,js/jquery,js/syntaxhighlighter"
contextPath="/test">
</SimpleHttpServer>
其中port="8080"是端口号,contextPath="/text"是web应用的路径,启动后项目在浏览器中的地址是:http://localhost:8080/test/。
在控制台下执行下面的命令来运行jetty。
#windows
dml-rap jetty
#linux
dml-rap.sh jetty
注意运行前需要确保已正确安装了XWorker。
3.4.创建在线模型编辑器
在项目目录下创建一个名为Admin.dml的文件,其内容如下。注意文件的编码为UTF-8。
<?xml version="1.0" encoding="utf-8"?>
<RwtWidget name="Admin" _xmeta_id_="903" descriptors="xworker.swt.rwt.RwtWidget">
<Shell name="shell" _xmeta_id_="126" descriptors="xworker.swt.widgets.Shell" text="登录"
CLOSE="false" MIN="false" MAX="false" RESIZE="true" width="640" height="480" pack="true">
<GridLayout name="shellGridLayout"></GridLayout>
<ThingForm name="form" column="1">
<Thing>
<attribute name="loginName" label="登录名" size="40" validateAllowBlank="false"
blankText="登录名不能为空!" en_label="LoginName"></attribute>
<attribute name="password" label="密码" inputtype="password" size="40" validateAllowBlank="false"
blankText="请输入密码!" en_label="Password"></attribute>
</Thing>
</ThingForm>
<Composite name="buttonComposite">
<GridData name="GridData" style="FILL_HORIZONTAL" horizontalAlignment="END"></GridData>
<RowLayout name="RowLayout"></RowLayout>
<Button name="loginButton" text="lang:d=登录&en=Login">
<Event name="onSelection">
<GroovyAction name="doLogin">
<code><![CDATA[import org.xmeta.ActionContext;
if(form.doAction("validate", actionContext)){
def values = form.doAction("getValues", actionContext);
if(values.loginName == "admin" && values.password == "admin"){
def ac = new ActionContext();
ac.put("parent", loginButton.getDisplay());
def thing = world.getThing("xworker.swt.xwidgets.prototypes.SimpleThingEditor");
actionContext.peek().put("parent", loginButton.getShell().getDisplay());
def newShell = thing.doAction("create", ac);
newShell.open();
shell.dispose();
}
}]]></code>
</GroovyAction>
</Event>
</Button>
</Composite>
</Shell>
</RwtWidget>
在浏览器中输入地址:http://localhost:8080/test/rap?app=Admin,可以看到登录窗口。
输入用户名admin,密码admin,点击登录按钮登录,成功后可以进入模型编辑器。
4.HelloWorld
现在开发环境已经设置好了,我们现在来编写一个简单的HelloWorld应用。
4.1.创建HelloWorld
在根目录下(最好先点中一个根据下的文件),鼠标右键菜单,选择创建事物,参看如下图。
点击确定按钮创建模型。
4.2.编辑模型
4.2.1.添加Shell子节点
在模型的编辑界面,点击添加子节点按钮。
选择Shell子节点,并添加。
4.2.2.编辑Shell子节点
Shell是窗口,属性text是窗口的标题,输入Hello World!,也可以设置下窗口的大小(witdh和height属性),然后点击保存按钮来保存模型。
4.3.运行HelloWorld
在浏览器地址栏中输入http://localhost:8080/test/rap?app=HelloWorld,可以打开HelloWorld。