Daylight Application Framework
Das Daylight Application Framework ermöglicht die Anpassung und Weiterentwicklung von Daylight durch Integrationspartner und Kunden.
- Kundenspezifische Anpassungen/Erweiterungen auf Feld- und Entitätsebene.
- Eigenständige Applikationsmodule inkl. Businesslogik.
- Vollständige, vertikale Lösungen.
Der modellbasierte Architekturansatz bietet folgende Vorteile:
- Schnelle und effiziente Umsetzung von neuer Funktionalität mittels mitgelieferten Werkzeugen. Keine 'Basisprogrammierung' mehr erforderlich.
- Zugriff auf alle existierenden Applikationsbereiche und Basiskomponenten: Workflow-Engine, DMS, Collaboration, Schnittstellen-Manager, etc.
- Nahtlose Integration in das Daylight User Interface (WinClient & Web).
- Hersteller-unabhängige Entwicklung, Integration und Auslieferung von Erweiterungen. Es ist keine Neukompilierung des Daylight Source-Codes erforderlich.
Metadaten und ihre Verwendung
Daylight wurde modellgetrieben entwickelt und basiert auf einem Metadaten-Framework
Was sind Metadaten?
Metadaten sind per Definition Daten über Daten einer Applikation. Sie beschreiben Eigenschaften und Fähigkeiten von und Verbindungen zwischen verschiedenen Entitäten in einer bestimmten Anwendungsdomäne (z.B. Kurs- und Event-Management).
Warum Metadaten verwenden?
Metadaten ermöglichen generische Programmierung. Der Entwickler programmiert gegen Metadaten und nicht gegen spezifische Entitäten eines Datenmodells oder Funktionen einer Businesslogik.
Metadaten erlauben eine konsequente Anwendung des D.R.Y.-Prinzips (Don't Repeat Yourself). Durch das Modellieren von allen relevanten Charakteristiken von Datenstrukturen und Businesslogik können diese generell und einmalig abgehandelt werden und nicht für jede Ausprägung einzeln.
Framework-Eigenschaften
Daylight-Modelle werden (zur Zeit) in C# definiert und beim Applikationsstart komplett in den Arbeitsspeicher geladen.
Modelliert werden nicht nur Businessdaten sondern auch Applikationsdaten: Navigation- und Menü-Elemente der Benutzeroberfläche, Notfizierungen und Log-Messages, Schnittstellenbeschreibungen etc.
Das Framework hat die vollständige Kontrolle über den Persistenz-Layer (Datenbank) und bietet folgende Services:
- Objektrelationales Mapping
- Abwicklung des Datenzugriffs (lesend und schreibend)
- Vergleicht das Metamodell mit der Datenbank-Struktur und aktualisiert das Datenbank-Schema, wenn nötig.
Kundenspezifische Erweiterungen werden getrennt vom Daylight-Modell entwickelt und gepflegt und werden erst beim Applikationsstart über das Hauptmodell geladen.
Alle Komponenten der grafischen Benutzeroberfläche von Daylight sind 'metadaten-aware':
Daten-Komponenten
Sind aufgrund der Metadaten in der Lage, die ihnen übergebenen Daten korrekt darzustellen und handzuhaben.
Applikationslogische Komponenten
Konsumieren Applikations-Metadaten und präsentieren dem Benutzer passende UI-Features und Optionen passend zum aktuellen Applikationskontext.
Businesslogische Komponenten
Wissen aufgrund des Applikationskontextes und den Metadaten, welche Business-Funktionen und Workflow-Aktionen dem Benutzer angezeigt werden können.
Integrierte Reporting Engine
Verwendet das Metadaten-Framework für Design und Ausführung von Reports.
Modell-Elemente
Datenstrukturen: Business- und Applikationsdaten
- MetaClasses
- MetaProperties
- MetaPaths & MetaRelations
Operationen: Business- und Applikationslogik
- MetaMethods
- MetaMethodParameters
Aspekte
- Aspekte sind kleine, entwickler-definierte Informationspakete, welche den Meta-Elementen «angehängt» werden können und gegen die der Entwickler ebenfalls programmieren kann.
- Beispiele: SortOrder-Aspect, IsStandaloneEntity-Aspect, IsTinyEntity-Aspect
English version
Daylight as an application framework
Daylight, serving as an application framework, allows solution partners to extend existing functionality with custom modules or even to build vertical solutions on their own.
Daylight's model driven approach enables partners...
- to develop new functionality fast and efficiently using the tools and resources provided by Daylight.
- to (re)use all existing Daylight components and concepts (workflow, collaboration, document mgt, interface manager, ...)
- to seamlessly integrate custom extensions into the state of the art Daylight user interface (WinClient & Web).
- to deploy new modules and solutions in a snap. All custom extensions can be integrated without rebuilding and redeploying Daylight by the supplier.
What is Metadata and why use it?
Daylight is developed model driven using a Metadata framework.
What is Metadata?
Metadata is, by definition, data about an application's data. It describes the properties and capabilities of and connections between different types of information in a particular application domain (e.g. course and event management).
The metadata of a model driven application must be independently and centrally defined and under application control. It makes no sense to cede control of it to a single external component (like a Database or an ORM).
Why use Metadata?
Metadata allows generic programming - that means coding against metadata instead of coding explicitly against specific entities of the data model or methods of the business logic.
Metadata helps to apply the D.R.Y. principle (Don't Repeat Yourself) by modeling all relevant characteristics of data structures and business logic so they can be handled once in general and not for every single entity.
Daylight Metadata Characteristics
Daylight metadata is modeled with C# source code at design time and completely loaded into memory during application startup.
Not only business data is modeled but also application data: Navigation and menu elements, user notification and log messages, interface definitions etc.
The metadata framework is in full control of the persistence layer (database)
- performing data access and object relational mapping for the application
- comparing meta model with database structure and updating db schema and data if necessary.
Customer specific model extensions are developed and maintained separately from the Daylight Model. The extensions are loaded on top of the main model during application startup.
All of Daylight's UI components are metadata-aware
Data containing components
Know how to render and handle the data passed to them based on its metadata.
Application logic components: Ribbons, Menus, etc.
Consume application metadata, know what UI features to present to the user according to current application context and its metadata.
Business logic components: Function-Browser, Workflow-Engine, etc.
Know which business functions and workflow actions to present to the user according to current application context and its metadata.
Reporting
Integrated reporting engine based on the Metadata framework for report design and execution.
Modeling elements
Data structures (business and application data)
- MetaClasses
- MetaProperties
- MetaPaths & MetaRelations
Operations (business logic)
- MetaMethods
- MetaMethodParams
Aspects
- As pects are small, developer defined, information elements which can be attached to any other metadata element.
- Examples: SortOrder-Aspect, IsStandaloneEntity-Aspect, IsTinyEntity-Aspect