代码生成器,主要功能是生成、替换或者修改目标文件,一次执行只处理一个文件。
文件路径的确认方式
默认读属性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(返回值)
指定脚本有那些输出数据。 |
字段详细信息 |
---|
如果为true,那么可以在属性中使用freemarker模板,在动作执行前会把有模板的属性生成具体属性。
比如<name="distPath" path="${projectName}/dist"/>,如果变量上下文中projectName是xmeta,那么执行时会变成<name="distPath" path="xmeta/dist/"/>。
注意事项:
使用模板属性后,会把动作事物detach出一个新的事物,但是新的事物的路径和元事物是一样的,即是克隆出了一个属性不一样的新事物,如果保存这个事物,那么会覆盖原有事物。
只针对解释方式(interpretationType)为Self的动作。
是否子节点的属性也当做模板处理,默认false。
如果为true,那么无论如何执行到本动作时都会创建一个新的本地变量范围,任何这个动作的子动作都会以此为变量范围。
如果一个动作是全局上下文的动作,那么应该禁止,否则会造成递归的无限循环。
文件路径。
不要修改默认值。
相当于Java的synchronized,如果为真所有线程该方法同步执行。
是否打印日志。
如果保存返回值,那么保存到哪一个变量中。
如果抛出异常,那么动作的任何异常都会被抛出,否则只在日志中打印并返回failure。
如果为真,执行其他动作,其他动作在引用动作路径中设定。
变量的输出范围。
脚本中可能含有一些脚本的全局变量,这些脚本的全局变量可以通过varScope参数设定输出到哪一个变量范围里,如果选择Local那么输出到当前的动作变量范围中,如果选择Global那么输出到全局变量范围里(ActionContext的底层变量范围),如果输入是动作路径,那么输出到相应动作的变量范围,如果是数字,那么输入到指定变量范围中,正数表示从0往上数,负数表示从顶部往下数。
本地变量范围
一般情况下执行一个事物的动作时会创建一个变量范围,如thing.doAction("xxx", actionContext),这个动作的任何子动作默认都使用这个变量范围,但是含有循环或条件的动作可能会重新产生一个变量范围,如do、while、switch、if等动作会产生一个新的本地变量范围,这些子动作的本地变量在do、while等执行完毕后会丢弃。
一个子动作是否会生成一个本地范围是由子动作本身决定的,因此需要参看动作的说明,默认情况下是不会产生的,因此会产生本地范围的动作最好在说明文档中注明。
方法详细信息 |
---|
这个方法已作废,没办法获取真正的变量范围,请使用org.xmeta.util.UtilAction.getVarScope(Thing, ActionCotnext);方法获取变量范围。
返回本动作指定的变量输出范围。
先从self detach一个事物,然后处理节点和子节点的属性模板。
设置变量值,放入的变量范围根据varScope获取。
子事物详细信息 |
---|
内容的列表,通过内容事物的toString方法生成文本内容。
包含有动作上下文子事物的索引的事物,动作上下文可以注册到此事物下,在使用动作上下文的地方可以快速创建动作上下文子事物。
脚本的输入参数。
在处理流程中数据是通过类似Map的上下文传递的,输入参数可以指定需要那些参数传入,输入参数是可选的,指定输入参数后可以校验参数,如果选择校验那么在校验出错时不会执行脚本程序。
上下文和输入参数都用于执行程序前的数据输入,只不过上下文是主动获取输入数据的,而输入参数是被动输入的。比如数据库的session就是通过上下文获得的,而web表单提交的参数就是被动传入的。
注:校验功能未实现。
指定脚本有那些输出数据。
注:校验功能未实现。
指定脚本有那些输出数据。
注:校验功能未实现。