Für die Strukturierung der Assemblies in BA gibt es den sogenannten AssemblyType
. Dieser legt fest in welcher Reihenfolge die Assemblies geladen werden und welche Implementierungen überladen können.
Innerhalb seines VS Projektes muss der Typ an zwei Stellen definiert sein. Zum einen in der AssemblyInfo.cs
[assembly: AssemblyFramework(BA.Core.AssemblyType.Project)]
Und als zweites in der Dependency Injection Klasse
[assembly: UseForDI(AssemblyType.Project)]
In einem BA Modul wird eine Übersetzung definiert, die in einem Projekt verändert werden soll. Dazu muss in der Translation.csv des Projektes lediglich, die Übersetzung mit der identischen Guid nochmals hinterlegt werden. Nun kann man dort neue Texte in den jeweiligen Sprachen hinterlegen. Um zu entscheiden, welche Übersetzung welche ändert, wird der AssemblyType
herangezogen. In der folgenden Liste werden die Typen und deren Zweck beschrieben.
Core
Die Basisanwendung. (Nur BA Intern)CoreExtension
Interne Core Erweiterungen (Nur BA Intern)Module
Core Module wie BA.ContactModuleExtension
Erweiterungen der Core Module, wie BA.CRM.ContactProduct
Diese Ebene bundelt die einzelnen Module zu einem Produkt und sollte in der Regel keine eigenen Programmierungen enthalten. Hier ist es sinnvoll beispielsweise die Konfiguration abzulegen. Auch alle Voraussetzungen zu schaffen, dass die Konfiguration vollständig arbeitet, beispielsweise die konfigurierten Rollen anzulegen.ProductExtension
An dieser Stelle könnte man Erweiterungen des Produktes implementieren.Project
Ein Projekt implementiert an dieser Stelle die notwendigen Erweiterungen. Man entscheidet an dieser Stelle auf welchen Teilen das Projekt basiert. Beispielsweise kann man auf das Produkt BA.CRM inkl. der Konfiguration und Rollen basieren oder man basiert auf einzelne Module, wobei deren Abhängigkeiten zu beachten sind. Falls man beispielsweise nicht auf dem Produkt BA.CRM basiert, kann man entscheiden ob Module wie der Designer, Businessmail oder Report eingebunden werden.
Die VS Projektvorlage ist auf diese Ebene eingestellt.ProjectExtension
Diese Ebene kann genutzt werden, um Erweiterungen auf einem bestehenden Projekt zu implementieren.
Abhängigkeiten der Assemblies dürfen nur auf gleicher Ebene oder auf mit niedrigeren vorhanden sein. Beispielsweise ist BA.CRM abhängig von BA.CRMContact, dieses ist Abhängig von BA.Contact und dieses von BA.Core.