quikino „quino - encodo systems ag...quino wird ausgesprochen als kē-′nō quino ermöglicht...

19
QuickInfo „Quino“

Upload: others

Post on 07-May-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

QuickInfo „Quino“

Page 2: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Quino wird ausgesprochen als kē-′nō

Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net

Einfache Unterstützung von .Net- und Dritthersteller-Komponentensammlungen

Modulares System dessen einzelne Subsysteme auch eigenständig verwendet werden können

Einleitung

Page 3: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

In Entwicklung (Version 0.3)

Anhand der aktuellen Kundenprojekte

weiterentwickelt

Ausgelegt für Munjari

Implementationsstand

Status

Page 4: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Modellierung per C# Sourcecode

Automatische Schemaprüfung und –migration

Persistenz (aufgesetzt auf ADO.Net)

– Postgres: productive

– MSSQL: experimental

GUI-Helpers und -Controls für WinForms und

ASP.Net

Eigene Expression-Sprache

Implementationsstand

Umfang / Features

Page 5: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Arbeitsweise

Modellieren

Schema migrieren

Code Generieren

UI und Logik implementieren

Ausführen / Testen

Page 6: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Das Modell wird zur Laufzeit durch MetaModelGenerator-Ableitungen im Speicher generiert / gebaut.

Das Modell

Modularisierung

public class CoreModelGenerator : MetaModelGenerator

{

public static void AddToModel(IMetaModel baseModel)

{

...

IMainModuleAspect mainModule =

baseModel.Aspects.FindFirst<IMainModuleAspect>();

MetaBuilder builder = new MetaBuilder(baseModel);

IModuleAspect module = new ModuleAspect(mainModule, "Core");

...

}

}

Page 7: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Das Modell

Klassen und Klassenvererbung

// Person

IMetaClass person = builder.AddClassWithDefaultPrimaryKey(

"Person",

...)

);

// Teacher

IMetaClass teacher = builder.AddWrapperClass(

person,

"Teacher",

new Guid("B406D15A-611B-11DC-BA95-754F56D89593")

);

// Student

IMetaClass student = builder.AddWrapperClass(

person,

"Student",

...

);

Page 8: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Das Modell

Klasseneigenschaften und Felder

// Person

person.Caption = "Dozent/Lernender";

person.PluralCaption = "Dozenten und Lernende";

prop = builder.AddProperty(

person,

"Name",

MetaType.Text,

...

);

prop.Caption = "Nachname";

prop.MaximumSize = MaximumNameSize;

builder.AddSort(person, "Name");

builder.AddSort(person, "FirstName");

Page 9: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Methoden können im Modell erfasst werden.

Methoden werden von einigen UI-Controls autom. als Buttons gerendert.

Schichtentrennung wird unterstützt

Das Modell

Methoden

IMetaMethod method = builder.AddMethod(

classClass,

"GenerateGroups",

"Gruppen erstellen"

);

method.Action = delegate(object sender, IMetaMethod method)

{

DoSomethingNiceInHere(sender);

};

Page 10: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Aspekte sind kleine, typisierte „Konfigurations-Rucksäcke“ welche den Modell-Elementen wie Klassen und Properties angehängt werden können.

Das Modell

Aspekte

IMetaProperty prop = ... ;

IViewPropertyAspect propAspect = new ViewPropertyAspect();

propAspect.IsVisible = false;

prop.Aspects.Add(propAspect);

IViewClassAspect personAspect = new ViewClassAspect();

personAspect.Icon = personIcon;

person.Aspects.Add(classAspect);

builder.AddSort(person, "Name");

builder.AddSort(person, "FirstName");

Page 11: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Pfade definieren Datenbeziehungen

Pfade sind bi-direktional

Aus Pfaden werden optional uni-direktionale Relationen gebaut

– Pfad: Buchung Konto

– Relation: Buchung.SollKonto, Buchung.HabenKonto

Pfade werden nie angezeigt, Relationen aber schon

Das Modell

Pfade

builder.AddOneToManyPath(

"Person_Contact",

person, "Id",

contact, "PersonId",

...

);

Page 12: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Relationen können Aspekte haben, welche die Darstellung der Relation im UI beeinflussen

Das Modell

Relationen

IMetaProperty prop = builder.AddRelation(

person,

"Contact",

"Kontaktinformationen",

"Person_Contact"

);

builder.AddRelationAspect(prop, ViewRelationDisplayType.ScrollableDetails);

builder.AddRelationGroupAspect(prop);

Page 13: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Item- und Listklassen mittels Generics

Generische Queries

Queries

IQuery query = new Query(Student.Metadata);

query.WhereEquals(Student.Fields.Id, studentId);

IDataItem<Student> studentItem = connection.GetItem<Student>(query);

studentItem.Load();

if (studentItem.Stored)

{

Console.WriteLine(studentItem.Object.Firstname);

}

Page 14: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Support für Zeitachse im Framework

Typisiertes Resultset mit n Datensätzen

Queries

Abfrage für n Datensätze mit Zeitachse

IQuery query = new Query(StudentGroup.Metadata);

query.WhereEquals(StudentGroup.Fields.GroupId, groupId);

query.CustomData.Add(new TimelineOptions(TimelineOperator.Equal, date));

IDataList<StudentGroup> studentsInGroup =

connection.GetList<StudentGroup>(query);

studentsInGroup.LoadObjectsInQuery();

foreach (StudentGroup studentGroup in studentsInGroup)

{

...

}

Page 15: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Mehrere OrderBy() für Sortierung

Verschachtelte Join‘s mit Where-Statement

Unterstützung von Distinct

Queries

Komplexe Abfrage mit Join

IQuery query = new Query(Absence.Metadata);

query.WhereEquals(Absence.Fields.OnHold, false);

query.OrderBy(Absence.Fields.ToDate, SortDirection.Ascending);

query.OrderBy(Absence.Fields.FromDate, SortDirection.Ascending);

query.Distinct = true;

query.Join(Absence.Relations.Student, QueryJoinCondition.All).

Join(Student.Relations.Classes, QueryJoinCondition.All).

Join(StudentClass.Relations.Class, QueryJoinCondition.All).

Join(Class.Relations.Teachers, QueryJoinCondition.All).

WhereEquals(ClassTeacher.Fields.TeacherId, teacher.Id);

IDataList<Absence> openAbsencesList = connection.GetList<Absence>(query);

openAbsencesList.LoadObjectsInQuery();

Page 16: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Typisierte Inserts

Bulk-Inserts möglich mittels IDataList<T>

Insert

Einfacher Insert eines Datensatzes

IDataItem<LogEntry> newLogEntry = connection.GetItem<LogEntry>();

newLogEntry.Create();

newLogEntry.Object.AbsenceId = absence.Id;

newLogEntry.Object.AuthorId = author.Id;

newLogEntry.Object.KindEnum = kind;

newLogEntry.Object.DateTime = time;

newLogEntry.Object.Description = description;

newLogEntry.Save();

Page 17: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Typisierte Updates

Bulk-Updates möglich mittels IDataList<T>

Update

Einfacher Update eines Datensatzes

IQuery query = new Query(Absence.Metadata);

query.WhereEquals(Absence.Fields.Id, absenceId);

IDataItem<Absence> absence = connection.GetItem<Absence>(query);

absence.Load();

if (absence.Stored)

{

absence.Object.OnHold = isOnHold;

absence.Object.LastTransition = DateTime.Now;

absence.Save();

...

Page 18: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Wechsel auf .Net 3.5 (asap)

Evtl. Support für DLinq und Entity-Framework

Integration der Quino-Tools in Visual Studio 2008

Weitere GUI-Helper und –Controls für WinForms und

Web

Support für Reporting

Modell als Textformat (ohne Sourcecode)

Munjari

Zukunft

Geplant

Page 19: QuikIno „Quino - Encodo Systems AG...Quino wird ausgesprochen als kē-′nō Quino ermöglicht modellgesteuerte Softwareentwicklung mit .Net Einfache Unterstützung von .Net- und

Vielen Dank für die Aufmerksamkeit. Fragen?

Ende