Deutsch
|
English

Domain Model Editor: Bedingte Konfigurationen

Support Center

IC10485

Bedingte Konfigurationen: Type-abhängige Properties

Viele Properties in den XML-Spalten sind nur relevant, wenn ein anderes Property einen bestimmten Wert hat. Diese bedingten Abhängigkeiten müssen bei der Implementierung berücksichtigt werden.

GL_BEREICH_T: TYPE-abhängige SectionConfig Properties

Die SectionConfig-XML hat je nach TYPE unterschiedliche relevante Properties:

TYPE = 'WebForm' ✅ PFLEGEN

<SectionConfig>
  <Type>WebForm</Type>
  <!-- Keine zusätzlichen Domain-Model-Properties -->
  <!-- Alle weiteren Properties sind UI-relevant (Collapsed, Visible, CssClass) -->
</SectionConfig>

TYPE = 'System' ✅ PFLEGEN

<SectionConfig>
  <Type>System</Type>
  <!-- System-Sections werden automatisch generiert, keine Konfiguration nötig -->
</SectionConfig>

TYPE = 'ListConnect' ✅ PFLEGEN (1:N Beziehungen)

<SectionConfig>
  <Type>ListConnect</Type>
  <ForeignKeyTableName>RE_RAUM_T</ForeignKeyTableName>
  <ForeignKeyColumnName>RAUM_ID</ForeignKeyColumnName>
  <IsLinkConnect>false</IsLinkConnect>
  <IsOne2One>false</IsOne2One>
</SectionConfig>

Bedeutung:

  • ForeignKeyTableName: Zieltabelle der Navigation Property (z.B. RE_RAUM_T)

  • ForeignKeyColumnName: FK-Spalte in der aktuellen Tabelle (z.B. RAUM_ID)

  • IsLinkConnect: true = Nur Link, false = Eingebettete Liste

  • IsOne2One: true = 1:1 Beziehung, öffnet direkt den verlinkten Datensatz

TYPE = 'CheckboxConnect' ⚠️ PRÜFEN (N:M Beziehungen)

<SectionConfig>
  <Type>CheckboxConnect</Type>
  <MappingTable>GL_GRUPPE_USER_T</MappingTable>
  <DestinationTable>GL_GRUPPE_T</DestinationTable>
  <DisplayColumns>BEZEICHNUNG</DisplayColumns>
  <DisplayFilter>[{"field":"AKTIV","value":"1"}]</DisplayFilter>
</SectionConfig>

GL_TABELLE20_T: TYPE-abhängige PageConfig Properties

TYPE = 'Table' ✅ PFLEGEN

<PageConfig>
  <Type>Table</Type>
  <SystemName>Room</SystemName>
  <Description>Raum-Entity</Description>
</PageConfig>

<TableConfig>
  <PrimaryKeys>RAUM_ID</PrimaryKeys>
  <AllowInsert>true</AllowInsert>
  <AllowUpdate>true</AllowUpdate>
  <AllowDelete>true</AllowDelete>
</TableConfig>

TYPE = 'View' ✅ PFLEGEN

<PageConfig>
  <Type>View</Type>
  <SystemName>RoomView</SystemName>
  <Description>Raum-Ansicht (read-only)</Description>
</PageConfig>

<TableConfig>
  <PrimaryKeys>PKID</PrimaryKeys>
  <ReadOnly>true</ReadOnly>
</TableConfig>

GL_TABELLENSPALTE20_T: Datentyp-abhängige ColumnConfig Properties

Datentyp = String (varchar, nvarchar, char)

<ColumnConfig>
  <Required>true</Required>
  <MinLength>2</MinLength>
  <MaxLength>100</MaxLength>
  <RegularExpression>^[A-Z0-9]+$</RegularExpression>
  <IsEmail>false</IsEmail>
  <IsUrl>false</IsUrl>
</ColumnConfig>

Datentyp = Numeric (int, bigint, decimal, money, float)

<ColumnConfig>
  <Required>true</Required>
  <MinValue>0</MinValue>
  <MaxValue>999999</MaxValue>
  <UseAutoCounter>false</UseAutoCounter>
</ColumnConfig>

Implementierungs-Strategie

1. DTO-Design mit Type-spezifischen Properties

public class SectionMetadataDto
{
    public Guid SectionUid { get; set; }
    public string Type { get; set; }
    
    public ListConnectMetadataDto? ListConnect { get; set; }
    public CheckboxConnectMetadataDto? CheckboxConnect { get; set; }
}

2. Bedingte Validierung

When(x => x.Type == "ListConnect", () =>
{
    RuleFor(x => x.ListConnect)
        .NotNull()
        .WithMessage("ListConnect-Metadaten sind erforderlich");
});

Zusammenfassung: Bedingte Properties Matrix

Type

Status

Bedingte Properties

WebForm

✅ PFLEGEN

Keine zusätzlichen

System

✅ PFLEGEN

Keine zusätzlichen

ListConnect

✅ PFLEGEN

ForeignKeyTableName, ForeignKeyColumnName, IsLinkConnect, IsOne2One

CheckboxConnect

⚠️ PRÜFEN

MappingTable, DestinationTable, DisplayColumns, DisplayFilter

CrystalReport

❌ NEIN

UI-only Properties

StaticSection

❌ NEIN

Plugin-Name

Weitere Details zur Implementierung finden Sie in der vollständigen Dokumentation im Domain Model Editor Repository.

War dieser Artikel hilfreich?