29

Using JIRA to build a culture of innovation - Atlassian Summit 2012

Embed Size (px)

Citation preview

Page 1: Using JIRA to build a culture of innovation - Atlassian Summit 2012
Page 2: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Building Cultures of Innovation

David May

What Inspires You?

EFI. Foster City, Ca.

Page 3: Using JIRA to build a culture of innovation - Atlassian Summit 2012
Page 4: Using JIRA to build a culture of innovation - Atlassian Summit 2012
Page 5: Using JIRA to build a culture of innovation - Atlassian Summit 2012
Page 6: Using JIRA to build a culture of innovation - Atlassian Summit 2012
Page 7: Using JIRA to build a culture of innovation - Atlassian Summit 2012
Page 8: Using JIRA to build a culture of innovation - Atlassian Summit 2012
Page 9: Using JIRA to build a culture of innovation - Atlassian Summit 2012

So what’s the Big Idea?

Page 10: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Using JIRA as an Ideation Hub

• Create Challenges

• Solicit Submissions

• Inspirations

• Concepts

• Evaluate

• Select Winning Concepts

Page 11: Using JIRA to build a culture of innovation - Atlassian Summit 2012

How we get there from here

• See it in action

• Configuring JIRA

• Issues, Screens, and Fields

• Installing Plugins

• Components

• Workflows and Notifications

Page 12: Using JIRA to build a culture of innovation - Atlassian Summit 2012

JIRA View

Page 13: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Confluence View

Page 14: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Rapid Board View

Page 15: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Configuring Issue Types

Page 16: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Configuring Screens

Page 17: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Configuring Fields

Challenge Fields• Assignee• Attachment• Components*• Description*• Due Date• Labels• Reporter*• Summary*

Submission Fields• Assignee• Attachment• Components (auto assigned to challenges)• Description*• Labels• Reporter*• Summary*

* Denotes required field

Page 18: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Required Plugins

EFI Misc Workflow PluginDeveloper: InnovalogStats: 2,445 downloads

5 stars, 13 ratingsPlugin System: 2 (easy install)

We use the “Set field value from parent” to automatically set the Components value of Inspirations and Concepts to the Component value in the Challenge.

JIRA Component Watcher PluginDeveloper: Ray BarhamStats: 1,149 downloads

5 stars, 1 rating (mine)Plugin System: 2 (easy install)

We use this to send out notifications to groups when new Challenges or Submissions are created, then they can watch the ones they want.

Page 19: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Adding Components

Page 20: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Configuring Component Watcher

Go to Project Administration Actions Edit Component Watchers

Page 21: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Configuring Workflows

Page 22: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Configuring Workflows

Page 23: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Configuring Workflows

Page 24: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Configuring Workflows

Page 25: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Configuring Workflows - XML

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE workflow PUBLIC "-//OpenSymphony Group//DTD OSWorkflow 2.8//EN" "http://www.opensymphony.com/osworkflow/workflow_2_8.dtd"><workflow> <meta name="jira.update.author.name">davidmay</meta> <meta name="jira.description"></meta> <meta name="jira.updated.date">1337953807771</meta> <initial-actions> <action id="1" name="Create"> <validators> <validator name="" type="class"> <arg name="class.name">com.atlassian.jira.workflow.validator.PermissionValidator</arg> <arg name="permission">Create Issue</arg> </validator> </validators> <results> <unconditional-result old-status="null" status="open" step="1"> <post-functions> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueCreateFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.AssignToReporterFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg> <arg name="eventTypeId">1</arg> </function> </post-functions> </unconditional-result> </results> </action> </initial-actions> <common-actions> <action id="51" name="Close Challenge"> <meta name="jira.description"></meta> <results> <unconditional-result old-status="Not Done" status="Done" step="3"> <post-functions> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg> <arg name="eventTypeId">13</arg> </function> </post-functions> </unconditional-result> </results> </action> <action id="41" name="Reopen Challenge"> <meta name="jira.description"></meta> <results> <unconditional-result old-status="Not Done" status="Done" step="1"> <post-functions> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg> <arg name="eventTypeId">13</arg> </function> </post-functions> </unconditional-result> </results> </action> <action id="61" name="Evaluate Challenge"> <meta name="jira.description"></meta> <results> <unconditional-result old-status="Not Done" status="Done" step="4"> <post-functions> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg> <arg name="eventTypeId">13</arg> </function> </post-functions> </unconditional-result> </results> </action> </common-actions> <steps> <step id="1" name="Open"> <meta name="jira.status.id">1</meta> <actions><common-action id="51" /><common-action id="61" /> </actions> </step> <step id="3" name="Closed"> <meta name="jira.status.id">6</meta> <actions><common-action id="41" /> <action id="71" name="Reevaluate Challenge" view="fieldscreen"> <meta name="jira.description"></meta> <meta name="jira.fieldscreen.id">10105</meta> <results> <unconditional-result old-status="Not Done" status="Done" step="4"> <post-functions> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg> <arg name="eventTypeId">13</arg> </function> </post-functions> </unconditional-result> </results> </action> </actions> </step> <step id="4" name="Evaluating"> <meta name="jira.status.id">10019</meta> <actions><common-action id="51" /><common-action id="41" /> </actions> </step> </steps></workflow>

Don’t forget to change all instances of the fieldscreen IDs

Submission Workflow XML<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE workflow PUBLIC "-//OpenSymphony Group//DTD OSWorkflow 2.8//EN" "http://www.opensymphony.com/osworkflow/workflow_2_8.dtd"><workflow> <meta name="jira.update.author.name">davidmay</meta> <meta name="jira.description"></meta> <meta name="jira.updated.date">1337952902108</meta> <initial-actions> <action id="1" name="Create"> <validators> <validator name="" type="class"> <arg name="class.name">com.atlassian.jira.workflow.validator.PermissionValidator</arg> <arg name="permission">Create Issue</arg> </validator> </validators> <results> <unconditional-result old-status="null" status="open" step="1"> <post-functions> <function type="class"> <arg name="field">components</arg> <arg name="class.name">com.innovalog.jmwe.plugins.functions.CopyFieldValueFromParentFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueCreateFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.AssignToReporterFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg> <arg name="eventTypeId">1</arg> </function> </post-functions> </unconditional-result> </results> </action> </initial-actions> <common-actions> <action id="21" name="Resubmit" view="fieldscreen"> <meta name="jira.description"></meta> <meta name="jira.fieldscreen.id">10105</meta> <results> <unconditional-result old-status="Not Done" status="Done" step="1"> <post-functions> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg> <arg name="eventTypeId">13</arg> </function> </post-functions> </unconditional-result> </results> </action> <action id="41" name="Evaluate" view="fieldscreen"> <meta name="jira.description"></meta> <meta name="jira.fieldscreen.id">10105</meta> <results> <unconditional-result old-status="Not Done" status="Done" step="3"> <post-functions> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg> <arg name="eventTypeId">13</arg> </function> </post-functions> </unconditional-result> </results> </action> <action id="31" name="Adopt Idea" view="fieldscreen"> <meta name="jira.description"></meta> <meta name="jira.fieldscreen.id">10105</meta> <results> <unconditional-result old-status="Not Done" status="Done" step="4"> <post-functions> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.AssignToReporterFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg> <arg name="eventTypeId">13</arg> </function> </post-functions> </unconditional-result> </results> </action> </common-actions> <steps> <step id="1" name="Submitted"> <meta name="jira.status.id">10018</meta> <actions><common-action id="41" /><common-action id="31" /> </actions> </step> <step id="3" name="Evaluating"> <meta name="jira.status.id">10019</meta> <actions><common-action id="21" /><common-action id="31" /> </actions> </step> <step id="4" name="Adopted"> <meta name="jira.status.id">10020</meta> <actions><common-action id="21" /> <action id="51" name="Reevalidate" view="fieldscreen"> <meta name="jira.description"></meta> <meta name="jira.fieldscreen.id">10105</meta> <results> <unconditional-result old-status="Not Done" status="Done" step="3"> <post-functions> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.misc.CreateCommentFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.issue.IssueReindexFunction</arg> </function> <function type="class"> <arg name="class.name">com.atlassian.jira.workflow.function.event.FireIssueEventFunction</arg> <arg name="eventTypeId">13</arg> </function> </post-functions> </unconditional-result> </results> </action> </actions> </step> </steps></workflow>

Required Statuses• Open • Closed• Submitted• Evaluating• Adopted

Challenge Workflow XML

Required Screens• Comments

Page 26: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Configuring Notifications

Page 27: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Shout OutsMy Inspiration and References

Tobias Mayer•My first Agile mentor and coach•http://agilethinking.net/

Nick Muldoon•Fearlessly inquisitive and helpful•Agile Evangelist, Atlassian

Innovation Games•Fun, wacky, unexpected and effective•http://innovationgames.com/

OpenIDEO•Brilliant site, informational and inspirational•http://www.openideo.com/

Page 28: Using JIRA to build a culture of innovation - Atlassian Summit 2012

#summit12

Wherever your inspiration takes you …

JIRA can help get you there.

Page 29: Using JIRA to build a culture of innovation - Atlassian Summit 2012

Thank you!