Ruby on Rails with Roles - Ein verteiltes Rollenmodell für RESTful Webservices

Autor
K. Ettmayer
Masterarbeit
MT1001 (Jänner, 2010)
Betreut von
o. Univ.-Prof. Dr. Michael Schrefl
Angeleitet von
Mag. Bernd Neumayr
Ausgeführt an
Universität Linz, Institut für Wirtschaftsinformatik - Data & Knowledge Engineering
Ressourcen
Kopie

Kurzfassung (Englisch)

Roles are an important construct in conceptual modelling and object-oriented systsms. Concerning the World Wide Web role concepts did not attract much attention so far. However, especially in the World Wide Web there is a plethora of information, which could be better structured and be modelled more naturally if a role construct was available.

In decentralized information systems, like the World Wide Web, role models have to fulfil additional requirements: Roles can be generated by generalization as well as by specialization, roles have to exist independently and can be integrated to a role hierarchy at any time, the navigation within a role hierarchy has to be supported to minimize access restrictions. A further requirement includes an uniform communication within an information system. Therefore URIs are best qualified for identification and XML for representation of roles.

The main contribution of this thesis is an extension package for the web application framework Ruby on Rails that allows to work with role classes and instances within a web application. Ruby on Rails uses the model-view-controller architectural pattern (MVC) and provides for semi-automatic generation of model, view, controller and database table of a class by using a so-called scaffold generator. The role-extension package described in this thesis comes with a scaffold generator for role classes that intuitively integrates with the existing application framework. This extension package is developed in three steps. In the first step a prominent role concept will be implemented in the programming language Ruby. In the second step this implementation will be enhanced by requirements for its decentralized use, as described in the previous paragraph. In step three Ruby on Rails will be extended accordingly.

Kurzfassung (Deutsch)

In objektorientierten Systemen bilden Rollenmodelle wichtige Konstrukte zur Modellierung bzw. Programmierung. In Bezug auf das World Wide Web wurden Rollenkonzepten jedoch noch wenig Aufmerksamkeit gewidmet. Doch genau dort finden sich Unmengen an Informationen, welche anhand von Rollenmodellen besser strukturiert werden können.

Rollenmodelle müssen für den Einsatz in dezentralen Informationssystemen, wie dem World Wide Web, zusätzlichen Anforderungen genügen. Rollen sollen nicht nur durch Spezialisierung, sondern auch durch Generalisierung erzeugt werden können. Weiters sollen Rollen unabhängig existieren können und eine spätere Eingliederung in eine Rollenhierarchie ermöglichen. Auch die Navigation innerhalb einer Rollenhierarchie muss bestmöglich unterstützt werden, wodurch Einschränkungen durch Zugriffsbeschränkungen minimiert werden sollen. Eine weitere Anforderung besteht in einer einheitlichen Kommunikation innerhalb eines Informationssystems, wobei URIs zur Identifikation und XML zur Repräsentation von Rollen bestens geeignet sind.

Die Hauptaufgabe dieser Diplomarbeit besteht in der Erstellung eines Erweiterungs-Packages für das Web Application Frameworks Ruby on Rails, welches die Verwendung von Rollenklassen und -instanzen innerhalb einer Web-Applikation erlaubt. Ruby on Rails verwendet den Model-View-Controller Architekturstil (MVC) und bietet einen so genannten scaffold-Generator an, mit dessen Hilfe das Model, die View, der Controller und die Datenbanktabelle einer Klasse halbautomatisch generiert werden. Das im Rahmen dieser Diplomarbeit entwickelte Package beinhaltet einen solchen scaffold-Generator für Rollenklassen für Ruby on Rails. Die Erstellung dieses erweiterten Packages erfolgt schrittweise. Zu Beginn wird ein aus der Literatur ausgewähltes Rollenkonzept in der Programmiersprache Ruby implementiert, in Schritt zwei wird das Konzept und die Implementierung um die Anforderungen für den dezentralen Einsatz erweitert. Dieses erweiterte Rollenkonzept samt Implementierung wird schließlich in Schritt 3 an die Spezifika von Ruby on Rails angepasst und in dieses Framework integriert.