Re: Levelling via "helper" scripts ?



On Fri, 2007-04-06 at 12:24 +0200, Lincoln Phipps wrote:
> Was thinking that we'll never really get resource levelling really sorted out in
> Planner and we need not re-invent the wheel trying to do this hard problem.
> 
> So why not provide a way from within Planner to launch "helper" scripts ?
> 
> In planner we have a HelperScriptName (stored in Project file) and a
> HelperScriptPath (unique and local to the PC) and various flags and what
> I envisage happening is that automatically or via a button click the helper
> application is exec'd (on Windows it could be an EXE or a batch file and on
> Unix it could be any shell or binary).
> 
> The helper script/app takes the data (could even be a temporary copy of the
> project as XML and does its stuff on the data and then signals (via touching a
> file would be cross-platform as opposed to signals) and then Planner merges or
> replaces the project with the new data.
> 
> The advantages of this kind of method is that we are independent of language.
> If someone has done a great resource leveling in say Prolog or Java then we
> (or anyone) just have to do some XSLT to get the Planner file to the desired input
> format and then reformat back into Planner XML.
> 
> It also allows for non-open applications to be used i.e. proprietary scripts
> or libraries which have non-Free licensing terms or may be freeish but not
> compatible to GPL.
> 
> Comments ?

All in all a good idea, but I think the challenge would be to prevent
Planner from recalculating the schedule/resource allocations after the
external script did its thing, and also how to handle new tasks or
changes to the plan while in planner.

I've been making some progress with resource leveling, though my
strategy has changed as I've been progressing thru the code.  Originally
I wanted to assign resources based on:
1. Critical Path
2. Priority Field
3. WBS order

I pretty quickly tossed the idea of using Critical Path, since it would
change nearly every time I did a resource allocation to one task over
another.

The next hurdle is the fact that Planner schedules tasks in order of
dependencies (children before parents, and predecessors before
dependencies), which doesn't necessarily line up with the priorities
you've chosen, and you MUST schedule higher priority tasks before lower
priority tasks in order to do the leveling properly.  So fine - we
rework the scheduling order.

Which is what I'm working on now ... and the only way to make the two
work together (dependencies and priorities) is to implement a way for
priorities to be derived from other tasks.

For example:  
If t2 has a fs relationship with t1, then t1 must be scheduled first.
If t2 has a priority of 10, then t1 must derive it because of the fs
relationship (unless its own priority is higher).  This makes sense,
since if t2 is your most important task to get completed on time, you'd
want its predecessors to have the same priority so they couldn't be
delayed by resource allocation to other tasks executing in the same time
frame.
Similarly, if t5 is a summary task, you must schedule its children
before you can schedule t5.  So if you assign a priority to t5, we need
its children to inherit that priority.

So I'm working on adding a derived priority field (not to be saved in
the xml file), and changing the task edit dialog to show the new field.

That is, I WAS working on that until I returned from vacation a few days
ago to find my hard drive had crashed.  :-(  I've got a backup from a
few weeks ago, but I've definitely lost some work.

On the up side, I've got the machine going again, though data not fully
restored, and working with Ubuntu 7.04 - so at least I'll be testing
with more recent libraries.

-- 
Kurt Maute <Kurt Maute us>




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]