I'd like to be able to set up an MQL-based property without resorting to setting up story trees. I'm wondering if this is possible.
I'm trying to track an evolving breakdown of a domain into stories, where initially we're very broad-brush and then break individual cards down one or more times as appropriate to achieve consistent granularity. Because I don't know how many "levels" any individual card will need to break down at first, the story tree paradigm works poorly, because it assumes I know what level each card is at when I create it (e.g. this is a level-2 item, this is a level-3 item), etc. I also don't want to be constrained that I have to break a story into same-level units--I'd like to break an epic into three children, and have 2 children be playable but have to break the third down into 2 further substories. Because story trees rely on card type, this is very hard to do properly. I recognize I can change the type of a card, but not in a way that smoothly re-types all the existing children.
What I'd prefer is to do is keep all my cards of type "story," and create simple parent-child relationships between stories. This is pretty easy--I can set up a "Parent User Story" property of type "card," and since the relationship of children to parents is many to 1, I'm set.
My challenge is that sometimes I want to filter my results to find only the cards that have no children (i.e. the terminal nodes on my simple tree). Ideally, I'd have a formula property called NumChildren like "select count(*) where 'Parent User Story' = THIS CARD". I could then filter by NumChildren = 0 to get my terminal nodes.
But I don't think I can create my NumChildren property, because (as far as I can tell) Formula properties don't allow MQL. I could try to set up a "dummy" card tree and fake an "aggregate" property to find this, but I don't think that's doable either--I can't create a single-level tree, and I can't create a tree that maps cards of type "story" to other cards of type "story" (card trees appear to require different card types on each level).
Is there a clever way I can work around this? Or am I stuck with card trees?
By the way, Rally does pretty much what I'm describing smoothly and transparently.