- Describe the Scrum process
- There will be a process where each case is an Scrum project.
- Each Scrum project will have a number of Features connected to it.
- A Feature is a case in the Features process.
- Create a walkthrough of implementing it.
(self processes collect: [:p | (p name = 'Scrum project')]) do: [:p | self removeProcess: p]]
scrumProcess := self findProcessNamed: 'Scrum process'.
"Create a new process by cloning an existing prototype"
scrumProcess := self createProcess: 'Scrum project' fromPrototypeNamed: 'Simple prototype'.
"Find and add a user as process administrator, can be several.
This also of course gives that user access to the Process and imports the user into the Process for visibility."
scrumProcess addAdministrator: (self findUserNamed: '_balder').
"Create the workflow"
flow := scrumProcess newWorkflow.
flow name: 'Workflow'.
new := flow stageNamed: 'Startup'.
sp := flow stageNamed: 'Sprint planning'.
s := flow stageNamed: 'Sprint'.
sr := flow stageNamed: 'Sprint review'.
c := (flow stageNamed: 'Closed') isClosed: true.
new transition: 'Plan first sprint' to: sp.
sp transition: 'Start sprint' to: s.
s transition: 'Review sprint' to: sr.
sr transition: 'Plan another sprint' to: sp.
sr transition: 'Close project' to: c.
project := scrumProcess newFormNamed: 'Project'.
project label: 'Project'.
project newText label: 'Project name'.
project newText label: 'Description'; multiline: true.
project newText label: 'ROI'; multiline: true.
(project newText) label: 'Product owner'; description: 'Who is the owner of the product?'.
(project newSelection) label: 'Scrum master'; useCompletion: true; selector: #responsible; description: 'Who is the scrum master?'.
scrumProcess createCaseForm: project.
scrumProcess modifyCaseForm: project.
"Create a Features process where the cases can be assigned to certain projects"
feature := self createProcess: 'Scrum Feature' fromPrototypeNamed: 'Simple prototype'.
feature addAdministrator: (self findUserNamed: '_balder').
(feature createCaseForm) newSelection label: 'Scrum Project'; valuesProvider: [scrumProcess cases].