Table of Contents

ScrumGraph [2015]

This project corresponds to the backend of the web application built as a degree project.

SCRUMGRAPH publishes a series of RESTful web services resources related to the key elements in the Scrum framework, to store these elements in graphs to support decision-making in the commitments to be acquired in the planning of future Sprints, based on the information recorded in each Node.

Branch Info

TAG 0.0.1

  • RESTful services built with jersey.
  • Neo4j - (Graph Database)
  • Java 7

Branch 1.0.X

  • Spring Boot 1.5.9.RELEASE
  • Spring Framework 4.3
  • Spring REST
  • Spring AOP
  • Spring DATA - Neo4j [2.2.3]
  • Java 8

Branch 2.0.X

  • Spring Boot
  • Spring Framework 5
  • Spring REST
  • Spring DATA - Mongo DB
  • Java 8-9

Design

The execution of software development projects based on the SCRUM framework requires the realization of a control and/or follow-up. The database proposed for this context focuses on the information related to the most relevant SCRUM elements involved in the process of building functional increments of a software product. These elements are Users, Projects, Sprints, Product Backlog Items (PBI) and Tasks.

A user belongs to a SCRUM team, the team works on a project. A project is composed of Sprints and in turn, is defined by Product Back Log Items. A Sprint works on a series of PBIs. A PBI is performed by a set of tasks.

The schema of the application domain network database model is shown in the following image:

alt text

Model elements

Nodes

  • USER => Represents the users or members belonging to a SCRUM team.
  • TEAM => Represents the SCRUM team
  • PROJECT => Represents the software project to be tracked.
  • PBI => Represents the Product Backlog Items that make up the functionalities to be carried out in a project.
  • SPRINT => Represents the iterations carried out on a project.
  • TASK => Represents the tasks performed in a PBI.

Relationships

  • BELONGS_TO => Relationship between the USER and TEAM nodes, indicates which application users belong to a SCRUM team.
  • WORKS_ON => Relationship between TEAM and PROJECT nodes, indicates the team responsible for a project.
  • IS_DEFINED_BY => Relationship between the PROJECT and PBI nodes, indicates the functionalities (PBI) with which a software project is composed.
  • IS_COMPOSED_OF => Relationship between the PROJECT and SPRINT nodes, indicates the iterations necessary to carry out the software project.
  • IS_COMPOSED_BY => Relationship between the SPRINT and PBI nodes, indicates which functionalities are worked on in an iteration of the software project.
  • IS_PERFORMED_BY => Relationship between the PBI and TASK nodes, indicates the tasks necessary to perform a functionality.

Attributes

Attributes are the key-value properties set on each node of the graph-oriented database model. Below are the attributes defined for each of the nodes.

alt text

alt text

alt text

alt text

alt text

alt text

Constraints

Constraints allow us to have unique values on the properties of nodes with the same label specification.

The following constraints were defined:

  • USER node: Constraint is defined on the email property.
  • PROJECT node: Constraint is defined on the code property.
  • PBI node: Constraint is defined on the code property.
  • SPRINT node: Constraint is defined on the code property.
  • TASK node: Constraint is defined on the code property.

User Request

Create an user

Request Info
  • Http Method: POST
  • URI: http://host:port/ScrumGraph/sgrest/users
  • Content-Type: application/json
  • Headers: X-ScrumGraph-Header: {"authToken": "token_autogenerated"}
  • Entity Body:
    {
    "name": "Cristian",
    "lastName": "Peña",
    "email": "cristiancamilopena@gmail.com",
    "password": "asassaddsd",
    "roleDefault": "team-member",
    "isAdmin": false
    }
Response Info
  • Entity Body:
    {
        "status": "ok",
        "errorMsg": "",
        "errorCode": 0,
        "response": {
            "user": {
                "id": 3,
                "name": "Cristian",
                "lastName": "Peña",
                "email": "cristiancamilopena@gmail.com",
                "roleDefault": "team-member",
                "available": "true",
                "isAdmin": "false",
                "authToken": "eea30a4cec3e24441302331"
            }
        }
    }

Get All Users

Request Info
  • Http Method: GET
  • URI: http://host:port/scrumgraph/sgrest/users
  • Content-Type: application/json
  • Headers: X-ScrumGraph-Header: {"authToken": "token_autogenerated"}
Response
  • Entity Body:
{
    "status": "OK",
    "errorMsg": "",
    "code": 200,
    "response": {
        "users": [
            {
                "id": 1,
                "name": "SUPER ADMIN SG",
                "lastName": "SCRUM GRAPH",
                "email": "superadminsg@gmail.com",
                "available": true,
                "admin": true
            },
            {
                "id": 2,
                "name": "Jimena",
                "lastName": "Rodríguez",
                "email": "jimenarp@gmail.com",
                "available": true,
                "admin": false
            },
            {
                "id": 3,
                "name": "Cristian",
                "lastName": "Peña",
                "email": "cristiancamilopena@gmail.com",
                "available": true,
                "admin": false
            }
        ]
    }
}