La Electricidad Y La Electrónica Trabajo Tecnología.pdf
Novedades en BCS en SharePoint 2013
1. ¡Integración de datos de
negocio con BCS!
Juan Carlos González (@jcgm1978)
MVP SharePoint Server
http://geeks.ms/blogs/ciin
jgonzalez@gruposodercan.es
2. Agenda
Repaso a BCS
Fuentes OData
ECTs a nivel de Aplicación
Interfaces REST y CSOM
Notificaciones, Alertas y Manejadores de Eventos
3. 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
4. BCS: Arquitectura
Office Client SharePoint Foundation / Server
External Business Parts Sitio / App SharePoint
Código Personalizado Paquete Listas Archivos
VSTO Externas BDCM
Integración con Office
Búsquedas, Columnas
Externas, WebParts, CSOM, Pérfiles, Ap
ps
BCS Servicio de Almacenamiento Seguro
Runtime de Aplicación de Servicio de BCS
Caché de Runtime de
BDC en Almacén de
Cliente BDC en
Cliente Metadatos
Servidor
SQL WCF / OData Personalizado Conector .NET
Datos Externos
5. 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
6. 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
8. 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
9. 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
10. 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
11. ECTs a nivel de aplicación
Arquitectura:
BusinessDataMetadataCatalog FileBackedMetadataCatalog
Runtime del BDC Sistema
Archivos BDCM
Externo
Lista Externa
MetadataCatalogFileName
= MyModel.BDCM
13. 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);
14. 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();
15. 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
});
}
16. 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
17. 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”
18. 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>
19. 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
20. 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);
}
}
21. 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
22. 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);
}
23. Notificaciones y
Manejadores de Eventos
Arquitectura:
Endpoint REST
Receptor de eventos CSOM
Manejadores de Eventos
BDC Conectores Operaciones Sistema Externo
Manejador de Eventos
Personalizado
24. 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
25. 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
27. Aprende de los expertos
Descárgate CompartiMOSS:
http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
28. Descuentos Campus MVP
10% de descuento
en todos nuestros cursos y libros hasta el 31 de
diciembre
Introduce el cupón PECIIN12SN al realizar tu
compra
en nuestra tienda online.
29. Prueba SharePoint a tope
CloudShare:
http://www.cloudshare.com/
Disponen de varias plantillas de SharePoint 2013 listas para probar
30. 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