We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
对任务层级或顺序的更新,本质上是更新wbs。
wbs
对不同场景下wbs的更新,Kickoff内置了一套默认更新机制,同时支持通过before-update事件对默认更新机制进行拦截。
before-update
将wbs更新为自身后代级别wbs不符逻辑性,直接默认更新失败,不同场景下内置的更新机制所执行的程序逻辑为:
dependencies
after-touch
after-update
end
beginning
s2f
f2f
s2s
f2s
根据以上程序执行过程的梳理,核心方法需至少实现三个:
propagateAncestors
calcDependencies
collectUniqueResource
The text was updated successfully, but these errors were encountered:
oatw
No branches or pull requests
Kickoff中更新wbs的内置处理机制
对任务层级或顺序的更新,本质上是更新
wbs
。对不同场景下
wbs
的更新,Kickoff内置了一套默认更新机制,同时支持通过before-update
事件对默认更新机制进行拦截。将
wbs
更新为自身后代级别wbs
不符逻辑性,直接默认更新失败,不同场景下内置的更新机制所执行的程序逻辑为:场景一:不改变从属的父级任务关系更新
wbs
,如3.2.2 -> 3.2.1wbs
查找其后代任务,计算所有任务的新wbs
,并记录下所有任务实例和新、旧wbs
;wbs
范围内的任务(包含当前wbs
等于新wbs
的任务)及它们后代任务的新wbs
;如为向前移动,递增计算目标任务新、旧wbs
范围内的任务(包含当前wbs
等于新wbs
的任务)及他们后代任务的新wbs
,并记录下所有任务实例和新、旧wbs
;dependencies
中含有记录中旧wbs
的任务,按照记录中对应的新wbs
计算新dependencies
,并记录下所有任务实例和新、旧dependencies
,如果存在与前面步骤记录中相同的任务实例,则合并记录项;before-update
事件,如任一事件被阻止,则取消整个更新事务;反之,按照记录项依次更新任务实例,并触发after-touch
和after-update
事件。场景二:更新
wbs
为顶级任务wbs
,如3.2.2 -> 1wbs
查找其祖先任务,冒泡计算祖先任务的正确周期,并记录周期不正确的祖先任务实例和新、旧end
,如果该祖先任务有非里程碑子任务,且有beginning
/end
晚于该祖先任务最晚子任务end
的s2f
/f2f
型前置任务关系,则计算从该祖先任务的dependencies
中删除对应前置任务wbs
后的新dependencies
,并记录新、旧dependencies
;wbs
查找其后代任务,计算所有任务的新wbs
,并记录下所有任务实例和新、旧wbs
;wbs
查找其后方兄弟任务,递减计算并记录兄弟任务和兄弟任务后代任务的实例及新、旧wbs
;wbs
查找其新的后方兄弟任务,递增计算并记录兄弟任务和兄弟任务后代任务的实例及新、旧wbs
,如果存在与前面步骤中相同的任务实例,则使用记录中的新wbs
作为计算基准,覆盖原记录中相同任务实例的新、旧wbs
;dependencies
中含有记录中旧wbs
的任务,按照记录中对应的新wbs
计算查找到的任务的新dependencies
,如果该任务实例在前面步骤中记录过dependencies
,则使用记录中的对应新dependencies
作为计算基准,并记录下所有任务实例和新、旧dependencies
,如果存在与之前步骤中相同的任务实例,则合并记录项;before-update
事件,如任一事件被阻止,则取消整个更新事务;反之,按照记录项依次更新任务实例,并触发after-touch
和after-update
事件。场景三:改变从属的父级任务关系更新
wbs
,如3.2.2 -> 2.1或3.2.2 -> 3.2或2.1 -> 3.2.2wbs
查找其祖先任务,冒泡计算祖先任务的正确周期,并记录周期不正确的祖先任务实例和新、旧end
,如果该祖先任务有非里程碑子任务,且有beginning
/end
晚于该祖先任务最晚子任务end
的s2f
/f2f
型前置任务关系,则计算从该祖先任务的dependencies
中删除对应前置任务wbs
后的新dependencies
,并记录新、旧dependencies
;wbs
查找其祖先任务,冒泡计算祖先任务的正确周期,并记录周期不正确的祖先任务实例和新、旧end
/beginning
,如果该祖先任务有非里程碑子任务,且有beginning
/end
晚于该祖先任务最晚子任务end
的s2f
/f2f
前置任务关系,或beginning
/end
晚于该祖先任务最早子任务beginning
的s2s
/f2s
型前置任务关系,则计算该祖先任务dependencies
中删除对应前置任务wbs
后的新dependencies
,如果新的dependencies
中包含目标任务或目标任务后代任务的旧wbs
,需顺次执行删除计算。如果目标任务或目标任务后代任务的dependencies
中有该祖先任务的wbs
,则计算目标任务或其后代任务dependencies
中删除该祖先任务wbs
后的新dependencies
。如果前面步骤中记录过对应任务实例的dependencies
,则以记录中的新dependencies
作为以上删除计算的基础。完成计算后,在记录中新增或合并该任务实例及新、旧dependencies
;wbs
查找其后代任务,计算所有任务的新wbs
,并记录下所有任务实例和新、旧wbs
,如果目标任务存在于前面步骤的记录中,则合并记录项;wbs
查找其后方兄弟任务,递减计算并记录兄弟任务和兄弟任务后代任务的实例及新、旧wbs
,如果兄弟任务或其后代任务存在于前面步骤的记录中,则合并记录项;wbs
查找其新的后方兄弟任务,递增计算并记录兄弟任务和兄弟任务后代任务的实例及新、旧wbs
,如果存在与前面步骤中相同的任务实例,则使用记录中的新wbs
作为计算基准,覆盖原记录中相同任务实例的新、旧wbs
;dependencies
中含有记录中旧wbs
的任务,按照记录中对应的新wbs
计算查找到的任务的新dependencies
,如果该任务实例在前面步骤中记录过dependencies
,则使用记录中的对应新dependencies
作为计算基准,并记录下所有任务实例和新、旧dependencies
,如果存在与之前步骤中相同的任务实例,则合并记录项;before-update
事件,如任一事件被阻止,则取消整个更新事务;反之,按照记录项依次更新任务实例,并触发after-touch
和after-update
事件。根据以上程序执行过程的梳理,核心方法需至少实现三个:
propagateAncestors
:计算祖先周期,已实现。calcDependencies
:计算前置依赖,已实现。collectUniqueResource
:搜集事务记录,需要支持同任务实例的记录项合并、wbs覆盖更新、dependencies合并更新。The text was updated successfully, but these errors were encountered: