定义模型

1.XML和模型

    理论上来说任意一个XML文件都是模型,但并不是每一个XML都能够按照我们想象的那样执行,比如下面的XML代码也是一个模型,但执行后并不会在控制台打印出Hello World。

<?xml version="1.0" encoding="utf-8"?>
 
<Println  message="Hello World!"></Println>

    把上面的XML代码保存为dml文件,如helloworld1.dml,使用dml.cmd helloworld1.dml或dml.sh helloworld1.dml执行后控制台里并不会打印Hello World!字样。

2.定义模型

    我们可以使用一个模型来定义另一个模型,比如下面的模型可以作为helloworld1.dml模型的定义。

<thing name="Println">
    <attribute name="message"/>
    <actions>
        <GroovyAction name="run" code="println self.message;"/>
     </actions>
</thing>

    把上面的XML代码保存为dml文件,如Println.dml。然后修改helloworld1.dml模型,让Println.dml模型作为它的定义。

<?xml version="1.0" encoding="utf-8"?>
 
<Println  message="Hello World!" descriptors="Println"></Println>

    修改helloworld1.dml模型,如上加入descriptors属性,其中值Println对应的是Println.dml模型。

    使用dml.cmd helloworld1.dml或dml.sh helloworld1.dml来执行修改过的helloworld1.dml模型,可以看到控制台中打印出了Hello World!字样。还可以发现修改helloworld1.dml模型的message属性,执行后打印出来的就是message属性的值。

3.模型定义的内容

3.1.定义属性

    模型的定义模型可以用来定义模型有那些属性,如上面的Println.dml模型中的<attribute name="message"/>子节点定义了helloworld1.dml模型有message属性。可以定义多个属性。

3.2.定义行为

    模型的定义模型的<actions/>节点下的子节点是模型行为的定义,比如Println.dml模型中的<GroovyAction name="run" code="println self.message;"/>定义了一个名为run的行为,这个行为是用Groovy脚本实现的。可以定义多个行为。

 

Copyright ©  2007-2014 XWorker.org  版权所有

沪ICP备08000575号