事物模型和对象一样也可以具有行为,具体可以参看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-2019 XWorker.org  版权所有  沪ICP备08000575号