xworker.lang.actions.SelfAction
事物 SelfAction(SelfAction)点击打开事物点击浏览描述

描述者:
MetaDescriptor3
thing
继承:
动作

SelfAction是由事物定义的动作,执行时self变量为自己,通过thing.doAction("run", actionContext)的方式执行的动作。

字段摘要
           String attributeTemplate(属性模板)
           如果为true,那么可以在属性中使用freemarker模板,在动作执行前会把有模板的属性生成具体属性。
           String childsAttributeTemplate(子节点属性模板)
           是否子节点的属性也当做模板处理,默认false。
           String createLocalVarScope(创建本地变量)
           如果为true,那么无论如何执行到本动作时都会创建一个新的本地变量范围,任何这个动作的子动作都会以此为变量范围。
           String disableGlobalContext(禁止全局上下文)
           如果一个动作是全局上下文的动作,那么应该禁止,否则会造成递归的无限循环。
           String interpretationType(解释方式)
           不要修改默认值。
           String isSynchronized(是否同步)
           相当于Java的synchronized,如果为真所有线程该方法同步执行。
           String name(名称)
           
           String otherActionPath(引用动作路径)
           
           String returnVarName(返回值变量名称)
           如果保存返回值,那么保存到哪一个变量中。
           String saveReturn(保存返回值)
           
           String throwException(抛出异常)
           如果抛出异常,那么动作的任何异常都会被抛出,否则只在日志中打印并返回failure。
           String useOtherAction(引用其他动作)
           如果为真,执行其他动作,其他动作在引用动作路径中设定。
           String varScope
           变量的输出范围。
 
方法摘要
           getVarScope
          

这个方法已作废,没办法获取真正的变量范围,请使用org.xmeta.util.UtilAction.getVarScope(Thing, ActionCotnext);方法获取变量范围。

返回本动作指定的变量输出范围。

           processAttributeTemplate
          

先从self detach一个事物,然后处理节点和子节点的属性模板。

           setVar
          

设置变量值,放入的变量范围根据varScope获取。

 
子事物摘要
           contexts(上下文列表)
          包含有动作上下文子事物的索引的事物,动作上下文可以注册到此事物下,在使用动作上下文的地方可以快速创建动作上下文子事物。
           ins(输入参数列表)
          脚本的输入参数。
           outs(输出参数列表)
          指定脚本有那些输出数据。
           returnValue(返回值)
          指定脚本有那些输出数据。
 
字段详细信息

attributeTemplate(属性模板)点击打开事物

如果为true,那么可以在属性中使用freemarker模板,在动作执行前会把有模板的属性生成具体属性。

比如<name="distPath"  path="${projectName}/dist"/>,如果变量上下文中projectName是xmeta,那么执行时会变成<name="distPath" path="xmeta/dist/"/>。

注意事项:

    使用模板属性后,会把动作事物detach出一个新的事物,但是新的事物的路径和元事物是一样的,即是克隆出了一个属性不一样的新事物,如果保存这个事物,那么会覆盖原有事物。

    只针对解释方式(interpretationType)为Self的动作。


childsAttributeTemplate(子节点属性模板)点击打开事物

是否子节点的属性也当做模板处理,默认false。


createLocalVarScope(创建本地变量)点击打开事物

如果为true,那么无论如何执行到本动作时都会创建一个新的本地变量范围,任何这个动作的子动作都会以此为变量范围。


disableGlobalContext(禁止全局上下文)点击打开事物

如果一个动作是全局上下文的动作,那么应该禁止,否则会造成递归的无限循环。


interpretationType(解释方式)点击打开事物

不要修改默认值。


isSynchronized(是否同步)点击打开事物

相当于Java的synchronized,如果为真所有线程该方法同步执行。


name(名称)点击打开事物


otherActionPath(引用动作路径)点击打开事物


returnVarName(返回值变量名称)点击打开事物

如果保存返回值,那么保存到哪一个变量中。


saveReturn(保存返回值)点击打开事物


throwException(抛出异常)点击打开事物

如果抛出异常,那么动作的任何异常都会被抛出,否则只在日志中打印并返回failure。


useOtherAction(引用其他动作)点击打开事物

如果为真,执行其他动作,其他动作在引用动作路径中设定。


varScope点击打开事物

变量的输出范围。

脚本中可能含有一些脚本的全局变量,这些脚本的全局变量可以通过varScope参数设定输出到哪一个变量范围里,如果选择Local那么输出到当前的动作变量范围中,如果选择Global那么输出到全局变量范围里(ActionContext的底层变量范围),如果输入是动作路径,那么输出到相应动作的变量范围,如果是数字,那么输入到指定变量范围中,正数表示从0往上数,负数表示从顶部往下数。

本地变量范围

一般情况下执行一个事物的动作时会创建一个变量范围,如thing.doAction("xxx", actionContext),这个动作的任何子动作默认都使用这个变量范围,但是含有循环或条件的动作可能会重新产生一个变量范围,如do、while、switch、if等动作会产生一个新的本地变量范围,这些子动作的本地变量在do、while等执行完毕后会丢弃。

一个子动作是否会生成一个本地范围是由子动作本身决定的,因此需要参看动作的说明,默认情况下是不会产生的,因此会产生本地范围的动作最好在说明文档中注明。


 
方法详细信息

getVarScope

这个方法已作废,没办法获取真正的变量范围,请使用org.xmeta.util.UtilAction.getVarScope(Thing, ActionCotnext);方法获取变量范围。

返回本动作指定的变量输出范围。


processAttributeTemplate

先从self detach一个事物,然后处理节点和子节点的属性模板。


setVar

设置变量值,放入的变量范围根据varScope获取。


 
子事物详细信息

contexts(上下文列表)点击打开事物

包含有动作上下文子事物的索引的事物,动作上下文可以注册到此事物下,在使用动作上下文的地方可以快速创建动作上下文子事物。


ins(输入参数列表)点击打开事物

脚本的输入参数。

在处理流程中数据是通过类似Map的上下文传递的,输入参数可以指定需要那些参数传入,输入参数是可选的,指定输入参数后可以校验参数,如果选择校验那么在校验出错时不会执行脚本程序。

上下文和输入参数都用于执行程序前的数据输入,只不过上下文是主动获取输入数据的,而输入参数是被动输入的。比如数据库的session就是通过上下文获得的,而web表单提交的参数就是被动传入的。

注:校验功能未实现。


outs(输出参数列表)点击打开事物

指定脚本有那些输出数据。

注:校验功能未实现。


returnValue(返回值)点击打开事物

指定脚本有那些输出数据。

注:校验功能未实现。