Eine Konfigurationsdatei für Business Data Catalogs ist eine XML-Datei, die dem Schema bdcmetadata.xsd entspricht. Zum Binden der XSD-Datei an die neue XML-Datei gibt es mehrere Möglichkeiten:
Wenn man die Datei im Visual Studio entwickeln möchte kopiert man am besten die Datei bdcmetadata.xsd in die Visual Studio 2005 Schema Library. Die Datei ist im Order Program Files\Microsoft Office Servers\12.0\Bin zu finden und sollte in den Ordner Program Files\Microsoft Visual Studio 8\Xml\Schemas kopiert werden. Alternativ kann die Datei auch direkt von den Microsoft-Servern heruntergeladen werden (http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog/BDCMetadata.xsd) oder die XML-Datei an die Datei unter der angegebenen URL gebunden werden.
Im Visual Studio wird nun eine neue XML-Datei generiert. In den Dokumenteigenschaften wird die XML-Datei an das Schema bdcmetadata.xsd gebunden.
Zudem sollte das Schema auch als Attribut des LobSystem-Knotens angegeben werden. Hier ist es dann sinnvoll, gleich die Entsprechung auf den Microsoft-Servern zu verwenden.
<LobSystem |
Der im Attribut Name angegebene Name wird dann später im Sharepoint als Name der Applikation verwendet.
Als nächstes müssen die Verbindungseigenschaften festgelegt werden. Hierzu legt man als Childnode von LobSystem einen Knoten LobSystemInstances an, der die Verbindungseinstellungen zur Datenbank enthält.
<LobSystemInstances> |
Im Knoten LobSystem\Entities werden die verschiedenen Entitäten festgelegt, die abrufbar sind. In der Entität wird eine Methode definiert, die für das Abrufen der Daten verantwortlich ist.
<Entities> |
Dabei bestimmt die Eigenschaft RdbCommandText das SQL-Statement zum Abrufen der Daten. Hierbei ist darauf zu achten, dass Sonderzeichen wie „>“ und „<“ zu codieren sind (< bzw. >).
<Properties> |
Unter dem Knoten Parameters der Methode ist nun der Rückgabetyp zu deklarieren. Bei Datenbankabfragen handelt es sich hier um einen DataReader (= Collection), der DataRecords enthält. Unterhalb des DataRecords werden die einzelnen Rückgabespalten deklariert.
<Parameters> |
Für die einzelnen Spalten können jetzt noch Anzeigenamen deklariert werden. Hierzu deklariert man unterhalb des TypeDescriptors für die jeweilige Spalte jeweils einen LocalizedDisplayName für die gewünschte Sprache.
<TypeDescriptor TypeName="System.String" Name="OriginalPath"> |
Nun wird noch ein Knoten MethodInstances erzeugt, der den Finder deklariert. Dieser ist notwendig, damit Instanzen der Entities erzeugt werden können. Sharepoint benutzt die Finder-Methode, um alle Instanzen der Entitiy abzurufen und die SpecificFinder-Methode um bestimmte Entities abzurufen. Bei der Deklaration bezieht man sich auf die eben deklarierten Rückgabewerte.
<MethodInstances> |
Damit der SpecificFinder die Datensätze auch finden kann, muss noch der Identifier der Entity deklariert werden. Der Identifier ist in der Regel der Primärschlüssel der Tabelle.
<Identifiers> |
Dem entsprechenden Feld im Resultset wird nun noch die Eigenschaft IdentifierName zugewiesen und damit eine Referenz erzeugt. Damit sieht nun der TypeDescriptor-Tag wie folgt aus:
<TypeDescriptor TypeName="System.Int32" IdentifierName="DocumentID" Name="ID"> |
Wenn man die Konfigurationsdatei für die Applikation nun mal hochlädt kann man sich das Ergebnis in einer Business Data List anschauen.
Die Elemente sind schon sortier- und filterbar.
Um die Filtermöglichkeiten als Eingabefelder freizuschalten sind noch einige Änderungen an der Konfiguration notwendig.
Im Beispiel soll eine Like-Suche auf den Dokument-Namen ermöglicht werden. Zunächst wird der SQL-Command angepasst, so dass hier Parameter angenommen werden.
<Property Name="RdbCommandText" Type="System.String"> |
Im Anschluss daran muss das Wildcard-Zeichen des Backends festgelegt werden. Das Frontend-Wildcard-Zeichen „*“ wird durch dieses Zeichen ersetzt. Im SQL-Server ist das „%“. Die entsprechende Einstellung nimmt man in den Eigenschaften des LobSystems vor.
<Properties> |
Nun erfolgen noch einige Anpassungen an der Methode, die die Daten liest. Zunächst wird der im SQL-Statement verwendete Parameter als Eingabeparameter bekannt gegeben. Hierzu fügt man einen weiteren Parameter-Tag im Parameters-Tag der Methode ein. Für jeden Finder wird ein Standardwert für diesen Parameter festgelegt.
<Parameter Direction="In" Name="@Name"> |
Der Parameter bezieht sich auf den Filter mit dem Namen „Name“, der bisher noch nicht existiert. Die Filter werden im Unterknoten FilterDescriptors der Methode definiert.
<FilterDescriptors> |
Als Ergebnis erhält man bei der Anzeige des Webparts jetzt eine Eingabemaske in der man nach dem eben definierten Filter filtern kann.