动作也是事物模型,因此需要先编写一个动作事物。
每个动作都有一个run方法,run方法是动作实际执行的程序。
动作事物一般继承xworker.lang.actions.SelfAction,即执行时self变量为自己,如果不需要self变量为自己则可以不继承。
动作注册到动作列表下后就和其它动作一样可以在添加动作子节点时看到了,方法是以child的方式注册到xworker.lang.actions.Actions事物下。
注意请设置group属性,通过group设置一个分类,这样比较容易找到,如有多级分类用英文逗号分割,比如:xworker.util。
如果一个动作执行时需要参数,那么可以把参数获取的方式定义为行为,比如一个动作时对文件进行操作,那么就可以实现一个getFile方法,并且允许用户重写这个方法,这样用户就可以实现自己获取文件的方式,这样动作的适用性就更强一些。
如果一个动作执行后可能会发生多种情况,比如一个Http请求可能成功也有可能失败,并且用户的处理是不同的,那么就可以为动作添加onSuccess和onException等方法,这样用户可以重写这些方法,从而能够处理不同的事件的结果。
如果动作调用动作,那么会首先压入一个变量栈,这样父动作就可以用来控制变量范围等,这个一般在大型框架中应用。
比如SWT框架里,SWT子控件的创建常常需要父控件的变量,比如事件模型需要事件拥有者如一个Button的实例,此时父控件模型的方法这样传入变量:
//SWT框架中的parent变量 actionContext.peek().put("parent", button); for(Thing child : self.getChilds()){ //child执行create方法时的parent变量为button child.doAction("create", actionContext); }
Copyright © 2007-2019 XWorker.org 版权所有 沪ICP备08000575号