On Nov 5, 4:43 pm, Chris Schlaeger <
cschlae...@gmail.com> wrote:
>
> 'end' requires a fixed date, so that won't work. With TJ3 you can do
>
> precedes !testing { onend }
>
> With TJ2 you need to add another milestone task that depends on testing.
>
> Just keep in mind that this turns the 'manage' task into an ALAP
> tasks. It can only be scheduled when the end of 'testing' has been
> determined. Mixing ALAP and ASAP can cause priority inversions.
>
> Chris
Thanks Chris for the response. I didn't know the { onend } attribute.
I tried the TJ2 approach with the milestone and the TJ responds with
'Task proj.manage has a too weak end dependencies to be scheduled
properly.'
The Task.proj has a start attribute, and a precedes against the
milestone.
Using the solution you suggest for TJ3, I get a loop I cannot
understand.
The loop reads:
./tasks.tji:3: Warning in scenario optim: Loop detected at start of
task proj
./tasks.tji:9: Info in scenario optim: Loop ctnd. at start of task
proj.manage
./tasks.tji:9: Info in scenario optim: Loop ctnd. at end of task
proj.manage
./tasks.tji:117: Info in scenario optim: Loop ctnd. at end of task
proj.testing
./tasks.tji:117: Info in scenario optim: Loop ctnd. at start of task
proj.testing
./tasks.tji:63: Info in scenario optim: Loop ctnd. at end of task
proj.iphone
./tasks.tji:66: Info in scenario optim: Loop ctnd. at end of task
proj.iphone.basenode
./tasks.tji:66: Info in scenario optim: Loop ctnd. at start of task
proj.iphone.basenode
./tasks.tji:63: Info in scenario optim: Loop ctnd. at start of task
proj.iphone
./tasks.tji:3: Error in scenario optim: Aborting
My tasks.tji file is:
# Tasks
#-------
task proj "Dynamic Media Structure" {
complete 0
chargeset cost
${AllocateDevs}
task manage "Management" {
purge allocate
allocate rad
start ${projectstart}
#end ${projectend}
precedes !testing { onend }
}
task proto "Protocol" {
note "Define protocol between iPhone and server"
effort 4d
pessim:effort 6d
}
task server 'Backend' {
purge allocate
${AllocateAtMost1}
task service 'Service' {
note 'Service to load configuration files into JSON given "path" to
node'
depends !!proto
effort 1d
pessim:effort 2d
}
task cats "Categories" {
depends !!proto
note "In case of categories, make loader include data of children"
effort 2d
pessim:effort 3d
}
task urls "Paths to URLs" {
depends !!proto
note "Convert relative paths to absolute URLs for assets"
effort 1d
pessim:effort 2d
}
task bandatt "Band-specific attributes" {
note "Merge attributes specific to nodes with band-specific ones"
depends !!proto
effort 1d
pessim:effort 2d
}
task initload "Initial data load" {
note "Configuration of the initial (current) structure"
depends !!proto
effort 2d
pessim:effort 3d
}
}
task iphone 'iPhone' {
${AllocateAtMost1}
task basenode "Basic node" {
note "Parse and construct content for the basic node"
effort 2d
pessim:effort 3d
}
task factory 'Specific nodes factory' {
note "Create a factory to build all type-specific nodes"
effort 2d
pessim:effort 3d
}
task specific 'Type-specific' {
${AllocateAtMost1}
depends !basenode, !factory
task news 'News' {
effort 1d
pessim:effort 2d
}
task tweets 'Tweets' {
effort 1d
pessim:effort 2d
}
task setlists 'Set Lists' {
effort 1d
pessim:effort 2d
}
task video 'Video' {
effort 1d
pessim:effort 2d
}
task audio 'Audio' {
effort 1d
pessim:effort 2d
}
task tracks 'Tracks/Recordings' {
effort 1d
pessim:effort 2d
}
task bandinfo 'Band Info' {
effort 1d
pessim:effort 2d
}
task flickr 'Flickr RSS' {
effort 1d
pessim:effort 2d
}
}
}
task testing "Testing" {
purge allocate
allocate cami
depends !iphone, !server
effort 4d
pessim:effort 6d
}
task tested "Tested" {
milestone
depends !testing
}
}
# Deliverables
#--------------
task deliv "Milestones" {
task final "Final" {
depends !!proj.testing
}