java.lang.Object
cn.wjybxx.btree.Task<T>
cn.wjybxx.btree.BranchTask<T>
cn.wjybxx.btree.branch.ParallelBranch<T>
cn.wjybxx.btree.branch.SimpleParallel<T>
- 所有已实现的接口:
ICancelTokenListener
简单并发节点。
1.其中第一个任务为主要任务,其余任务为次要任务;
2.一旦主要任务完成,则节点进入完成状态;次要任务可能被运行多次。
3.外部事件将派发给主要任务。
- 作者:
- wjybxx date - 2023/11/26
-
字段概要
从类继承的字段 cn.wjybxx.btree.BranchTask
children -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明protected voidenter(int reentryId) 该方法在Task进入运行状态时执行 1.数据初始化需要放在Task.beforeEnter()中,避免执行逻辑时对象未初始化完成。protected voidexecute()Task的心跳方法,在Task进入完成状态之前会反复执行。protected voidonChildCompleted(Task<T> child) 子节点进入完成状态 1.避免方法数太多,实现类测试task的status即可 2.Task.getNormalizedStatus()有助于switch测试 3.task可能是取消状态,甚至可能没运行过直接失败(前置条件失败) 4.钩子任务和guard不会调用该方法 5.同一子节点连续通知的情况下,completed的逻辑应当覆盖Task.onChildRunning(Task, boolean)的影响。protected voidonChildRunning(Task<T> child, boolean starting) 1.并发节点通常不需要在该事件中将自己更新为运行状态,而是应该在Task.execute()方法的末尾更新 2.实现类可以在该方法中内联子节点protected voidonEventImpl(Object event) 对于控制节点,通常将事件派发给约定的子节点或钩子节点。从类继承的方法 cn.wjybxx.btree.branch.ParallelBranch
beforeEnter, exit, getChildHelper, initChildHelpers, resetForRestart, resetHelpers从类继承的方法 cn.wjybxx.btree.BranchTask
addChildImpl, getChild, getChildCount, getChildren, getFirstChild, getLastChild, indexChild, isFirstChild, isLastChild, removeChildImpl, setChildImpl, setChildren, shuffleChild, visitChildren从类继承的方法 cn.wjybxx.btree.Task
addChild, canHandleEvent, checkCancel, exportControlFlowOptions, getBlackboard, getCancelToken, getControl, getControlData, getControlFlowOptions, getEnterFrame, getEntity, getExitFrame, getFlags, getGuard, getNormalizedStatus, getPrevStatus, getReentryId, getRunFrames, getSharedProps, getStatus, getTaskEntry, isActiveInHierarchy, isActiveSelf, isAutoListenCancel, isAutoResetChildren, isBlackboardPerChild, isBreakInline, isCancelled, isCancelTokenPerChild, isCheckingGuard, isCompleted, isExited, isFailed, isFailedOrCancelled, isInlinable, isInvertedGuard, isManualCheckCancel, isRunning, isSlowStart, isStillborn, isSucceeded, onActiveInHierarchyChanged, onCancelRequested, onEvent, refreshActiveInHierarchy, registerCancelListener, removeAllChild, removeChild, removeChild, resetChildrenForRestart, resetForRestart, setActive, setAutoListenCancel, setAutoResetChildren, setBlackboard, setBlackboardPerChild, setBreakInline, setCancelled, setCancelToken, setCancelTokenPerChild, setChild, setChildCancelToken, setCompleted, setControl, setControlData, setEnterFrame, setExitFrame, setFailed, setFlags, setGuard, setGuardFailed, setInvertedGuard, setManualCheckCancel, setPrevStatus, setSharedProps, setSlowStart, setSuccess, stop, stop, stop, stopRunningChildren, template_checkGuard, template_execute, template_executeInlined, template_startChild, template_startHook, unsetChildCancelToken, unsetControl
-
构造器详细资料
-
SimpleParallel
public SimpleParallel() -
SimpleParallel
-
-
方法详细资料
-
enter
protected void enter(int reentryId) 从类复制的说明:Task该方法在Task进入运行状态时执行 1.数据初始化需要放在Task.beforeEnter()中,避免执行逻辑时对象未初始化完成。 2.如果要初始化子节点,也放到Task.beforeEnter()方法; 3.允许更新自己为完成状态 -
execute
protected void execute()从类复制的说明:TaskTask的心跳方法,在Task进入完成状态之前会反复执行。 1.运行中可通过Task.setSuccess()、Task.setFailed(int)、Task.setCancelled()将自己更新为完成状态。 2.如果不想和Task.enter(int)同步执行,可通过Task.setSlowStart(boolean)实现。 3.不建议直接调用该方法,而是通过模板方法Task.template_execute(boolean)运行。 -
onChildRunning
从类复制的说明:ParallelBranch1.并发节点通常不需要在该事件中将自己更新为运行状态,而是应该在Task.execute()方法的末尾更新 2.实现类可以在该方法中内联子节点- 覆盖:
onChildRunning在类中ParallelBranch<T>- 参数:
starting- 是否是启动时调用,即首次调用
-
onChildCompleted
从类复制的说明:Task子节点进入完成状态 1.避免方法数太多,实现类测试task的status即可 2.Task.getNormalizedStatus()有助于switch测试 3.task可能是取消状态,甚至可能没运行过直接失败(前置条件失败) 4.钩子任务和guard不会调用该方法 5.同一子节点连续通知的情况下,completed的逻辑应当覆盖Task.onChildRunning(Task, boolean)的影响。 6.任何的回调和事件方法中都由用户自身检测取消信号- 指定者:
onChildCompleted在类中Task<T>
-
onEventImpl
从类复制的说明:Task对于控制节点,通常将事件派发给约定的子节点或钩子节点。 对于叶子节点,通常自身处理事件。 注意: 1.转发事件时应该调用子节点的Task.onEvent(Object)方法 2.在AI这样的领域中,建议将事件转化为信息存储在Task或黑板中,而不是尝试立即做出反应。- 指定者:
onEventImpl在类中Task<T>
-