London Atlassian User Group, February 2014
The story of a basic Agile worflow
The story of a basic Agile workflow...or how I discovered SIL
Dan Petzen
London Atlassian User Group, 18 February 2014
London Atlassian User Group, February 2014
The story of a basic Agile worflow
Background
● Dan Petzen, Dione Technology - founded 2013 with Ram Tandukar and Sven Lecherbonnier
● Current client:
● Various interesting projects and tasks
● One of the tasks:
– Work with the DevOps team to help them make the most of their JIRA
London Atlassian User Group, February 2014
The story of a basic Agile worflow
High level overview
London Atlassian User Group, February 2014
The story of a basic Agile worflow
First workflow draft
London Atlassian User Group, February 2014
The story of a basic Agile worflow
Final (initial) workflow version
London Atlassian User Group, February 2014
The story of a basic Agile worflow
...a bit more complicated...
London Atlassian User Group, February 2014
The story of a basic Agile worflow
London Atlassian User Group, February 2014
The story of a basic Agile worflow
This is not an advert – really!(They don't even know I'm doing this presentation)
What's this? JJupin?
London Atlassian User Group, February 2014
The story of a basic Agile worflow
SIL – Simple Issue Language
● Called from post-functions, validators, listeners, services etc, etc
● Runs in a JIRA or an issue context
● Access to variables (R/W) and API function
● ...and loads more
London Atlassian User Group, February 2014
The story of a basic Agile worflow
User story post function 'B'
string st; for (st in subtasks(key)) { if (%st%.status == "Created") autotransition("Queue", st);}
London Atlassian User Group, February 2014
The story of a basic Agile worflow
User Story validation of tranisition 'E'
string sub_task;
for (sub_task in subtasks(key)) { if (%sub_task%.status != "Done") return false, "One or more sub-tasks are still being worked on ('Doing' state)."; else return true;}
London Atlassian User Group, February 2014
The story of a basic Agile worflow
User Story post function for transistions 'F' and 'Fn'string st;boolean sub_tasks = false;
// Parent (i.e. User Story):if (isNull(parent)) { resolution = "Cancelled"; for (st in subtasks(key)) { if (%st%.status == "Ready") { autotransition("Cancel", st); %st%.resolution = "Cancelled"; logPrint("DEBUG", "Task " + %st%.key + " is moved to 'Ready' via the 'Cancel' transition."); sub_tasks = true; } } return;}
// Sub-task (Fn):for (st in subtasks(parent.key)) { if (%st%.status == "Ready" || %st%.status == "Doing") sub_tasks = true;}
if (!sub_tasks) { if (parent.status == "Ready") { logPrint("DEBUG", "This (" + key + ") was the last sub-task. The story is in 'Ready', so I'm 'Cancelling' story " + parent.key); autotransition("Cancel", parent); parent.resolution = "Cancelled"; }}
London Atlassian User Group, February 2014
The story of a basic Agile worflow
What's next?
● One more demo session
● Stomp out bugs, thorough testing etc
● Implementation in production
London Atlassian User Group, February 2014
The story of a basic Agile worflow
Questions?
Top Related