模型的基本操作

1.编写模型的方式

    模型可以通过手工编写,也可以用程序自动生成。手工编写模型的话可以用XML格式,程序自动生成一般用Properties格式。

2.World对象

import org.xmeta.World;

//World对象是用来管理模型的容器,它只有一个唯一的实例
World world = World.getInstance();

//在系统启动时初始化world,指定一个引擎的工作路径
world.init("."); 

    World对象初始化需要一个路径,默认为当前Java应用的工作路径。这个路径用于查找模型和生成临时文件等用途,比如模型引擎在运行时可能会动态编译Java,而生成的Java类是放到这个路径下的某个目录下的。

3.获取模型

import org.xmeta.Thing;

//通过模型的路径来获取模型
Thing helloWorld = world.getThing("org.xmeta.HelloWorld");
Thing browser = world.getThing("org.xmeta.HelloWorld/@Browser");
Thing browser1 = world.getThing("org.xmeta.HelloWorld/@Browser1");

    模型也称为事物(Thing),World的getThing(String path)方法用于获取一个模型,其中path是模型的路径。在上面的示例中browser是第一个name="Browser"的子节点,browser1是那个_xmeta_id="Browser1"的子节点。

4.操作模型的属性

    在Thing对象里,模型的属性是存放在一个Map<String, Object>中的,可以通过put、get和getXXX方法来操作它。

//设置属性
thing.put("name", "zhangsan");
thing.put("age", 40);

//获取属性的值
Object name = thing.get("name");
Object age = thing.get("age");
int age = thing.getInt("age");

    属性的值的类型是Java对象,但通常建议只使用Java的基本类型,因为存储时需要序列化属性的值。获取属性是可以通过getXXX方法来获取,其中XXX代表类型,它可以把属性值转化为指定的XXX类型。

5.操作模型的子节点

//遍历模型子节点
for(Thing child : thing.getChilds()){
     ......
}

//通过子路径获取指定的子节点
Thing browser = thing.getThing("@Browser");

//添加子节点
Thing child = new Thing();
thing.addChild(child);

//子节点是存储在List中的,也可以添加到指定索引位置
thing.addChild(child, index);

6.执行动作和模型的行为

import org.xmeta.Action;
import org.xmeta.ActionContext;
import org.xmeta.Thing;

//动作上下文,用来存储变量和线程执行状态等
ActionContext actionContext = new ActionContext();

//转化为动作来执行
Action action = thing.getAction();
ation.run(actionContext);

//执行模型的行为,根据行为的名字来执行
thing.doAction("run", actionContext);

 

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

沪ICP备08000575号