The Business Data Catalog
PDC 2005 Session OFF321
This could be the best thing I've seen at PDC -- a powerful way to manage business objects in disparate systems and provide access to them over SharePoint. I think it's a no-brainer to say that of all the features in SharePoint 2006, this will have the most transforming effect on the enterprise, mainly because it does more for managing enterprise knowledge than any other advance.
The Business Data Catalog allows you to centrally manage data models and data. You describe the metadata, upload it to the catalog, and the features "just light up." Data sources could include SAP, Siebel, legacy systems, etc.
System - data source
Entity - A real-world thing in a System
Method - An operation on an Entity
Association - A relationship between Entities
Metadata has two purposes: to describe a System's API, and to give it meaning to the API and make it easily usable.
This is a standard way to find instances of an entity. One method of an Entity is registered as the Finder, and another the SpecificFinder.
For example, you could have two WebMethods in a class to retrieve instances of the class (e.g. GetItemCollection and GetItem). In the metadata you include the object schema and the Methods available (like a WSDL). Then you use a MethodInstance section to associate the methods with the types e.g. Finder or SpecificFinder.
Adding a Source to the BDC
The Business Data Catalog is a Shared Service for all Office apps. You get to it through Site Settings, Add Application, and browse to the XML metadata file. Then you click Import and after the Import is complete you get a View page which allows you to manage or display the contained objects.
In a SPSite, you can now add Web Parts: Business Data List, Business Data Item. Then you'd configure the BDList to use your new Application, display certain fields, and boom it works. From there you can create a connection to provide an object to the BDItem web part. Once again, the BPItem WP allows you to choose which fields to display.
In a SPList, there is a new column type called Business Data, which lets you include your business objects in lists. For example, you could bind a Customer database to a help-desk support list.
You can also connect to a Database as a source. The metadata looks a little different only because of the connection type, and now the Methods are queries rather than web service methods. Back in the UI after an Import, the only different is that the Type is Database rather than Web Service,
Filters let you control the data returned by data finders. These are composed of annotations on a Methods input parameters. You might use a filter to create a dynamic picker so that in a custom list with a Business Data column, you can now have a rich browser with a search/filter feature (similar to Outlook Web Access).
Every MetaData object has a Properties collection. Business Data features make use of certain annotations, and you can extend the metadata for your own applications.
Once again, Properties are created in the metadata, either on their own or inside Filters. So now when adding the customer to a custom list, the user can type a part of a name and there will be an automatic lookup which presents a list of choices -- the user doesn't even need to use the Browse to locate a customer, it can be done based on a part of the Customer Name.
IDEnumerators and Search
You can full-text search any Application by exposing an IDEnumerator and SpecificFinder for your data. For example, you can have a WebMethod to GetCustomerIDs, define another MethodInstance to bind this method to the Application. Once published, the Search service can now iterate through the CustomerIDs and retrieve data for each customer (using the SpecificFinder).
Potentially, you could create several IDEnumerators with different names and get the same sort of behaviour as Audiences gives you in slicing Active Directory results.
Actions and WriteBack
Actions are links that travel everywhere with an entity. This allows users to take action in context.
Business Data Catalog API
There are two halvesL runtime and administration
The Runtime API lets you browse metadata, execute methods, retrieve instances, and traverse relationships. This is great for custom application builders.
The Administration API lets you create, read, update, and delete metadaata and manage permissions. It's designed for administrators.
Namespace: Microsoft.Office.Server.ApplicationRegistry (ApplicationRegistry = BDC). Note that this namespace may change.
AuthN, AuthZ, and Auditing
You can set authentication per application. There are two patterns: trusted subsystem or deelegation. There's one place to set permissions, you can control who accesses which entities, and there is support for LDAP. There is also one place to audit and log who accesses which data when.
Call to Action
Expose your line-of-business data as with web services or databases.
Write BDC-friendly methods or stored procedures.