程序包 org.xmeta

类 ActionContext

java.lang.Object
org.xmeta.ActionContext
所有已实现的接口:
Map<String,Object>

public class ActionContext extends Object implements Map<String,Object>

动作上下文有时也叫变量上下文。

变量上下文是执行动作时的变量空间,起到函数调用时栈的作用,是一个Stack和Map的综合体。

变量上下文通过栈的深度来表示全局变量和局部变量,深度越浅则越靠近全局变量,范围0是全局变量。

变量上下文是线程绑定的,除了创建时的变量时公用的,其他变量是线程各自的。

如果一个变量上下文的构造参数是另一个变量上下文,那么会先把用于构造的变量上下文的 所有变量绑定压入栈中,因此两个变量上下文将使用相同的全局变量,但使用各自的最新的 局部变量。由于原先的变量上下文的变量绑定被新的变量上下文所引用,因此当原先的动作 上下文把一个变量绑定移除栈的时候,新的变量上下文还保持这个变量绑定的引用,因此需要注意一下内存的问题。

作者:
zyx
  • 字段详细资料

    • 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

      public static final String RESULT_SUCCESS
      另请参阅:
    • RESULT_FAILURE

      public static final String RESULT_FAILURE
      另请参阅:
    • RUNTYPE_DEFAULT

      public static final String RUNTYPE_DEFAULT
      另请参阅:
    • RUNTYPE_SUCCESS

      public static final String RUNTYPE_SUCCESS
      另请参阅:
    • RUNTYPE_RANDOM

      public static final String RUNTYPE_RANDOM
      另请参阅:
    • RUNTYPE_RANDOM_ONE

      public static final String RUNTYPE_RANDOM_ONE
      另请参阅:
    • RUNTYPE_RANDOM_RANDOM

      public static final String RUNTYPE_RANDOM_RANDOM
      另请参阅:
    • RUNTYPE_RANDOM_SUCCESS

      public static final String RUNTYPE_RANDOM_SUCCESS
      另请参阅:
    • RUNTYPE_RANDOM_RATE

      public static final String RUNTYPE_RANDOM_RATE
      另请参阅:
    • PARENT_CONTEXT

      public static final String PARENT_CONTEXT
      保存父变量上下文的约定的名称
      另请参阅:
  • 构造器详细资料

    • 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
    • initActionListener

      public void initActionListener(ActionListenerExecutor executor)
      把上下文中的动作监听器注入到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

      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()
      弹出最顶层的变量绑定。
      返回:
      弹出的最顶层的变量绑定
    • getScopes

      public List<Bindings> getScopes()
      返回变量绑定的列表。
      返回:
      变量绑定列表
    • 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()
      返回所有包括线程之前创建的变量范围大小。
      返回:
      变量栈的大小
    • clear

      public void clear()
      指定者:
      clear 在接口中 Map<String,Object>
    • containsKey

      public boolean containsKey(Object key)
      指定者:
      containsKey 在接口中 Map<String,Object>
    • containsValue

      public boolean containsValue(Object value)
      指定者:
      containsValue 在接口中 Map<String,Object>
    • entrySet

      public Set<Map.Entry<String,Object>> entrySet()
      指定者:
      entrySet 在接口中 Map<String,Object>
    • get

      public Object get(Object key)
      指定者:
      get 在接口中 Map<String,Object>
    • getParameter

      public Object getParameter(Object key)
      获取参数Bindings栈中的变量的值。
      参数:
      key - 键
      返回:
      对应key的值
    • get

      public Object get(Object key, String scopeThingPath)
    • getActions

      public List<Action> getActions()
      返回动作调用列表,最开始的是堆栈的底部,最后的是堆栈的顶部。
      返回:
      动作调用列表
    • getThings

      public List<Thing> getThings()
      返回调用动作的模型列表,最开始的是堆栈的底部,最后的堆栈的顶部的模型。
      返回:
      调用动作的模型列表
    • isEmpty

      public boolean isEmpty()
      指定者:
      isEmpty 在接口中 Map<String,Object>
    • keySet

      public Set<String> keySet()
      指定者:
      keySet 在接口中 Map<String,Object>
    • put

      public Object put(String key, Object value)
      设置变量上下文中一个变量的值,设置值的方法是从栈的顶端的Bindings向栈底端的Bindings找,如果Bindings包含 相应的键那么调用Bindings的put方法,如果所有的Bingings都不包含给定的键值,没有那么设置到顶端的Bindings中。 要确保设置全局变量的本地变量,可以通过getScope取得相应的Bindings,然后在赋值。
      指定者:
      put 在接口中 Map<String,Object>
      参数:
      key - 变量key
      value - 变量值
      返回:
      如果成功返回变量
    • put

      public Object put(String key, Object value, String scopeThingPath)
      根据指定的模型从堆栈中寻找变量范围,并设置变量范围的值。
      参数:
      key - 变量的key
      value - 变量的值
      scopeThingPath - 变量范围路径
      返回:
      变量值
    • putTo

      public Object putTo(String key, String scopeThingPath)
      把某个值放到指定的变量范围中。
      参数:
      key - 变量key
      scopeThingPath - 路径
      返回:
      变量值
    • putAll

      public void putAll(Map<? extends String,? extends Object> m)
      指定者:
      putAll 在接口中 Map<String,Object>
    • remove

      public Object remove(Object key)
      指定者:
      remove 在接口中 Map<String,Object>
    • size

      public int size()
      指定者:
      size 在接口中 Map<String,Object>
    • values

      public Collection<Object> values()
      指定者:
      values 在接口中 Map<String,Object>
    • setThrowedObject

      public void setThrowedObject(Object obj)
    • getThrowedObject

      public Object getThrowedObject()
    • toString

      public String toString()
      覆盖:
      toString 在类中 Object
    • getString

      public String getString(String key)
    • 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)
    • getDate

      public Date getDate(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)
    • hashCode

      public int hashCode()
      指定者:
      hashCode 在接口中 Map<String,Object>
      覆盖:
      hashCode 在类中 Object
    • getLabel

      public String getLabel()
    • setLabel

      public void setLabel(String label)