Lifecycles are graphs, possibly nonplanar, probably cyclic. They have a single entry point (multiple entry points can be accomodated by introducing an additional node).

How do I provide a modestly technical user an intuitive way to configure one of these?


A full Canvas/Raphael Visio-style solution sounds a lot of work. I'm also concerned users will create a massively-connected soup which will display very slowly and look very confusing.

A much simpler solution would be a connectedness table. Each cell could be a green tick / red cross / black dash to indicate yes, no or N/A (I'm not allowing transitions to the same state). Clickable to toggle. My concern here is whether users will 'get it'.

I'm open to other ideas, or ways to mitigate my concerns about the above. If there's already a JS package to do the job, great!

1 answer

Ktash 1851
This was chosen as the best answer

I'm not sure I understand exactly what your looking for, but TheJIT has some good graph visualization tools, and can be customized for what you need. User visual editing of the form isn't supported to my knowledge, but you could either hack it in, or you can use some of the demos to get an idea how they do it.

If you are worried about user created data soup, I'm not sure there is a very elegant solution to that. User managed things, especially graphs and such, could be tricky. If you don't like the above, maybe try and specify exactly what you are looking to do with the lifecycle graph and I can try and help a little more.

Answered almost 9 years ago by Ktash
  • The editable force directed graph is pretty close to how I imagined a Canvas solution would work, so using Infovis would certainly simplify the implemention. Thanks! Data soup will always be an issue, you're right. It can be managed better or worse though; it's less intrusive with a connectedness table for example (whole table of ticks) than with a visualised graph (edge spaghetti). The goal is to reify lifecycles from the system. We have several kinds of things which all go through lifecycles. Currently each of those lifecycles is handled separately, painstakingly and not necessarily correctly. So what I want is for the user to be able to configure lifecycles outside any particular domain, then associate types with those lifecycles. "Here is my purchasing lifecycle. A CarPart goes through a purchasing lifecycle. BikeParts also go through a purchasing lifecycle". Alexis Lee almost 9 years ago