Thursday, July 2, 2015

Re: Help me develop a Job Tracker (?)

On Thu, Jul 2, 2015 at 10:26 AM, Softeisbieger <j.kitschke@gmx.de> wrote:
> I am currently thinking about the database representation. I don't think I
> can solve this with django-viewflow: I need to be able to specify in advance
> a deadline and an assignee for each task of a work flow.


first of all, its important to note that a full-featured workflow
engine is Turing-complete, so it's theoretically undecidable. There
are limits on what kind of tools an automated system can provide.
specifically, it's easy to write workflows for which it's impossible
to calculate a detailed schedule.

if you want your system to be able to define deadlines for each task
given a final deadline, or some useful "%-done" indicator, then you
might be better served by a "limited shape" workflow model. The
simplest case (yet widely used) is a linear pipeline of tasks, which
can look similar to what you describe.

with a linear pipeline, it's easy to set time estimates for each step,
to calculate proposed milestone dates backward from the final deadline
date. If you get behind schedule, it could even estimate "tight
goals" by proportionally distributing the remaining time between the
remaining tasks.

some limitations of the linear model can be relaxed by defining some
steps as "optional", or allowing some authorizations to skip a task,
or by specifying the prerequisites of a task as not necessarily "all
the previous steps".


if you still want the wide flexibility of a full-featured workflow
engine, recognize that it's not easy for most people to think in terms
of abstract states, and planning all the interdependences between
steps of any slightly complex process is in fact a programming
activity, even if done graphically. IOW, if you ask users to
repeatedly one-shot workflows, they will naturally limit themselves to
simple lists of tasks and manage any unexpected circumstances by
(ab)using 'override' permissions.

workflow engines shine if you have a mid-to-large group of people
doing some complex process repeatedly. a good example (and one where
i've found them quite a lifesaver) is in the publishing industry: you
have several editing steps, with well-defined approval points, and
rules of when some work must be redone, discarded, or rushed. and it
must be done again and again, for each campaign, so it pays up to do a
very detailed model.


note that a state-transitions diagram is usually drawn as several
circles connected by arrows. The tasks are associated to the arrows
(transitions), not the the circles (states). Also, in most engines,
each transition has some permission restrictions and maybe a way to
specify preconditions, which makes it easy to show, for a given user,
which are the transitions available for a specific process.


good luck!

--
Javier

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAFkDaoS3bC6NZUYD%2Bu6D00g67tKSfH6vcJhwKv0a6R_Vd%2BdTZA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment