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

描述者:
MetaDescriptor3
thing
继承:
SelfAction

代码生成器,主要功能是生成、替换或者修改目标文件,一次执行只处理一个文件。

文件路径的确认方式

    默认读属性filePath,通过重载getFilePath方法自定义文件路径。

文件生成方式

    生成一次:如果目标文件不存在生成,否则不征程。
    覆盖:用新的内容覆盖旧的内容。
    替换内容:替换目标文件的指定内容。指定内容使用$#<name>#> $#<name>#>来包围要替换的内容,其中name是内容参数。

文件内容

    Content下的子节点为文件内容定义,可以定义多个,但如果是生成文件或覆盖文件则只使用第一个,当替换内容时每一个内容都使用自己名字替换目标文本中的内容。

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

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

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

           processAttributeTemplate
          

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

           run
          
           setVar
          

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

 
子事物摘要
           Contents(内容列表)
          内容的列表,通过内容事物的toString方法生成文本内容。
           actions
          
           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(禁止全局上下文)点击打开事物

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


fileEncoding点击打开事物


filePath点击打开事物

文件路径。


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

不要修改默认值。


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

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


label点击打开事物


log点击打开事物

是否打印日志。


name点击打开事物


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


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

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


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


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

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


type点击打开事物


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

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


varScope点击打开事物

变量的输出范围。

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

本地变量范围

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

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


 
方法详细信息

getFilePath


getVarScope

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

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


processAttributeTemplate

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


run


setVar

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


 
子事物详细信息

Contents(内容列表)点击打开事物

内容的列表,通过内容事物的toString方法生成文本内容。


actions点击打开事物


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

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


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

脚本的输入参数。

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

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

注:校验功能未实现。


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

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

注:校验功能未实现。


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

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

注:校验功能未实现。