UML Model


Actors

Admin

Table 1. 

Actor Admin

The Admin/Administrator is the one user that has all administrative rights within the program. He could, theoretically change user settings and reseller settings, however the program's user interface should only provide him those administrative use cases that are likely to be performed by him, e.g. managing database rights and not e.g. changing a user's email address settings.

Web User

Table 2. 

Actor Web User

A web user is responsible for managing his own home directory and email accounts. Multiple web users can be owned by one client.

Client

Table 3. 

Actor Client

A Client may or may not be given a set of web users that each have an own home directory etc. All billing administration is done via a cient, not via a web user.

Reseller

Table 4. 

Actor Reseller

Support Personnel

Table 5. 

Actor Support Personnel

Support personnel includes everyone within the company who can help a client via the ticket system.

Use Cases

Enable Rails for User

Table 6. 

Use Case Enable Rails for User

By default, users are not allowed to run Rails apps. They can, however, be enabled on a per-user basis. Once enabled, a user can create an unlimited number of Rails applications

create rails app scaffold

Table 7. 

Use Case create rails app scaffold

Creating a Rails application only requires the name of the application. It involves the creation of a three databases, one for each environment (production, testing and development). by default, only the development and testing environment are enabled, being restricted in their resource usage. Production environment can be enabled by an administrator after a client's request.

rename application

Table 8. 

Use Case rename application

Renaming the application involves changing the directory name, updating RAILS_ROOT/app/public/.htaccess and RAILS_ROOT/config/database.yml, renaming the database and updating the access rights to the database. The user should be able to specify which of these actions should actually be performed.

edit database config

Table 9. 

Use Case edit database config

delete rails application

Table 10. 

Use Case delete rails application

edit environment settings

Table 11. 

Use Case edit environment settings

Changing environment settings involves updating /etc/apache2/sites-available/<username>_rails and RAILS_ROOT/config/environment/*

set aplication limits

Table 12. 

Use Case set aplication limits

Setting application settings requires updating the Apache config files (/etc/apache2/hosts-available/<username>_rails)

create MVC scaffold

Table 13. 

Use Case create MVC scaffold

The user provides a set of methods and properties for a new entity via e.g. an online form. Consolvix then creates or updates the corresponding database table and runs "script/generate" to create the Model, View and Controller according to the specified properties (=database cols) and methods (=actions).

edit data scheme for app

Table 14. 

Use Case edit data scheme for app

view old Invoices

Table 15. 

Use Case view old Invoices

view current Invoice

Table 16. 

Use Case view current Invoice

download invoice as PDF

Table 17. 

Use Case download invoice as PDF

view not yet payed invoices

Table 18. 

Use Case view not yet payed invoices

Create payment reminder

Table 19. 

Use Case Create payment reminder

Delete invoice

Table 20. 

Use Case Delete invoice

send PDF version via email

Table 21. 

Use Case send PDF version via email

Create Invoice

Table 22. 

Use Case Create Invoice

create support ticket

Table 23. 

Use Case create support ticket

A client/user/reseller opens a ticket by posting a request using a web based form. He includes some additional information that may help solving the problem, depending on what type of problem is to be solved. Also, depending on the type of the problem, the request is being forwarded to different personnel (i.e. technical, financial or generic support)

close support ticket

Table 24. 

Use Case close support ticket

Closing a ticket means, no further answers are possible. Also, it enables the client to rate the solution to the problem posed.

reply to ticket

Table 25. 

Use Case reply to ticket

rate resolved ticket

Table 26. 

Use Case rate resolved ticket

Clients can rate tickets after they are closed either by the client himself or by the support personnel.

send ticket via email

Table 27. 

Use Case send ticket via email

Each time a ticket has been opened or a reply has been posted, both parties are being emailed a copy of the posted content. When the reply is coming from the support personnel, the post is being signed using PGP.

view all tickets

Table 28. 

Use Case view all tickets

view tickets for user

Table 29. 

Use Case view tickets for user

Support personnel can list all tickets for a particular user, whereas the user itself can only list its own ticktes. Filters can be applied to only show e.g. new, closed, rated, unrated, technical or financial tickets.

Interfaces

Classes

RailsHost

Table 30. 

Class RailsHost
Attributes:
visibility type name
protected   id
   
protected   server_type
   
protected   server_config_id
   

ServerConfig

Table 31. 

Class ServerConfig
Attributes:
visibility type name
protected   id
   
protected   hostname
   
protected   port
   
protected   document_root
   
protected   error_logfile
   
protected   access_logfile
   

ApacheConfig

Table 32. 

Class ApacheConfig
Attributes:
visibility type name
protected   suexec_user
   
protected   suexec_group
   

LighttpdConfig

Table 33. 

Class LighttpdConfig

WebUser

Table 34. 

Class WebUser
Attributes:
visibility type name
protected   home_directory
   
protected   max_email_accounts
   
protected   max_email_addresses
   
protected   max_traffic
   
protected   max_storage
   
protected   max_script_runtime
   

Reseller

Table 35. 

Class Reseller
Attributes:
visibility type name
protected   max_clients
  the maximum allowed clients the reseller may create
protected   max_traffic
  maximum total traffic, i.e. the sum of all clients's traffic for this reseller
protected   max_storage
  maximum sorage allowed for this reseller and this clients
protected   max_email_accounts
  maximum of total email accounts this reseller and his clients may use in total

User

Table 36. 

Class User
Attributes:
visibility type name
protected   id
   
protected   name
   
protected   password_hash
   
protected   last_login
   

Client

Table 37. 

Class Client
Attributes:
visibility type name
protected   id
   
protected   forename
   
protected   surname
   
protected   birthday
   
protected   email_address
   
protected   registration_date
   
protected   billing_interval
   
protected   address_id
   

Domain

Table 38. 

Class Domain
Attributes:
visibility type name
protected   id
   
protected   name
   
protected   parent_id
  for subdomains, parent_id points to the main domain. e.g. 'a.b.c.com'.parent_id == 'b.c.com'.id

EmailAddress

Table 39. 

Class EmailAddress

an email address is represented by the concatenation of this.name + '@' + this.domain.name

Attributes:
visibility type name
protected   id
   
protected   name
   
protected   realname
   
protected   organisation
   

EmailAccount

Table 40. 

Class EmailAccount
Attributes:
visibility type name
protected   id
   
protected   name
  e.g. web1p1, web1p2,...
protected   max_quota
  maximum allowed MB for this account
protected   realname
   
protected   maildir
   
protected   password
   
protected   status
   
protected   comment
   

Invoice

Table 41. 

Class Invoice
Attributes:
visibility type name
protected   id
   
protected   date
   
protected   from_date
   
protected   to_date
   
protected   total
   

InvoiceElement

Table 42. 

Class InvoiceElement
Attributes:
visibility type name
protected   id
   
protected   quantity
   
protected   total
   
protected   product_id
   

Operations:

visibility

return

name

public   price
  returns the total price by calling the product's price()-getter function

Product

Table 43. 

Class Product
Attributes:
visibility type name
protected   id
   
protected   name
   
protected   description
   
protected   available_qty
   
protected   min_qty
   
protected   max_qty
   
protected   default_qty
   
protected   type
   

TimedProduct

Table 44. 

Class TimedProduct

Rented products like domains and webspace as well as working time have time dependant costs. Their prices are therefore calculated per time unit.

Attributes:
visibility type name
protected   type
  The type attribute with value 1 indicates class type "TimedProduct" in the database
protected   from
   
protected   to
   
protected   price_per_unit
   
protected   time_unit
   

Operations:

visibility

return

name

public

void

price
  return this.quantity * this.price_per_unit * this.unit

SellableProduct

Table 45. 

Class SellableProduct
Attributes:
visibility type name
protected   type
  type=2 indicates "SellableProduct"
protected   price
   

ActiveRecord

Table 46. 

Class ActiveRecord

NSSUser

Table 47. 

Class NSSUser
Attributes:
visibility type name
protected   id
   
protected   name
   
protected   realname
   
protected   shell
   
protected   pasword
   
protected   status
   
protected   uid
   
protected   gid
   
protected   home_dir
   
protected   last_change
   
protected   min
   
protected   max
   
protected   warn
   
protected   inact
   
protected   expire
   
protected   maildir
   
protected   address
   
protected   client_id
   

NSSGroup

Table 48. 

Class NSSGroup
Attributes:
visibility type name
protected   id
   
protected   name
   
protected   status
   
protected   password
   
protected   gid
   

AccessRight

Table 49. 

Class AccessRight
Attributes:
visibility type name
protected   id
   
protected   right
   
protected   module
   
protected   context
   

EmailForwarding

Table 50. 

Class EmailForwarding
Attributes:
visibility type name
protected   id
   
protected   email_address_id
   
protected   destination
   

SelectedProduct

Table 51. 

Class SelectedProduct
Attributes:
visibility type name
protected   id
   
protected   client_id
   
protected   product_id
   
protected   quantity
   
protected   date
   

Address

Table 52. 

Class Address
Attributes:
visibility type name
protected   id
   
protected   address
   
protected   postcode
   
protected   city
   
protected   country
   
protected   phone
   
protected   client_id
   

Diagrams

BillingClasses

Classes:

RailsAndVirtHostsClasses

Classes:

SystemClasses

Classes:

Rails Use Cases

Actor:

Use Cases:

Billing Use Cases

Actor:

Use Cases:

Ticket Use Cases

Actor:

Use Cases: