模型的执行规则

1.模型的执行规则

    动态模型编程是一种解释性的编程方法,这个解释规则如下。

  1. 每一个模型都可以转化为动作,而模型转化为的动作实际上是模型本身的名为run的行为。
  2. 由于run行为本身也是一个模型,想要执行也需要转化为动作,因此回到上面的步骤1。
  3. 可以看到动作的执行方法是一个递归的方法,想要递归结束,那么需要定义有一种模型是不需要转化为动作执行的,这种动作叫做元动作,由动态模型引擎直接执行。

2.元动作JavaAction

    XWorker的动态模型引擎是使用Java实现的,所以元动作就是JavaAction。

<?xml version="1.0" encoding="utf-8"?>

<JavaAction name="create" descriptors="xworker.lang.actions.JavaAction"
     outerClassName="xworker.swt.widgets.ShellCreator" methodName="create">
</JavaAction>

    JavaAction的主要作用是调用Java的静态方法,如上面的模型代码中调用了类xworker.swt.widgets.ShellCreator的create方法,而ShellCreator的create方法的定义如下。

package xworker.swt.widgets;

import org.xmeta.ActionContext;

public class ShellCreator{
    public static Object create(ActionContext actionContext{
    }
}

    如上面的代码,XWorker的动态模型引擎实现叫做XMeta,它的相关类在org.xmeta包下。JavaAction模型能调用的是public的静态方法,并且参数固定为ActionContext,其中ActionContext是用来保存变量用的。

3.模型执行的示例

3.1.SWT的HelloWorld模型代码和运行截图

<?xml version="1.0" encoding="utf-8"?>

<Shell name="SWTHelloWorld" descriptors="xworker.swt.widgets.Shell" 
     text="Hello World" RESIZE="true" width="400" height="300">
</Shell>    

3.2.Shell模型实现了run方法

    在上面的模型里并没有定义任何动作行为,而要执行模型需要运行其run方法,所以HelloWorld模型的run方法是定义在它的描述者Shell上的。

    如上图是Shell模型的定义,可以看到它定义了一个run方法,这个run方法是使用Java编写的,所以HelloWorld模型最终是通过Java执行的。

 

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

沪ICP备08000575号