程序包 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
        抛出异常的状态,一般到异常处理处结束
        另请参阅:
        常量字段值
      • RUNTYPE_RANDOM_SUCCESS

        public static final String RUNTYPE_RANDOM_SUCCESS
        另请参阅:
        常量字段值
      • 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
      • addContextThing

        public void addContextThing​(List<Thing> contextThings)
        把上下文中的栈设置的上下文模型加入到指定的列表中。
      • 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​(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()
        返回所有包括线程之前创建的变量范围大小。
        返回:
        变量栈的大小
      • getParameter

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

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

        public List<Thing> getThings()
        返回调用动作的事物列表,最开始的是堆栈的底部,最后的堆栈的顶部的事物。
        返回:
        调用动作的事物列表
      • 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 - 路径
        返回:
        变量值
      • 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)
      • 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)