BCS: Heiter – 23 Grad, bei Herrn Müller

Werbung
SharePoint 2010
Business Connectivity Services
BCS: Heiter –
23 Grad,
bei Herrn Müller
Business Connectivity Services kombinieren
Web und Unternehmensdaten
Die MS BSC sind Bestandteil der SharePoint 2010-Edition und ermöglichen dem Benutzer einen einfachen
Lese- und Schreibzugriff auf externe Systeme. BCS
stellen den Nachfolger des BDC aus der Version 2007
dar, verfügen aber über weit mehr Funktionalität. Relevant wird der Einsatz von BCS, wenn es darum geht,
Daten aus unterschiedlichsten Quellen zu integrieren,
diese dem Benutzer in der MS Office-Welt anzubieten –
und auch On-/Offline-Funktionalität bereitzustellen.
Achim Karasek
Achim Karasek
E-Mail:
[email protected]
Achim Karasek ist Wirtschaftsinformatiker und leitet
das Microsoft-Solutions-Team bei addIT. Seine technologischen Schwerpunkte sind SharePoint, Workflow Solutions und InfoPath.
von BDC verwaltet wird. Dieses Model File wird von
SharePoint Designer oder dem BDC-Model Visual Studio Template vorgeneriert. Abbildung1 zeigt die Hierarchie der Meta-Daten Objekte innerhalb des Models.
Dieser Artikel zeigt, wie man „step by step“ eine Datenintegration aus unterschiedlichen Quellen vornimmt und mittels BCS in SharePoint und Outlook
bereitstellt. Als Beispiel werden Kontaktinformationen aus einer Unternehmensdatenbank mit aktuellen
Wetterinformationen aus dem Web kombiniert.
Bevor hier direkt in die Praxis eingestiegen wird, das
wichtigste zu Architektur, Konzepten und Voraussetzungen von BCS.
External Content Types
Zentrales Element bei dem Einsatz von BCS ist der sogenannte External Content Type (ECT). Wie die „normalen“ Content Types in SharePoint, definiert der External
Content Type die statischen Eigenschaften (Metadaten)
und das Verhalten (Methoden) eines Objekts (Entität).
Darüber hinaus wird über den ECT auch definiert, wie
der Zugriff auf das Backend-System erfolgt.
Im konkreten Beispiel handelt es sich hier um die
Entität „Kontakt“ aus der firmeneigenen Datenbank
(i.d.R. das CRM-System). Der Kontakt verfügt über
die üblichen Metadaten (Vor-, Nachname und Adressinformation. Zusätzlich wird der Kontakt mit Spalten
für die Wetterinformation versehen).
Das Verhalten des ECT wird über die sogenannten
CRUD (Create, Update, Delete) Methoden beschrieben, die abhängig vom Solution-Design automatisch
von SPD 2010 generiert oder aber mit Visual Studio
2010 selbst erstellt werden können (wie im Anwendungsfall dargestellt).
Der ECT ist eine wiederverwendbare Komponente
innerhalb des Office-Systems. Der ECT hält selbst keine externen Daten, diese bleiben im externen System.
Werden externe Daten jedoch offline genommen (bspw.
mit Outlook) wird der BCS Client Cache verwendet, in
den tatsächlich externe Daten transferiert werden, um
später online wieder synchronisiert zu werden.
Metadata Model
Das Model bildet das Herzstück für die Abbildung
eines externen Systems (auch Line of Business oder
Backend-System genannt). Im Model werden alle Entitäten des Backend-Systems und deren Beziehungen
untereinander verwaltet. Das Model ist ein XMLFile, das nach dem Deployment im Meta Data Store
www.VisualStudio1.de
Abbildung 1: Hierarchie der BDC-Metadatenobjekte
Im Vergleich zur 2007er Edition ist das Model nun der
Root-Knoten. Dies ermöglicht die Abbildung von External Content Types, die aus unterschiedlichen LOB-Systemen kommen, in einem Modell, was Deployment und
Versionsmanagement der Lösung stark vereinfacht.
A nwendungsfall:
„Das aktuelle Wetter bei meinen Kontakten“
LOB-Systeme sind meist auf einen eindeutigen Zweck
(wie bspw. das CRM-System) ausgerichtet. Der klassische Information Worker muss in der Praxis aber
oft Daten aus unterschiedlichsten Quellen manuell
zusammenzufügen, um seine täglichen Jobs zu erledigen. Dazu kann es beispielsweise nötig sein, Informationen aus dem Web (Aktien-, Währungskurse, etc.)
mit jenen aus den Unternehmensapplikationen zu
kombinieren. Im Beispiel werden Wetterinformationen aus dem Web mit Kontaktinformationen aus dem
Unternehmen kombiniert.
Der Charme von BCS besteht darin, dass man dem Benutzer die aggregierten Informationen in der gewohnten Office-Umgebung und in SharePoint zur Verfügung
stellt (natürlich schreibend und lesend, ein entscheidender Unterschied zum herkömmlichen Reporting).
53
SharePoint 2010
Abbildung 2: Diese
Abbildung zeigt die
Lösungsarchitektur für
den Anwendungsfall
Solution-Design
Die Kontakte des Unternehmens werden in einer SQL
Server-Datenbank gespeichert. Der Zugriff darauf erfolgt mit dem Entity-Framework. Aus einem WetterWebservice (http://www.geonames.org) werden mit
den Schlüsselwerten „Place“ und „Country“ die GeoKoordinaten und in Folge die nächstgelegene Wetterstation und das aktuelle Wetter für jeden Kontakt
individuell abgerufen. Abbildung 2 zeigt die einfache
Architektur des Anwendungsfalls.
Beide Quellen werden in einer BDC-Entität aggregiert. Schreibend stehen die Eigenschaften des Datenbankkontakts zur Verfügung - das Wetter kann man
auch in diesem fiktiven Anwendungsfall nicht verändern ;-).
Step by Step – Realisierung
Über Visual Studio 2010 wird ein neues Projekt aus
den SharePoint 2010-Templates „Business Data Connectivity Model“ erzeugt. Empfehlenswert ist es, für
BDC-Model, LOB-Systems, Entities und Namespaces
ein sprechendes Naming zu vergeben.
Der nächste Schritt ist, dass die Felder der Entität
sowie die CRUD-Methoden für den konkreten Fall definiert werden. Visual Studio hat durch das Template
bereits die Listings „Entity1.cs“ und „Entity1Service.cs“
vorgeneriert. Das „Entity1.cs“-File definiert dabei die
Meta-Daten des External Content-Types. Im Service-
File werden die Methoden implementiert.
Exemplarisch
für
alle CRUD-Methoden
ist hier erklärt, wie
die ReadList-Methode
(im BDC-Jargon, eine
Finder-Methode implementiert wird). Der
Zugriff auf die Datenbank (SQL Server)
wird mittels EntityFramework vorgenommen. Dadurch ergeben
sich zwei „DataLayer“,
die man in einem RealWorld-Szenario durch
vernünftige NamingKonventions auseinanderhalten muss, bezeichnen sie
ja doch immer dieselben Entitäten. In unserem Fall
sprechen wir von dem „Contact“-Objekt für BDC und
dem „dbContact“ Objekt für das Entity-Framework
(siehe auch Abbildung 2).
Für die Vorgenerierung der ReadList-Methode sollte
man auf jeden Fall die „BDC Methode Details Pane“
verwenden. In weiterer Folge müssen die Input- und
Return-Werte im BDC-Explorer richtig beschrieben
werden (siehe Kasten „Beschreibung der Parameter“).
Die Implementierung der Methode ist in Folge trivial
und zeigt sich in Listing 2.
Bemerkung: Die Methode „EnrichContactWithWeatherInfo“ erledigt den Web-Service Call, um für den
Ort und das Land die aktuelle Wetterinformation zu
liefern (wobei hierauf nicht näher eingegangen wird).
Nach der Implementierung aller Methoden kann das
Projekt deployed werden. Wie auch bei anderen SharePoint-Projekten wird ein WSP-File generiert und das
inkludierte Feature mit dem External Content Type
und dem Model steht sofort zur Verfügung (Abb. 3).
Nachdem die Berechtigungen konfiguriert wurden
(dies verhält sich exakt gleich wie bei jedem anderen
External Content Type), kann der Content Type über
den Content-Type-Picker ausgewählt werden und in
einer externen Liste oder als External Data Column
verwendet werden.
Listing 1
Listing 2
Abbildung der Metadaten durch die Klasse
ealisierung der ReadList Method im ServiceR
Modul
public partial class Contact
{
public int ID { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string Place { get; set; }
public string Country { get; set; }
}
public static IEnumerable<Contact> ReadList()
{
dataBaseContext = new
EFContacts(connectionString);
List<Contact> contactList = new List<Contact>();
foreach (dbContact persistedContact in dataBaseContext.dbContacts)
c
ontactList.Add(EnrichContactWithWeatherInfo(
persistedContact));
/ read only properties for BCS
/
(set information in TypeDescriptors)
public string FullName { get ; set; }
public string WeatherToday { get ; set;
54
}
return contactList;
SharePoint 2010
Beschreibung der Parameter
Wenn es in der Entität „Readonly“-Attribute gibt,
müssen in der Klasse trotzdem Setter für alle Properties definiert werden. Das Readonly-Verhalten
wird erst durch die Beschreibung des Parameters
in der jeweiligen CRUD-Methode definiert (TypeBeschreibung). Jede CRUD-Methode verfügt über
Parameter, deren „Richtung“ mit „In, Out, InOut
und Return“ beschrieben wird. Standardmäßig
bekommt eine ReadItem-Methode als „IN-Parameter“ einen ID-Wert. Als Return-Wert wird die
gesamte Klasse zurückgegeben, wobei dieser Type
über den sogenannten Type-Deskriptor genauer
beschrieben werden kann.
Im Anwendungsbeispiel muss der Eingabe-Parameter vom Type „Contact“ in der Update-Methode
wie folgt beschrieben werden:
Die Type-Deskriptoren „Fullname“ und „WeatherToday“ müssen daher entfernt werden, da diese
beiden Properties nicht gesetzt werden dürfen.
Durch diese Beschreibung des Parameters wird
auch sichergestellt, dass das EditForm.aspx richtig generiert wird – und die Readonly-Attribute
nicht zur Verfügung stehen.
Eine gute Übersicht, welche Type-Deskriptoren
bei welchen Methoden wie verwendet werden
können, ist unter http://msdn.microsoft.com/enus/library/ff464437.aspx zu finden.
www.VisualStudio1.de
Um die externe Liste mit Outlook auch offline verfügbar zu machen, muss der External Content Type
mit dem SharePoint Designer nachbearbeitet werden,
um das Mapping zwischen den Office Type „Contact“
und der eigene Klasse herzustellen (Infos dazu unter
http://msdn.microsoft.com/en-us/library/ee557243.
aspx). Nach einem Redeployment der Lösung aus Visual Studio muss der Mapping-Vorgang mit dem SPD
wiederholt werden. Die Ursache ist, dass sich Visual
Studio und SPD die Änderungen im BDC Meta Store
gegenseitig überschreiben. In einem Real-World-Szenario muss das Mapping in die VS-Lösung integriert
werden.
Der User findet nach dem Öffnen der SharePoint-Liste in Outlook nun folgendes Bild vor und kann wie gewohnt die Kontaktinformation in Outlook verwalten –
und erhält zusätzlich immer die Information, welches
Wetter der jeweilige Ansprechpartner gerade hat, was
wie jeder weiß, sich ganz klar auf die Stimmung der
jeweiligen Person auswirken kann ;-). (Abb. 4)
Auch wenn der Anwendungsfall fiktiv ist, lässt sich
damit gut die Mächtigkeit von BCS demonstrieren.
Das direkte Einbinden von LOB-Systems und die Aggregation von Web-Daten in die Office-Welt ist mit
BCS stark vereinfacht worden.
Links und Quellen
[1] http://msdn.microsoft.com/en-us/library/
ee556826.aspx
55
Herunterladen