README.md

resourcer

Build Status

R Package for Team Resource Management

About

This package can be used to define team resources and assign them to projects.

When resources are added, their overall available capacity is also defined. These resources may then be assigned to projects, with a specific allocated capacity. Resources may be added to multiple projects.

Resources may be viewed, showing their available and unassigned capacity. Projects may also be viewed, showing which resources are assigned to them.

Projects and resources may be searched by name.

Install

# install.packages("devtools")
devtools::install_github("phillc73/resourcer")
library("resourcer")

Examples/tests found in each R file and in the examples below. Manual pages and vignette still to be written.

This package has no dependencies, although knitr is suggested for producing prettier tables.

How to Use

resourcer evolved from a requirement to manage a large number of people, in multiple teams, working across multiple projects.

With resourcer you can:

add_resource("Smith", 40, "A-Team", "Colonel", 5)
add_resource("Murdock", 40, "A-Team", "Captain", 4)
add_resource(name = "Peck", capacity = 40, team = "A-Team", role = "Lieutenant", weight = 3)
add_resource(name = "BA", capacity = 40, team = "A-Team", role = "Sergeant", weight = 2, notes = "Likes gold, pities fools")
show_resources()
show_resources("available_capacity")
show_resources(order_by = "weight")

|name    | capacity|team   |role       | weight| available_capacity|
|:-------|--------:|:------|:----------|------:|------------------:|
|Smith   |       40|A-Team |Colonel    |      5|                 40|
|Murdock |       40|A-Team |Captain    |      4|                 40|
|Peck    |       40|A-Team |Lieutenant |      3|                 40|
|BA      |       40|A-Team |Sergeant   |      2|                 40|

# Search by resource name
show_resources(name = "Murdock")
# Search by resource name, partial match
show_resources(name = "Murd")
# Search by resource role
show_resources(role = "Sergeant")
# Search by capacity
show_resources(capacity = 40)
# Search by team
show_resources(team = "A-Team")

assign_resource("Murdock", 20, "Recovering")
assign_resource("Murdock", 20, "Flying")
assign_resource("Peck", 30, "Persuading")
assign_resource("Smith", 20, "Disguising")
assign_resource("Smith", 15, "Smoking")
assign_resource("BA", 30, "Lifting Stuff")
assign_resource("BA", 20, "Fixing Stuff")

show_projects()
show_projects(order_by = "name")
# Order by assgined capacity, in the first position
show_projects("assigned_capacity")

|name    |role       |team   | assigned_capacity|project       |
|:-------|:----------|:------|-----------------:|:-------------|
|Smith   |Colonel    |A-Team |                15|Smoking       |
|Murdock |Captain    |A-Team |                20|Recovering    |
|Murdock |Captain    |A-Team |                20|Flying        |
|Smith   |Colonel    |A-Team |                20|Disguising    |
|BA      |Sergeant   |A-Team |                20|Fixing Stuff  |
|Peck    |Lieutenant |A-Team |                30|Persuading    |
|BA      |Sergeant   |A-Team |                30|Lifting Stuff |

# Search by project description
show_projects(project = "Disguising")
# Search by project description, partial match
show_projects(project = "Disg")
# Search by project description and assignee name
show_projects(project = "Disguising", name = "Smith")
# Order by assigned capacity and search by assignee name
show_projects(order_by = "assigned_capacity", name = "Smith")
# Search by assignee role within projects
show_projects(role = "Colonel")
# Search by assignee team within projects
show_projects(team = "A-Team")

assign_resource("Peck", 25, "Disguising")
show_projects(project = "Disguising")

|name  |role       |team   | assigned_capacity|project    |
|:-----|:----------|:------|-----------------:|:----------|
|Smith |Colonel    |A-Team |                20|Disguising |
|Peck  |Lieutenant |A-Team |                25|Disguising |

assign_resource("Murdock", 25, "Flying")
assign_resource("Smith", 10, "Smoking")
assign_resource("BA", 15, "Lifting Stuff")
show_projects()

|name    |role       |team   | assigned_capacity|project       |
|:-------|:----------|:------|-----------------:|:-------------|
|Smith   |Colonel    |A-Team |                20|Disguising    |
|Peck    |Lieutenant |A-Team |                25|Disguising    |
|BA      |Sergeant   |A-Team |                20|Fixing Stuff  |
|Murdock |Captain    |A-Team |                25|Flying        |
|BA      |Sergeant   |A-Team |                15|Lifting Stuff |
|Peck    |Lieutenant |A-Team |                30|Persuading    |
|Murdock |Captain    |A-Team |                20|Recovering    |
|Smith   |Colonel    |A-Team |                10|Smoking       |

velocity()

|project       | capacity_velocity| weight_velocity| total_velocity|
|:-------------|-----------------:|---------------:|--------------:|
|Disguising    |                45|               8|            175|
|Fixing Stuff  |                20|               2|             40|
|Flying        |                25|               4|            100|
|Lifting Stuff |                15|               2|             30|
|Persuading    |                30|               3|             90|
|Recovering    |                20|               4|             80|
|Smoking       |                10|               5|             50|

velocity(project = "Disguising")
velocity(project = "Disg")

|project    | capacity_velocity| weight_velocity| total_velocity|
|:----------|-----------------:|---------------:|--------------:|
|Disguising |                45|               8|            175|

unassign_resource("BA", "Lifting Stuff")
unassign_resource("Peck", "Disguising")
show_projects()

|name    |role       |team   | assigned_capacity|project      |
|:-------|:----------|:------|-----------------:|:------------|
|Smith   |Colonel    |A-Team |                20|Disguising   |
|BA      |Sergeant   |A-Team |                20|Fixing Stuff |
|Murdock |Captain    |A-Team |                25|Flying       |
|Peck    |Lieutenant |A-Team |                30|Persuading   |
|Murdock |Captain    |A-Team |                20|Recovering   |
|Smith   |Colonel    |A-Team |                10|Smoking      |

unassign_resource("Peck", "Persuading")
remove_resource("Peck")
show_resources()

|name    | capacity|team   |role     | weight| available_capacity|
|:-------|--------:|:------|:--------|------:|------------------:|
|BA      |       40|A-Team |Sergeant |      2|                 20|
|Murdock |       40|A-Team |Captain  |      4|                 -5|
|Smith   |       40|A-Team |Colonel  |      5|                 10|

remove_project("Recovering")
show_projects()

|name    |role     |team   | assigned_capacity|project      |
|:-------|:--------|:------|-----------------:|:------------|
|Smith   |Colonel  |A-Team |                20|Disguising   |
|BA      |Sergeant |A-Team |                20|Fixing Stuff |
|Murdock |Captain  |A-Team |                25|Flying       |
|Smith   |Colonel  |A-Team |                10|Smoking      |

To Do



phillc73/resourcer documentation built on May 3, 2019, 1:48 p.m.