事物模型和对象一样也可以具有行为,具体可以参看X-Meta引擎的相关文档。
self变量
这里只是在说明一下self变量,一个事物的行为的实现通常是Java代码或Groovy等脚本代码,在代码里可以使用一个名为self的变量,这个变量就是事物模型本身。
比如事物模型:
<Person name="Tom" age="40">
    <Child name="Smith" age="10"/>
    <actions name="actions" descriptors="actions">
        <JavaAction name="run" useOuterJava="true"   descriptors="JavaAction"
                methodName="run"  outerClassName="org.xmeta.example.PersonWithActionTest"/>
    </actions>
</Person> 
     Person模型的run方法的的实现是:
    /**
     * 事物的行为实现。
     * 
     * @param actionContext
     */
    public static void run(ActionContext actionContext){
        Thing self = (Thing) actionContext.get("self");
         
        //属性
        System.out.println("name=" + self.get("name"));
        System.out.println("age=" + self.get("age"));
 
        //子事物
        for(Thing child : self.getChilds()){
            System.out.println("child name=" + child.get("name"));
            System.out.println("child age=" + child.get("age"));
        }
    } 
     需要注意的是self变量是一个动作当做行为时执行时加入的,仅仅当做动作执行时则没有self变量。
Copyright © 2007-2014 XWorker.org 版权所有