Objektmodellering med Dynamix Developer tools

Sedan tidigare har Dynamix objektmotor gjort det möjligt att arbeta med objektmodellering helt utan att behöva skriva databaskod. All modellering sker på .Net-nivån i t ex c#. Detta har visat sig enormt tidsbesparande i alla delar av projektet: prototyper, utveckling och efterjusteringar eller vidareutveckling. Modelleringsarbetet döljs inte under lager av databastabeller, stored procedures eller datacommands.

Tillsammans med Dynamix CMS 5 släpps nu Dynamix Developer Tools som gör utvecklarens arbete ännu effektivare. Kodfilerna för Dynamix-objekt såg tidigare ut enligt:

  1. C#
  1. namespace MySite
  2. {
  3. [Serializable]
  4. [Dynamix.Descriptors.UI.Name( "Nyhet" )]
  5. [Dynamix.Descriptors.UI.EditObjectDialogDescriptor( typeof( EditNewsItem.UIEditObjectDialogDescriptor ) )]
  6. public class NewsItem : Dynamix.Object
  7. {
  8. public static readonly TextProperty p_Headline =
  9. new TextProperty( "Headline" );
  10. public static readonly ObjectProperty p_Link =
  11. new ObjectProperty( "Link", typeof( Link ), ObjectPropertyFlags.Cascaded );
  12. ...
  13. #region Dynamix required constructors
  14. protected NewsItem( SerializationInfo info, StreamingContext context ) : base( info, context ) {}
  15. protected NewsItem( Dynamix.ObjectID id ) : base( id ) {}
  16. #endregion
  17. public NewsItem() {}
  18. [Dynamix.Descriptors.UI.Label( "Datum:" )]
  19. public DateTime Date
  20. {
  21. get { return GetPropertyValue( p_Date ); }
  22. set { SetPropertyValue( p_Date, value ); }
  23. }
  24. ...
  25. }

Koden är ganska rättfram, men med många egenskaper och funktioner kan det bli mycket ”infrastrukturkod” för deklaration av egenskaper och attribut för UI-styrning. Det finns viss risk att kopplingsfel uppstår vid t ex kopiering och inklistring av egenskaper (även om risken hade varit mångdubbelt större om vi hade haft ett databaslager att ta hänsyn till också).

Med Dynamix Developer Tools kan vi nu modellera objektet på ett mer intuitivt sätt. Vi börjar med att lägga till ett objekt från Visual studios ”Add new item”-meny:

Lägg till nytt dynamix-objekt

(Fler mallar än de två i exmplet kommer att finnas tillgängliga i den slutgiltiga releasen)

Verktyget lägger till ett antal filer som tillsammans modellerar objektklassen:

Filstruktur för dynamix-objekt i Visual Studio

Newsitem.dx.cs och NewsItem.dx.designer.cs innehåller kod och attribut, verktyget kan också skapa och knyta lokaliserad information till exempelvis typnamn och egenskapsetiketter.

Genom att öppna .dx-filen i Visual Studio kan man nu arbeta med en visuell bild av egenskaper och inställningar:

 

Visuell modellering med Visual Studio och Dynamix Developer Tools

Egenskaper och deras typer hanteras direkt i designern. Dynamix föreslår och förenklar val av giltiga typer som i exemplet ovan.

Det är enkelt att lägga till och hantera objektegenskaper. Dynamix genererar all kod som krävs för att kommunicera med systemet. Alla inställningar som ställs in från verktyget skapas i .dx.designer.cs-filen, vilket håller rent i den del av koden som man som utvecklare vill jobba med:

  1. C#
  1. namespace MySite
  2. {
  3. //This class must be the first class in the file, otherwise renaming the class using the editor may cause unexpected results
  4. public partial class NewsItem : Dynamix.Object
  5. {
  6. //This constructor must exist
  7. public NewsItem()
  8. {
  9. }
  10. }
  11. }

Användargränssnitt och redigering

I de allra flesta fall kan Dynamix generera användargränssnitt för objekten. I vårt fall ovan kan en sådan genererad redigeringsdialog se ut enligt:

Genererad redigeringsdialog för nyhet

Det mesta av användargränssnittets utseende och funktion kan styras via inställningar. All sådan konfiguration kan göras inifrån modelleringsverktyget. I exemplet ovan har vi lagt till texter för egenskapsnamnen, en hjälptext för datum-fältet och ändrat utseende för text-fälttet. Som utvecklare kan man påverka alla delar, t ex validering, dela upp egenskaperna på flera flikar och grupper, byta redigeringskontroller mm. Man är absolut inte begränsad till att använda Dynamix inbyggda kontroller utan kan byta ut hela dialogen eller delar av den som man vill.

Mycket mer information om dessa möjligheter att skapa gränssnitt kommer i senare postningar och artiklar.

2009-04-03