1.动作和行为的说明
在模型编程X-Meta引擎里任何事物模型都是可执行的,因此首先任何事物模型都是可执行的动作,而如果一个动作是通过它的父事物模型调用的,那么也称它是父事物模型的行为。
注意:在X-Meta引擎中是定义了任何事物都可以转化为动作执行,但真正能够直接执行的是JavaAction模型,而其它所有模型都需要有相关的解释执行的方法。
2.动作模型示例

如上图定义在actions下的helloJava和helloGroovy和helloPrintln是ActionBase的行为,另外它们本身也是动作。
3.执行动作的代码说明
//获取根事物模型
Thing actionBase = world.getThing("xworker.example.thing.actions.ActionBase");
//获取helloJava,以helloJava为例
Thing helloJava = world.getThing("xworker.example.thing.actions.ActionBase/@actions/@helloJava");
//事物可以I转化为动作执行
Action action = helloJava.getAction();
action.run();
//也可以作为actionBase的行为,实际上执行的是上面的action
actionBase,doAction("helloJava");
<?xml version="1.0" encoding="utf-8"?>
<ActionBaseDesc name="ActionBase" descriptors="xworker.example.thing.actions.ActionBaseDesc">
<description><![CDATA[<h3>定义事物的动作</h3>
<p> 事物的动作也是事物,定义在一个事物名为actions的子节点下.</p>
<p> 动作可以使用多种语言编写,也可以集成新的语言,动作本事也是事物,所以还可以使用事物类型的动作。</p>
<h3>执行事物的动作</h3>
<p> 事物的动作一般在代码里调用,也可以通过事物编辑器上的工具栏选择执行,
或通网页链接,本事物的其它几个属性标签也分别演示了以上几种情况。</p>
<p> </p>]]></description>
<runInHtml><![CDATA[<h3>在网页中运行动作</h3>
<p> XWorker和内置的浏览器有集成,可以通过JavaScript执行事物的行为,方法是invoke函数, 如:</p>
<p> invoke('runThing:<thingPath>:<method>'),其中thingPath是事物的路径,method是方法名。</p>
<h3>本事物的动作列表</h3>
<p> 以下是本事物的几个动作的链接,点击可以执行,在控制台查看运行的结果。</p>
<ul>
<li><a href="javascript:invoke('runThing:xworker.example.thing.actions.ActionBase:helloGroovy')">helloGroovy</a></li>
<li><a href="javascript:invoke('runThing:xworker.example.thing.actions.ActionBase:helloJava')">helloJava</a></li>
<li><a href="javascript:invoke('runThing:xworker.example.thing.actions.ActionBase:helloPrintln')">helloPrintln</a></li>
</ul>]]></runInHtml>
<actions>
<JavaAction name="helloJava" isSynchronized="false" className="Test" methodName="run">
<code><![CDATA[import org.xmeta.ActionContext;
public class Test{
public static void run(ActionContext actionContxt){
System.out.println("Hello World from Java");
}
}]]></code>
</JavaAction>
<GroovyAction name="helloGroovy" code="println("Hello World from Groovy");"></GroovyAction>
<Println name="helloPrintln" message="Hello World from Println"></Println>
</actions>
</ActionBaseDesc>