Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Advanced Agile Workflow - Dione Technology
1. The story of a basic Agile workflow
...or how I discovered SIL
London Atlassian User Group, 18 February 2014
Dan Petzen
dan@dionetechnology.com
The story of a basic Agile worflow
London Atlassian User Group, February 2014
2. 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
The story of a basic Agile worflow
London Atlassian User Group, February 2014
3. High level overview
The story of a basic Agile worflow
London Atlassian User Group, February 2014
4. First workflow draft
The story of a basic Agile worflow
London Atlassian User Group, February 2014
5. Final (initial) workflow version
The story of a basic Agile worflow
London Atlassian User Group, February 2014
6. ...a bit more complicated...
The story of a basic Agile worflow
London Atlassian User Group, February 2014
7. The story of a basic Agile worflow
London Atlassian User Group, February 2014
8. What's this? JJupin?
This is not an advert – really!
(They don't even know I'm doing this presentation)
The story of a basic Agile worflow
London Atlassian User Group, February 2014
9. 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
The story of a basic Agile worflow
London Atlassian User Group, February 2014
10. User story post function 'B'
string st;
for (st in subtasks(key)) {
if (%st%.status == "Created")
autotransition("Queue", st);
}
The story of a basic Agile worflow
London Atlassian User Group, February 2014
11. 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;
}
The story of a basic Agile worflow
London Atlassian User Group, February 2014
12. User Story post function for transistions 'F' and 'F n'
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";
}
}
The story of a basic Agile worflow
London Atlassian User Group, February 2014
13. What's next?
●
One more demo session
●
Stomp out bugs, thorough testing etc
●
Implementation in production
The story of a basic Agile worflow
London Atlassian User Group, February 2014