Are (InterActory)
Architectuur REpositories en REgistries

Enumeraties of tweenumeraties

Bij het opstellen van UML modellen kan gebruik gemaakt worden van enumeraties om het domein van een eigenschap te beperken. Dat biedt het voordeel dat een eigenschap geen waarde kan krijgen die niet valide is. De enumeratie is een lijst van waarden. Extra aardigheid in UML is dat deze enumeratie een eigen entiteit is en daardoor hergebruikt kan worden.

 Bij het omzetten naar programmatuur in DotNet (zoals VB.Net) lijkt het dat je enumeraties op een gelijke wijze kunt implementeren. Binnen een dynamic data applicatie zie je dat je enumeraties kunt toewijzen aan besturingselementen. Zie onderstaande code voorbeeld.

  _
  _
  _
  _
 Public Prioritity as object  

Public Enum ConcernPrioritity
   High
   Medium
   Low
End Enum

Je ziet dat er aan een eigenschap een enumeratie gekoppeld wordt. Ga je dit testen dan zie je dat er numerieke waarden worden opgeslagen voor de prioriteit. Dat is eigenaardig, want dat is niet gedefinieerd. Intern voegt DotNet aan een enumeratie nummers toe zodat de verborgen implementatie de volgende is:

Public Enum ConcernPrioritity
   High := 1
   Medium := 2
   Low := 3
End Enum

Dat is iets wat je niet in alle gevallen wilt, bijvoorbeeld als je database door meerdere applicaties wordt gebruikt. Dan loop je de kans dat in een andere applicatie een andere interne nummering wordt gebruikt. 

Gelukkig is dynamic data eenvoudig aan te passen. In de map field templates zit een control enumeration. Hierin moet een kleine aanpassing gedaan worden in de edit variant. Te weten de volgende:

    Protected Sub LoadItems()
        DropDownList1.ToolTip = Column.Description
        If (DropDownList1.Items.Count = 0) Then
            If Mode = DataBoundControlMode.Insert OrElse Not Column.IsRequired Then
                DropDownList1.Items.Add(New ListItem("[Not Set]", String.Empty))
            End If
            Dim strNaam As String
            For Each strNaam In Column.GetEnumType.GetEnumNames()
                DropDownList1.Items.Add(New ListItem(strNaam, strNaam))
            Next

        End If
        SetUpValidator(RequiredFieldValidator1)
        SetUpValidator(DynamicValidator1)
    End Sub

 De code in het rood is maatwerk en wijkt af van de werkwijze van het Dynamic Data framework.


Andere pagina's over dit onderwerp

Prototype modelleerscherm archimate extensie!
Datamodel architectuur repository
Webversie Risico Extensie
Checklist registratie
Checklists
Modelleren in archimate op een webpagina
ASP.Net en DynamicData
De metafoor van de eekhoorn
Risk Extension
Eerste ervaringen met Visual Lightswitch
Checklists en meer
Lightswitch of light switch
Microsoft Lightswitch Beta
Matrix reloaded
Modelleeromgeving
Nieuwe versie PSAssistent
Aangepaste versie PSAssistent
Overzicht Archimate Risico Extensie
De passie van een architect
Stand van zaken prototype
PSAssistent versie 0.7
Opmaak set voor PSAssistent
Website voorbeeld PSAssistent documentatiesite
Registratiemodule
Architectuurrichtlijnen
Dynamic Data Scaffolding
Stakeholders en concerns
De kop is eraf
Toolselectie ARE project
Uitwisselportaal
Aanpassingen Visio koppeling PSAssitent
Welkom