Upload
juan-carlos-gonzalez
View
939
Download
3
Embed Size (px)
DESCRIPTION
Novedades en BCS en SharePoint 2013
Citation preview
¡Integración de datos de negocio con BCS!
Juan Carlos González (@jcgm1978)MVP SharePoint Serverhttp://geeks.ms/blogs/[email protected]
Agenda
Repaso a BCS
Fuentes OData
ECTs a nivel de Aplicación
Interfaces REST y CSOM
Notificaciones, Alertas y Manejadores de Eventos
BCS: Tipos de Contenido Externo
BCS permite la integración de datos externos en SharePoint a través de los Tipos de Contenido Externo (ECTs): Mapean en “modo ORM” datos externos a entidades de negocio:
Clientes, Pedidos, Empleados, etc.
Abstrae a los desarrolladores de las fuentes de datos subyacentes
Un ECT define: La conexión al sistema externo: Servicios Odata Servicios Web
Servicios WCF SQL Server SQL Azure BDs de negocio
Las operaciones que se pueden realizar sobre los datos externos: Crear Leer Actualizar Borrar
Los ECTs se pueden crear mediante SharePoint Designer o Visual Studio
BCS: Arquitectura
Caché de Cliente
BCS
Runtime de BDC en
Cliente
SharePoint Foundation / Server
Aplicación de Servicio de BCS
Servicio de Almacenamiento Seguro
Búsquedas, Columnas Externas, WebParts, CSOM, Pérfiles, Apps
Almacén de Metadatos
Runtime de BDC en Servidor
Sitio / App SharePointPaquete
VSTOListas
Externas
Office Client
Integración con Office
External Business Parts
Código Personalizado Archivos BDCM
PersonalizadoSQL
Datos Externos
WCF / OData
Conector .NET
BCS: Mejoras Se mejoran las capacidades de ordenado y filtro para Listas
Externas de modo que se mejora la eficiencia en las consultas Soporte para fuentes SQL y OData
En fuentes WCF no se soporta ordenación
A nivel de rendimiento: El paginado, filtrado y ordenado de los datos se realiza en origen, de
manera que no se consulta el set completo de datos cada vez
API en el lado del cliente: REST + CSOM
Se puede exportar a Excel una lista externa
Soporte en SharePoint Online
Fuentes OData Se añade soporte por la estandarización de OData para exponer y
acceder fuentes de datos diversos: Es una “fuente de primera clase” para modelos de BDC como como lo
son servicios WCF o bien SQL Server
Se pueden generar modelos de BDC en Visual Studio
De momento, SharePoint Designer no soporta fuentes OData
Fuentes OData Ejemplo de ECT:
<LobSystem Name="ODataWebNorthwindModel" Type="OData"> <Properties> <Property Name="ODataServiceMetadataUrl" Type="System.String"> http://services.odata.org/Northwind/Northwind.svc/$metadata</Property> <Property Name="ODataMetadataAuthenticationMode" Type="System.String">PassThrough</Property> <Property Name="ODataServicesVersion" Type="System.String">2.0</Property> </Properties> <LobSystemInstances> <LobSystemInstance Name="http://services.odata.org/Northwind/Northwind.svc"> <Properties> <Property Name="ODataServiceUrl" Type="System.String"> http://services.odata.org/Northwind/Northwind.svc </Property> <Property Name="ODataServiceAuthenticationMode" Type="System.String">PassThrough</Property> <Property Name="ODataFormat" Type="System.String">application/atom+xml</Property> </Properties> </LobSystemInstance></LobSystemInstances></LobSystem>
Fuentes OData Ejemplo de ECT:
Type, tiene que estar fijado a ODATA cuando se trabaja con fuentes de este tipo
ODataServiceMetadataUrl, proporciona el “end pint” de los metadatos del servicio
ODataAuthenticationMode, modo de autenticación de acceso a la fuente de datos
ODataServicesVersion, versión de Odata
ODataServiceUrl, el “endpoint” para el servicio
ODataFormat, el formato de los datos devueltos
Fuentes OData Creación de operaciones en ECTs:
Estereotipo Operación
Ejemplo de Uri
Finder GET http://server/crm.svc/Clients
SpecificFinder GET http://server/crm.svc/Clients(‘Contoso’)
Creator POST http://server/crm.svc/Clients
Updater PUT http://server/crm.svc/Clients(‘Contoso’)
Deleter DELETE http://server/crm.svc/Clients(‘Contoso’)
AssociationNavigator
GET http://server/crm.svc/Clients(‘Contoso’)/Contacts
ECTs a nivel de aplicación En SharePoint 2010, todos los ECTs se definían a nivel de granja:
Se necesita la implicación del administrador para su instalación
El nuevo modelo de aplicaciones de SharePoint 2013 requiere un nivel de aislamiento más granular: Se introduce la posibilidad de definir ECTs dentro de una Aplicación
La administración y despliegue de ECTs es a nivel de sitio
ECTs a nivel de aplicación Arquitectura:
Sistema Externo
Runtime del BDC
BusinessDataMetadataCatalog
Archivos BDCM
Lista Externa
MetadataCatalogFileName= MyModel.BDCM
FileBackedMetadataCatalog
ECTs a nivel de aplicación Instancias de listas externas:
<ListInstance Url="$Resources:core,lists_Folder;/AppScopedList" Description="My App Scoped List" OnQuickLaunch="TRUE" Title="My App Scoped List" Id="AppScopedList"> <DataSource> <Property Value="" Name="LobSystemInstance"/> <Property Value="" Name="EntityNamespace"/> <Property Value="" Name="Entity"/> <Property Value="" Name="SpecificFinder"/> <Property Name="MetadataCatalogFileName“ Value="BDCMetadata.bdcm" /> </DataSource></ListInstance>
Interfaces REST y CSOM SharePoint 2013 introduce CSOM para BCS:
var ctx = new SP.ClientContext();var web = ctx.get_web();entity = web.getAppBdcCatalog().getEntity(entityNameSpace, entityName);ctx.load(entity);lobSystem = entity.getLobSystem();ctx.load(lobSystem);lobSystemInstances = lobSystem.getLobSystemInstances();ctx.load(lobSystemInstances);
ctx.executeQueryAsync(success, failure);
Interfaces REST y CSOM SharePoint 2013 introduce CSOM para BCS:
//Instancia de una entidad del ECT y del sistema de negocio Entity eEntity = ctx.Web.GetEntity( "CRMECT.CRMModel", "Contacto"); LobSystem lobSistema = eEntity.GetLobSystem();
//Colección de instancias de sistemas de negocio LobSystemInstanceCollection lsic = eEntity.GetLobSystem().GetLobSystemInstances(); ctx.Load(lsic); ctx.ExecuteQuery(); //Sistema de negoco concreto LobSystemInstance lobSystemInstance = lsic[0]; // Accedemos a la colección de filtros para un cierto "Finder" FilterCollection fCollection = eEntity.GetFilters("VisualizarContactos"); //Acceso a los datos de negocio EntityInstanceCollection eicResultado= eEntity.FindFiltered(fCollection, "VisualizarContactos", lobSystemInstance); ctx.Load(eicResultado); ctx.ExecuteQuery();
Interfaces REST y CSOM Las listas externas se pueden acceder a través de la API REST de
SharePoint 2013:
AppLevelECT.Grid.prototype = {
init: function () {
$.ajax({ url: this.surlWeb + "_api/lists/getbytitle('Customers')/items?
$select=BdcIdentity,CustomerID,ContactName", headers: { "accept": "application/json", "X-RequestDigest": $("#__REQUESTDIGEST").val() }, success: this.showItems }); }
Notificaciones y Manejadores de Eventos
En SharePoint 2010, las listas externas no soporta manejadores de eventos o alertas
Capacidad muy solicitada
En SharePoint 2013 se introduce soporte a: Manejadores de eventos en listas externas
Manejadores de eventos para ECTs
Alertas en listas externas
Notificaciones y Manejadores de Eventos
Los ECTs deben implementar nuevos estereotipos: Subscripción (DeliveryAddress, EventType) - Subscribe
No subscripción (SubscriptionId) - Unsubscribe
DeliveryAddress puede ser:
Una URL relativa para manejadores de eventos de listas externas
Una URL absoluta para manejadores de eventos de entidades
Tipos de eventos (EventType):
ItemAdded
ItemUpdated
ItemDeleted
SubscriptionId, devuelto en operación de subscripción…se usa para para llamar a “Unsubscribe”
Notificaciones y Manejadores de Eventos
Definición de los estereotipos en el modelo:
Delivery Address<Parameter Direction="In" Name="deliveryAddress"><TypeDescriptor TypeName="System.String" Name="deliveryAddress"><Properties><Property Name="IsDeliveryAddress" Type="System.Boolean">true</Property>
Event Type<Parameter Direction="In" Name="eventType"><TypeDescriptor TypeName="System.String" Name="eventType"><Properties><Property Name="IsEventType" Type="System.Boolean">true</Property>
Subscription ID<Parameter Direction="Return" Name="Subscribe"><TypeDescriptor TypeName="System.Int32" ReadOnly="true" Name="SubscriptionId"><Properties><Property Name="SubscriptionIdName" Type="System.String">SubscriptionId</Property><Interpretation><ConvertType LOBType="System.Int32" BDCType="System.String"/></Interpretation>
Notificaciones y Manejadores de Eventos
Las listas externas soportan funcionalidad de alertas
Es una capacidad disponible por defecto que implica: El sistema de negocio debe implementar Subscribe / Unsubscribe
El sistema de negocio tiene que enviar notificaciones de los cambios
No se necesita implementar un manejador de eventos en el lado de SharePoint, las alertas están disponibles por defecto
Notificaciones y Manejadores de Eventos
Registro de un manejador de eventos para una lista externa:
string assembly = "MyAssembly, Culture=, Version=, PublicKeyToken="; string className = "MyAssembly.MyClass"; using (SPSite site = new SPSite(siteUrl)) { using (SPWeb web = site.RootWeb) { SPList list = web.Lists[listTitle]; list.EventReceivers.Add( SPEventReceiverType.ItemAdded, assembly, className); }}
Notificaciones y Manejadores de Eventos
Registro de un manejador de eventos para una lista externa: Similar a agregar RER (Remote Event Receivers en listas estándar)
Cuando se añade el manejador, se llama a la operación de subscripción
Cuando se elimina el manejador se llama a la operación de no subscripción
El registro se puede realizar con el CSOM
Notificaciones y Manejadores de Eventos
Registro de un manejador de eventos para una entidad:
IEntity customerEntity = catalog.GetEntity("AdventureWorks", "Customer");
ILobSystemInstance lobSystemInstance = customerEntity.GetLobSystem(). GetLobSystemInstances()["AdventureWorks"];
NotificationCallback callback = new NotificationCallback(){ Type = “Absolute”, Url = "http://myserver/myservice.svc" };
string subscriptionId = customerEntity.Subscribe( EntityEventType.ItemAdded, callback, lobSystemInstance);}
Notificaciones y Manejadores de Eventos
Arquitectura:
Sistema Externo
Manejador de Eventos Personalizado
Receptor de eventos CSOM
Manejadores de Eventos
BDC
Endpoint REST
Con
ecto
resOperaciones
Notificaciones
Notificaciones y Manejadores de Eventos
Arquitectura: Secuencia de eventos:
1. Primero se crea un ECT que soporta os estereotipos “Subscribe” y “Unsubscribe”
2. Se crea una lista externa a partir del ECT
3. Enlace a las subscripciones de eventos, lo que expone el correspondiente “endpoint”
4. El sistema externo devuelve la llamada al “endpoint”
5. A nivel de SharePoint, se realiza la actualización de las notificaciones recibidas para la lista externa
6. BCS consulta el sistema externo en busca de cambios
7. El manejador de eventos envía las alertas
8. El manejador de eventos remoto puede realizar acciones adicionales
Conclusiones Fundamentos y arquitectura de BCS iguales con respecto a SP
2010, se mejora notablemente el rendimiento en las consultas de datos
Se extiende el ámbito de los ECTs de forma que se pueden consumir datos externos en aplicaciones
Soporte de manejadores de eventos para ECTs y Listas externas
Soporte de alertas en Listas Externas
A nivel de desarrollo, más posibilidades desarrollo a través del Modelo de Objetos en Cliente para BCS y la API REST
BCS en SharePoint
2013
Aprende de los expertos Descárgate CompartiMOSS:
http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
Descuentos Campus MVP
10% de descuentoen todos nuestros cursos y libros hasta el 31 de diciembre
Introduce el cupón PECIIN12SN al realizar tu compraen nuestra tienda online.
Prueba SharePoint a tope CloudShare:
http://www.cloudshare.com/
Disponen de varias plantillas de SharePoint 2013 listas para probar
Nos vemos en los foros Foro de desarrollo:
http://social.msdn.microsoft.com/Forums/es-es/mossdeves/threads
Foro de IT http://social.technet.microsoft.com/Forums/es-ES/mosses/threads
Foro de Office 365: http://community.office365.com/es-es/default.aspx
GRACIAS POR SU ATENCIÓN