动作流程的状态可以在变量上下文中设置,ActionContext的相关代码如下。
public class ActionContext implements Map<String, Object>{
/** 正常的运行状态 */
public static final int RUNNING = 0;
/** 返回值的状态,返回到动作被初始调用的地方 */
public static final int RETURN = 1;
/** 取消的状态,取消当前的动作执行 */
public static final int CANCEL = 2;
/** 打断状态,一般返回到上一个循环处 */
public static final int BREAK = 3;
/** 继续从循环处执行 */
public static final int CONTINUE = 4;
/** 抛出异常的状态,一般到异常处理处结束 */
public static final int EXCEPTION = 5;
/**
* 设置动作的执行状态。
*
* @param status 执行状态
*/
public void setStatus(int status) {
}
/**
* 返回动作执行的状态。
*
* @return 动作的执行状态
*/
public int getStatus() {
}
}
如Break的实现代码如下。
public static void run(ActionContext context){
context.setStatus(ActionContext.BREAK);
}
While动作的流程控制代码如下。
while(IfCreator.checkCondition(self, actionContext)){
Thing childActions = self.getThing("ChildAction@0");
for (Thing child : childActions.getChilds()) {
Action action = world.getAction(child);
if (action != null) {
result = action.run(actionContext, null, true);
}
int sint = actionContext.getStatus();
if (sint != ActionContext.RUNNING) {
break;
}
}
//判断循环的状态
if (actionContext.getStatus() == ActionContext.BREAK) {
actionContext.setStatus(ActionContext.RUNNING);
break;
} else if (actionContext.getStatus() == ActionContext.CONTINUE) {
actionContext.setStatus(ActionContext.RUNNING);
continue;
} else if (actionContext.getStatus() != ActionContext.RUNNING) {
break;
}
}
使用流程控制基本可以实现Java的所有流程控制语句模型,这里就不一一举例了。
Copyright © 2007-2014 XWorker.org 版权所有