程序包 org.xmeta
类 ActionContext
- java.lang.Object
-
- org.xmeta.ActionContext
-
public class ActionContext extends Object implements Map<String,Object>
动作上下文有时也叫变量上下文。
变量上下文是执行动作时的变量空间,起到函数调用时栈的作用,是一个Stack和Map的综合体。
变量上下文通过栈的深度来表示全局变量和局部变量,深度越浅则越靠近全局变量,范围0是全局变量。
变量上下文是线程绑定的,除了创建时的变量时公用的,其他变量是线程各自的。
如果一个变量上下文的构造参数是另一个变量上下文,那么会先把用于构造的变量上下文的 所有变量绑定压入栈中,因此两个变量上下文将使用相同的全局变量,但使用各自的最新的 局部变量。由于原先的变量上下文的变量绑定被新的变量上下文所引用,因此当原先的动作 上下文把一个变量绑定移除栈的时候,新的变量上下文还保持这个变量绑定的引用,因此需要注意一下内存的问题。
- 作者:
- zyx
-
-
字段概要
字段 修饰符和类型 字段 说明 static intBREAK打断状态,一般返回到上一个循环处static intCANCEL取消的状态,取消当前的动作执行static intCONTINUE继续从循环处执行static intEXCEPTION抛出异常的状态,一般到异常处理处结束static StringPARENT_CONTEXT保存父变量上下文的约定的名称static StringRESULT_FAILUREstatic StringRESULT_SUCCESSstatic intRETURN返回值的状态,返回到动作被初始调用的地方static intRUNNING正常的运行状态static StringRUNTYPE_DEFAULTstatic StringRUNTYPE_RANDOMstatic StringRUNTYPE_RANDOM_ONEstatic StringRUNTYPE_RANDOM_RANDOMstatic StringRUNTYPE_RANDOM_RATEstatic StringRUNTYPE_RANDOM_SUCCESSstatic StringRUNTYPE_SUCCESS
-
构造器概要
构造器 构造器 说明 ActionContext()默认构造函数,并创建一个所有线程都共用的全局变量栈。ActionContext(boolean managedByPool)ActionContext(ActionContext actionContext)通过给定的变量绑定创建变量上下文,其中传入的变量上下文的栈全部放入不可push和pop的栈中, 并压入一个新的所有线程都共用的全局变量栈,传入的变量上下文比新的全局变量更加全局。ActionContext(Bindings bindings)创建一个变量上下文,使用指定的全局变量Bindings。
-
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 void_break()void_exception(Object throwedObject)void_ontinue()void_return(Object obj)voidaddContextThing(List<Thing> contextThings)把上下文中的栈设置的上下文模型加入到指定的列表中。voidclear()booleancontainsKey(Object key)booleancontainsValue(Object value)Set<Map.Entry<String,Object>>entrySet()booleanexists(String... vars)返回变量是否为null,变量可以有多个,只要有一个为null那么就返回false,没有指定变量或全部变量都不为null返回true。Bindingsg()获取全局变量的缩写。Objectget(Object key)Objectget(Object key, String scopeThingPath)ActiongetAction()List<Action>getActions()返回动作调用列表,最开始的是堆栈的底部,最后的是堆栈的顶部。BigDecimalgetBigDecimal(String key)BigIntegergetBigInteger(String key)booleangetBoolean(String key)bytegetByte(String key)byte[]getBytes(String key)DategetDate(String key)doublegetDouble(String key)floatgetFloat(String key)BindingsgetGlobalScope()获取全局变量。intgetInt(String key)StringgetLabel()BindingsgetLocalScope()获取当前本地变量.longgetLong(String key)<T> TgetObject(String key)ObjectgetParameter(Object key)获取参数Bindings栈中的变量的值。BindingsgetScope()获取当前的局部变量范围,如果没有这是局部变量范围将返回null。BindingsgetScope(int index)返回指定范围的变量绑定。BindingsgetScope(String actionThingPath)根据动作模型的路径来获得变量范围。List<Bindings>getScopes()返回变量绑定的列表。intgetScopesSize()返回变脸范围的迭代大小。intgetScopesSizeAll()返回所有包括线程之前创建的变量范围大小。shortgetShort(String key)StringgetStackTrace()获取当前堆栈信息。intgetStatus()返回动作执行的状态。StringgetString(String key)List<Thing>getThings()返回调用动作的模型列表,最开始的是堆栈的底部,最后的堆栈的顶部的模型。ObjectgetThrowedObject()inthashCode()booleanisDisableGloableContext()booleanisDisableGlobalContext()返回是否禁止了全局变量上下文。booleanisEmpty()Set<String>keySet()Bindingsl()获取局部变量的缩写。Bindingsl(int index)返回指定索引的局部变量集合,用于多个局部变量包含的情形,如Begin套Begin。Bindingspeek()返回最顶层的变量绑定。Bindingspop()弹出最顶层的变量绑定。voidpopAction()voidprintStackTrace()打印堆栈信息到控制台。Bindingspush()Bindingspush(Bindings bindings)压入一个变量绑定到堆栈中,当传入的变量绑定为null时自动创建一个新的。voidpushAction(Action action)BindingspushPoolBindings()Objectput(String key, Object value)设置变量上下文中一个变量的值,设置值的方法是从栈的顶端的Bindings向栈底端的Bindings找,如果Bindings包含 相应的键那么调用Bindings的put方法,如果所有的Bingings都不包含给定的键值,没有那么设置到顶端的Bindings中。Objectput(String key, Object value, String scopeThingPath)根据指定的模型从堆栈中寻找变量范围,并设置变量范围的值。voidputAll(Map<? extends String,? extends Object> m)ObjectputTo(String key, String scopeThingPath)把某个值放到指定的变量范围中。Objectremove(Object key)voidsetDisableGloableContext(boolean disableGloableContext)voidsetLabel(String label)voidsetStatus(int status)设置动作的执行状态。voidsetThrowedObject(Object obj)intsize()StringtoString()voidtrace()使用XWorker的xworker.lang.context.DebugContext模型来打印栈信息,只针对当前栈及调用的子栈。Collection<Object>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
抛出异常的状态,一般到异常处理处结束- 另请参阅:
- 常量字段值
-
-
构造器详细资料
-
ActionContext
public ActionContext()
默认构造函数,并创建一个所有线程都共用的全局变量栈。
-
ActionContext
public ActionContext(boolean managedByPool)
-
ActionContext
public ActionContext(ActionContext actionContext)
通过给定的变量绑定创建变量上下文,其中传入的变量上下文的栈全部放入不可push和pop的栈中, 并压入一个新的所有线程都共用的全局变量栈,传入的变量上下文比新的全局变量更加全局。- 参数:
actionContext- 变量上下文
-
ActionContext
public ActionContext(Bindings bindings)
创建一个变量上下文,使用指定的全局变量Bindings。- 参数:
bindings- 变量范围
-
-
方法详细资料
-
pushAction
public void pushAction(Action action)
-
popAction
public void popAction()
-
getAction
public Action getAction()
-
exists
public boolean exists(String... vars)
返回变量是否为null,变量可以有多个,只要有一个为null那么就返回false,没有指定变量或全部变量都不为null返回true。- 参数:
vars- 变量列表- 返回:
- 变量是否都不为Null
-
getStatus
public int getStatus()
返回动作执行的状态。- 返回:
- 动作的执行状态
-
isDisableGlobalContext
public boolean isDisableGlobalContext()
返回是否禁止了全局变量上下文。- 返回:
- 是否禁止
-
setStatus
public void setStatus(int status)
设置动作的执行状态。- 参数:
status- 执行状态
-
_break
public void _break()
-
_ontinue
public void _ontinue()
-
_return
public void _return(Object obj)
-
_exception
public void _exception(Object throwedObject)
-
push
public Bindings push()
-
push
public Bindings push(Bindings bindings)
压入一个变量绑定到堆栈中,当传入的变量绑定为null时自动创建一个新的。- 参数:
bindings- 变量绑定- 返回:
- 压入的变量绑定
-
pushPoolBindings
public Bindings pushPoolBindings()
-
peek
public Bindings peek()
返回最顶层的变量绑定。- 返回:
- 最顶层的变量绑定。
-
pop
public Bindings pop()
弹出最顶层的变量绑定。- 返回:
- 弹出的最顶层的变量绑定
-
getScope
public Bindings getScope()
获取当前的局部变量范围,如果没有这是局部变量范围将返回null。- 返回:
- 变量范围
-
getLocalScope
public Bindings getLocalScope()
获取当前本地变量.- 返回:
- 变量范围
-
getGlobalScope
public Bindings getGlobalScope()
获取全局变量。- 返回:
- 变量范围
-
g
public Bindings g()
获取全局变量的缩写。- 返回:
- 全局变量范围
-
l
public Bindings l()
获取局部变量的缩写。- 返回:
- 本地变量范围
-
l
public Bindings l(int index)
返回指定索引的局部变量集合,用于多个局部变量包含的情形,如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
public String getStackTrace()
获取当前堆栈信息。- 返回:
- 堆栈信息
-
printStackTrace
public void printStackTrace()
打印堆栈信息到控制台。
-
getScope
public Bindings getScope(int index)
返回指定范围的变量绑定。- 参数:
index- 变量范围- 返回:
- 变量绑定
-
getScope
public Bindings getScope(String actionThingPath)
根据动作模型的路径来获得变量范围。- 参数:
actionThingPath- 动作路径- 返回:
- 动作路径对应的变量范围
-
getScopesSize
public int getScopesSize()
返回变脸范围的迭代大小。- 返回:
- 变量范围的大小
-
getScopesSizeAll
public int getScopesSizeAll()
返回所有包括线程之前创建的变量范围大小。- 返回:
- 变量栈的大小
-
containsKey
public boolean containsKey(Object key)
- 指定者:
containsKey在接口中Map<String,Object>
-
containsValue
public boolean containsValue(Object value)
- 指定者:
containsValue在接口中Map<String,Object>
-
put
public Object put(String key, Object value)
设置变量上下文中一个变量的值,设置值的方法是从栈的顶端的Bindings向栈底端的Bindings找,如果Bindings包含 相应的键那么调用Bindings的put方法,如果所有的Bingings都不包含给定的键值,没有那么设置到顶端的Bindings中。 要确保设置全局变量的本地变量,可以通过getScope取得相应的Bindings,然后在赋值。
-
put
public Object put(String key, Object value, String scopeThingPath)
根据指定的模型从堆栈中寻找变量范围,并设置变量范围的值。- 参数:
key- 变量的keyvalue- 变量的值scopeThingPath- 变量范围路径- 返回:
- 变量值
-
putTo
public Object putTo(String key, String scopeThingPath)
把某个值放到指定的变量范围中。- 参数:
key- 变量keyscopeThingPath- 路径- 返回:
- 变量值
-
setThrowedObject
public void setThrowedObject(Object obj)
-
getThrowedObject
public Object getThrowedObject()
-
getByte
public byte getByte(String key)
-
getShort
public short getShort(String key)
-
getInt
public int getInt(String key)
-
getLong
public long getLong(String key)
-
getBoolean
public boolean getBoolean(String key)
-
getBytes
public byte[] getBytes(String key)
-
getDouble
public double getDouble(String key)
-
getFloat
public float getFloat(String key)
-
getBigDecimal
public BigDecimal getBigDecimal(String key)
-
getBigInteger
public BigInteger getBigInteger(String key)
-
getObject
public <T> T getObject(String key)
-
getLabel
public String getLabel()
-
setLabel
public void setLabel(String label)
-
isDisableGloableContext
public boolean isDisableGloableContext()
-
setDisableGloableContext
public void setDisableGloableContext(boolean disableGloableContext)
-
-