程序包 org.xmeta
类 ActionContext
java.lang.Object
org.xmeta.ActionContext
动作上下文有时也叫变量上下文。
变量上下文是执行动作时的变量空间,起到函数调用时栈的作用,是一个Stack和Map的综合体。
变量上下文通过栈的深度来表示全局变量和局部变量,深度越浅则越靠近全局变量,范围0是全局变量。
变量上下文是线程绑定的,除了创建时的变量时公用的,其他变量是线程各自的。
如果一个变量上下文的构造参数是另一个变量上下文,那么会先把用于构造的变量上下文的 所有变量绑定压入栈中,因此两个变量上下文将使用相同的全局变量,但使用各自的最新的 局部变量。由于原先的变量上下文的变量绑定被新的变量上下文所引用,因此当原先的动作 上下文把一个变量绑定移除栈的时候,新的变量上下文还保持这个变量绑定的引用,因此需要注意一下内存的问题。
- 作者:
- zyx
-
嵌套类概要
-
字段概要
字段修饰符和类型字段说明static final int打断状态,一般返回到上一个循环处static final int取消的状态,取消当前的动作执行static final int继续从循环处执行static final int抛出异常的状态,一般到异常处理处结束static final String保存父变量上下文的约定的名称static final Stringstatic final Stringstatic final int返回值的状态,返回到动作被初始调用的地方static final int正常的运行状态static final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final String -
构造器概要
构造器构造器说明默认构造函数,并创建一个所有线程都共用的全局变量栈。ActionContext(boolean managedByPool) ActionContext(ActionContext actionContext) 通过给定的变量绑定创建变量上下文,其中传入的变量上下文的栈全部放入不可push和pop的栈中, 并压入一个新的所有线程都共用的全局变量栈,传入的变量上下文比新的全局变量更加全局。ActionContext(Bindings bindings) 创建一个变量上下文,使用指定的全局变量Bindings。 -
方法概要
修饰符和类型方法说明void_break()voidvoid_exception(Object throwedObject) voidvoidclear()booleancontainsKey(Object key) booleancontainsValue(Object value) entrySet()boolean返回变量是否为null,变量可以有多个,只要有一个为null那么就返回false,没有指定变量或全部变量都不为null返回true。g()获取全局变量的缩写。返回动作调用列表,最开始的是堆栈的底部,最后的是堆栈的顶部。getBigDecimal(String key) getBigInteger(String key) booleangetBoolean(String key) bytebyte[]doublefloat获取全局变量。intgetLabel()获取当前本地变量.long<T> TgetParameter(Object key) 获取参数Bindings栈中的变量的值。getScope()获取当前的局部变量范围,如果没有这是局部变量范围将返回null。getScope(int index) 返回指定范围的变量绑定。根据动作模型的路径来获得变量范围。返回变量绑定的列表。int返回变脸范围的迭代大小。int返回所有包括线程之前创建的变量范围大小。short获取当前堆栈信息。int返回动作执行的状态。返回调用动作的模型列表,最开始的是堆栈的底部,最后的堆栈的顶部的模型。inthashCode()voidinitActionListener(ActionListenerExecutor executor) 把上下文中的动作监听器注入到ActionListenerExecutor中。boolean返回是否禁止了全局变量上下文。booleanisEmpty()keySet()l()获取局部变量的缩写。l(int index) 返回指定索引的局部变量集合,用于多个局部变量包含的情形,如Begin套Begin。peek()返回最顶层的变量绑定。pop()弹出最顶层的变量绑定。voidvoid打印堆栈信息到控制台。push()压入一个变量绑定到堆栈中,当传入的变量绑定为null时自动创建一个新的。voidpushAction(Action action) 设置变量上下文中一个变量的值,设置值的方法是从栈的顶端的Bindings向栈底端的Bindings找,如果Bindings包含 相应的键那么调用Bindings的put方法,如果所有的Bingings都不包含给定的键值,没有那么设置到顶端的Bindings中。根据指定的模型从堆栈中寻找变量范围,并设置变量范围的值。void把某个值放到指定的变量范围中。voidvoidsetStatus(int status) 设置动作的执行状态。voidsetThrowedObject(Object obj) intsize()toString()voidtrace()使用XWorker的xworker.lang.context.DebugContext模型来打印栈信息,只针对当前栈及调用的子栈。values()从接口继承的方法 java.util.Map
compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
字段详细资料
-
RUNNING
public static final int RUNNING正常的运行状态- 另请参阅:
-
RETURN
public static final int RETURN返回值的状态,返回到动作被初始调用的地方- 另请参阅:
-
CANCEL
public static final int CANCEL取消的状态,取消当前的动作执行- 另请参阅:
-
BREAK
public static final int BREAK打断状态,一般返回到上一个循环处- 另请参阅:
-
CONTINUE
public static final int CONTINUE继续从循环处执行- 另请参阅:
-
EXCEPTION
public static final int EXCEPTION抛出异常的状态,一般到异常处理处结束- 另请参阅:
-
RESULT_SUCCESS
- 另请参阅:
-
RESULT_FAILURE
- 另请参阅:
-
RUNTYPE_DEFAULT
- 另请参阅:
-
RUNTYPE_SUCCESS
- 另请参阅:
-
RUNTYPE_RANDOM
- 另请参阅:
-
RUNTYPE_RANDOM_ONE
- 另请参阅:
-
RUNTYPE_RANDOM_RANDOM
- 另请参阅:
-
RUNTYPE_RANDOM_SUCCESS
- 另请参阅:
-
RUNTYPE_RANDOM_RATE
- 另请参阅:
-
PARENT_CONTEXT
保存父变量上下文的约定的名称- 另请参阅:
-
-
构造器详细资料
-
ActionContext
public ActionContext()默认构造函数,并创建一个所有线程都共用的全局变量栈。 -
ActionContext
public ActionContext(boolean managedByPool) -
ActionContext
通过给定的变量绑定创建变量上下文,其中传入的变量上下文的栈全部放入不可push和pop的栈中, 并压入一个新的所有线程都共用的全局变量栈,传入的变量上下文比新的全局变量更加全局。- 参数:
actionContext- 变量上下文
-
ActionContext
创建一个变量上下文,使用指定的全局变量Bindings。- 参数:
bindings- 变量范围
-
-
方法详细资料
-
pushAction
-
popAction
public void popAction() -
getAction
-
exists
返回变量是否为null,变量可以有多个,只要有一个为null那么就返回false,没有指定变量或全部变量都不为null返回true。- 参数:
vars- 变量列表- 返回:
- 变量是否都不为Null
-
initActionListener
把上下文中的动作监听器注入到ActionListenerExecutor中。- 参数:
executor- 动作监听器执行器
-
getStatus
public int getStatus()返回动作执行的状态。- 返回:
- 动作的执行状态
-
isDisableGlobalContext
public boolean isDisableGlobalContext()返回是否禁止了全局变量上下文。- 返回:
- 是否禁止
-
setStatus
public void setStatus(int status) 设置动作的执行状态。- 参数:
status- 执行状态
-
_break
public void _break() -
_continue
public void _continue() -
_return
-
_exception
-
push
-
push
压入一个变量绑定到堆栈中,当传入的变量绑定为null时自动创建一个新的。- 参数:
bindings- 变量绑定- 返回:
- 压入的变量绑定
-
pushPoolBindings
-
peek
返回最顶层的变量绑定。- 返回:
- 最顶层的变量绑定。
-
pop
弹出最顶层的变量绑定。- 返回:
- 弹出的最顶层的变量绑定
-
getScopes
返回变量绑定的列表。- 返回:
- 变量绑定列表
-
getScope
获取当前的局部变量范围,如果没有这是局部变量范围将返回null。- 返回:
- 变量范围
-
getLocalScope
获取当前本地变量.- 返回:
- 变量范围
-
getGlobalScope
获取全局变量。- 返回:
- 变量范围
-
g
获取全局变量的缩写。- 返回:
- 全局变量范围
-
l
获取局部变量的缩写。- 返回:
- 本地变量范围
-
l
返回指定索引的局部变量集合,用于多个局部变量包含的情形,如Begin套Begin。- 参数:
index- 索引,从0开始,0是最近的那个局部变量范围- 返回:
- 局部变量集合
-
trace
public void trace()使用XWorker的xworker.lang.context.DebugContext模型来打印栈信息,只针对当前栈及调用的子栈。 相当于peek().setContextThing(world.getThing("xworker.lang.context.DebugContext")); 如果xworker.lang.context.DebugContext模型不存在,则不执行任何操作。 -
getStackTrace
获取当前堆栈信息。- 返回:
- 堆栈信息
-
printStackTrace
public void printStackTrace()打印堆栈信息到控制台。 -
getScope
返回指定范围的变量绑定。- 参数:
index- 变量范围- 返回:
- 变量绑定
-
getScope
根据动作模型的路径来获得变量范围。- 参数:
actionThingPath- 动作路径- 返回:
- 动作路径对应的变量范围
-
getScopesSize
public int getScopesSize()返回变脸范围的迭代大小。- 返回:
- 变量范围的大小
-
getScopesSizeAll
public int getScopesSizeAll()返回所有包括线程之前创建的变量范围大小。- 返回:
- 变量栈的大小
-
clear
public void clear() -
containsKey
- 指定者:
containsKey在接口中Map<String,Object>
-
containsValue
- 指定者:
containsValue在接口中Map<String,Object>
-
entrySet
-
get
-
getParameter
获取参数Bindings栈中的变量的值。- 参数:
key- 键- 返回:
- 对应key的值
-
get
-
getActions
返回动作调用列表,最开始的是堆栈的底部,最后的是堆栈的顶部。- 返回:
- 动作调用列表
-
getThings
返回调用动作的模型列表,最开始的是堆栈的底部,最后的堆栈的顶部的模型。- 返回:
- 调用动作的模型列表
-
isEmpty
public boolean isEmpty() -
keySet
-
put
设置变量上下文中一个变量的值,设置值的方法是从栈的顶端的Bindings向栈底端的Bindings找,如果Bindings包含 相应的键那么调用Bindings的put方法,如果所有的Bingings都不包含给定的键值,没有那么设置到顶端的Bindings中。 要确保设置全局变量的本地变量,可以通过getScope取得相应的Bindings,然后在赋值。 -
put
根据指定的模型从堆栈中寻找变量范围,并设置变量范围的值。- 参数:
key- 变量的keyvalue- 变量的值scopeThingPath- 变量范围路径- 返回:
- 变量值
-
putTo
把某个值放到指定的变量范围中。- 参数:
key- 变量keyscopeThingPath- 路径- 返回:
- 变量值
-
putAll
-
remove
-
size
public int size() -
values
-
setThrowedObject
-
getThrowedObject
-
toString
-
getString
-
getByte
-
getShort
-
getInt
-
getLong
-
getBoolean
-
getBytes
-
getDate
-
getDouble
-
getFloat
-
getBigDecimal
-
getBigInteger
-
getObject
-
hashCode
public int hashCode() -
getLabel
-
setLabel
-