SharePoint 2007 introduced the Business
Data Catalog, which existed as a tool to allow line-of-business data to
be surfaced within SharePoint web sites. Using a collection of
specially designed web parts, it was easy to integrate business data
with other content created and managed by SharePoint. For example, a
connection could be made to a customer relationship management (CRM)
system to allow customer contact details to be retrieved and displayed
within an intranet site.
With the release of SharePoint 2010, things have
moved on considerably. The biggest shortfall with Business Data Catalog
was its inability to update data. Information imported using Business
Data Catalog was read-only—meaning users had to go back to the source
system if they wanted to make changes. Of course, this makes sense if
you consider that the aim of Business Data Catalog was to allow the
incorporation of business data within SharePoint-managed content.
However, having to go back to the source system to make changes is an
anathema in the age of the mash-up.
SharePoint
2010 introduces Business Connectivity Services (BCS), which can be used
to amalgamate business data with SharePoint-managed content. BCS can
also be used as an abstraction layer for practically any data source.
It’s now easy to create mash-up applications with full read and write
access to all business systems using a single data access platform.
Components of BCS
Business Connectivity Services is the generic name
for a set of services and components that enable connectivity between
disparate business systems. Several key components are involved in the
delivery of BCS, which is included as a component of Microsoft Office
2010, providing universal data access for Office client applications.
External Content Types
New in 2010—Content
types are a core part of the SharePoint data structure. External content types, as the name
suggests, extend the content type metaphor to content stored in other
systems and accessed via BCS.
Although external content types share a lot of
common functionality with standard content types, there are a few
important differences. First, external content types are created and
managed by BCS. It’s not possible to add columns or make changes to
columns in an external content type without redefining the underlying
BCS model. Second, external content types can’t be used in ordinary
lists or attached to ordinary lists in the same way that standard
content types can. You can create external lists that look and behave
in much the same way as a regular list, but those lists are bound to a
single external content type only.
Tip
In the MSDN documentation for BCS, you’ll often find
references both to entities and external content types. To save any
confusion, both are effectively the same thing. An external content
type is created by defining an entity using BCS. Strictly speaking, an
entity is the definition of a particular item of data using Business
Data Connectivity metadata, whereas an external content type is a
SharePoint implementation of that representation.
External Lists
New in 2010—As
mentioned, external content types can’t be used in regular lists.
SharePoint 2010 introduces a new type of list, known as the external list,
that provides full read/write functionality for external data. Each
external list is bound to a single external content type and allows the
user to create, read, update, and delete data in the external system in
much the same way as a regular list does for SharePoint-managed data.
Of course, the actual capabilities of the list are dependent on the BCS
configuration for the data source. For example, if the underlying model
doesn’t support deletion, then delete functionality will be unavailable
in the external list.
External Data Column
New in 2010—The
external data column is an enhancement of the Business Data List column
in SharePoint 2007. It’s basically a lookup column that can be included
in any SharePoint list, where it will allow the user to select items
from an external data source. For example, in a list containing
employee reviews, if a company’s HR system is linked via BCS, an
external column can be added to the list that allows employee details
to be attached to review data. The external data column allows one
record to be selected, but any number of fields from that record can be
included. So in our example, we could bring through employee name, payroll number, and contact telephone all by selecting the employee from a searchable list.
External Data Search
Included in the SharePoint Server 2010 product is
External Data Search, a service that allows data linked using BCS to be
indexed and returned in search results in the same way as SharePoint
managed data. External Data Search gives an organization the ability to
search and index all business data regardless of the source, as long as
an appropriate BCS model can be defined.
Secure Store Service
The Secure Store Service replaces the Single Sign On
Service that was included with MOSS 2007. Because BCS allows
connectivity with a number of different systems, one of the problems
that can arise is the maintenance of multiple sets of credentials for
each user. It’s quite common for each line-of-business application to
require users to authenticate, often using different credentials each
time. Secure Store Service resolves this problem by securely storing
credentials for each line-of-business application and mapping those
credentials to a particular SharePoint login. So, for example, Joe
Bloggs is automatically logged into SharePoint using his username domain\jbloggs. However, when he accesses the company’s enterprise resource planning (ERP) system, he has to log in with the username bloggs-j
and a different password. By using the Secure Store Service, when he
needs to access business data via BCS in SharePoint, his credentials
for the ERP system are automatically retrieved and used transparently
by BCS.
Profile Pages
In MOSS 2007, the main mechanism for viewing
business data in SharePoint was the profile page. Profile pages were
automatically generated from a set of specially designed web parts to
provide full details of the business data in question as well as any
related items. In SharePoint Server 2010, this functionality is still
present and offers a quick and easy way to present a read-only view of
business data.
External Data Web Parts
As mentioned, SharePoint Server 2010 includes the
functionality to generate profile pages for BCS entities automatically.
This functionality is provided by the following web parts, which can be
connected together to provide a comprehensive view of a particular
entity and any related entities:
External Data List
The External Data List web part (formerly known as the Business Data
List web part) is used to display a read-only list of data relating to
a particular external content type.
External Data Item
This web part (formerly known as the Business Data Details web part) is
used to display the details of a single item of a particular External
Content Type. This web part is particularly useful since it uses
Extensible Stylesheet Language Transformations (XSLT) to transform the
data, allowing a great deal of flexibility in terms of how the data is
presented.
External Data Item Builder
This web part (formerly known as the Business Data Item Builder web
part) is used to retrieve a particular item based on parameters passed
via the query string. This web part is then connected to other web
parts, such as the External Data Item, to display the data to the user.
External Data Related List
This web part (formerly known as the Business Data Association web
part) can be used to retrieve a list of items automatically from a
related External Content Type. Again, by connecting this web part to
others such as the External Data List, associated data is automatically
retrieved based on the item selected in the External Data List web part.
External Data Connectivity Filter
While the External Data Item Builder web part is used to identify an
item based on parameters from the query string, the External Data
Connectivity Filter (formerly known as the Business Data Filter web
part) can be used to capture criteria on the page. This web part can
then be connected to other web parts to display associated data.
Rich Client Integration
One of the major features of BCS is its ability to
present a common platform for accessing business data. By using this
model, SharePoint Server 2010 provides the facility to surface business
data in rich client applications such as Microsoft Outlook. For
example, a list of employees located in an HR system can be accessed
via BCS in an external list. However, with rich client integration, the
external list can also be accessed as a contacts list in Microsoft
Outlook. In a similar fashion to external lists, full read/write
functionality is also available in the client application. It’s
possible to update a contact record in Outlook and have it
automatically cascaded through to the HR system. Furthermore, all
clients connected to the data via Outlook will see the effects of the
update through an automatic synchronization process.
Rich Client Components
As well as the features present in SharePoint 2010,
Office 2010 applications also include additional functionality to use
BCS data, including the following:
External data parts Controls that display items or lists of items retrieved from BCS in a client application.
Actions
When creating BCS models, custom actions can be associated with each
external content type. These actions are carried through to rich client
applications and appear in the ribbon, allowing for seamless
integration with the BCS system from the client application. For
example, the BCS model may define a Submit Order action that creates
and submits an order based on a particular entity. The order can then
be created using a rich client application and submitted using a custom
action, all without any specific coding requirements on the rich client
side.
Business Data Connectivity Service
The Business Data Connectivity (BDC) service is the
successor to the Business Data Catalog service in MOSS 2007. The name
was changed because “Catalog” suggests a read-only collection of
business data, whereas the new BDC service provides full read/write
capability. BDC provides the engine for BCS by creating and managing
metadata describing possible interactions with the source data systems
as well as providing an extensible connector framework.
Connector Framework
By default, BDC provides connectivity to a number of different systems:
Databases
By making use of ADO.NET, the BDC provides access to any database for
which ADO.NET drivers exist. Since the ADO.NET provider model is
extensible, it’s possible to create ADO.NET drivers for practically any
database system.
Windows Communication Foundation (WCF) endpoints
WCF provides a framework for accessing web services. By using WCF
endpoints, the BDC is able to communicate with external data systems
via appropriately designed web services.
.NET Connectivity Assemblies
Even though using ADO.NET and WCF provides the flexibility to talk to
the vast majority of data systems, sometimes neither of these methods
is appropriate. For systems such as these, using .NET Connectivity
Assemblies is the answer. Since the assemblies are written in managed
code, they can perform whatever actions are required to access the
source system.
Note
At the time of writing, SharePoint Designer supports
the creation of SQL Server connections only. It is possible to create a
connection for other ADO.NET data providers, but manual generation of
the BDC metadata will be required. Some third-party tools offer a much
higher degree of customization of BDC metadata, such as BCS Meta Man
from Lightning Tools.
Clearly, these three options cover virtually every
imaginable scenario; however, just in case a hitherto unimagined
scenario crops up in the future, BDC also provides a pluggable
connector framework that lets developers plug in a new connector for
systems of different types. The three connectors described here are
examples of out-of-the-box connectors.
Tip
Although BDC provides a connector for WCF
endpoints, unless the web service meets very specific requirements, it
can’t be configured using the WCF Connection wizard. Having tried to
configure several well-known web services via the wizard, I found it to
be practically impossible. The WCF connector is best used to
communicate with custom-designed WCF or Simple Object Access Protocol
(SOAP) services. For any other web service, a .NET Connectivity
Assembly will provide the configuration flexibility required.