Después de un tiempo desarrollando, la primer pregunta sigue siendo la misma: ¿cómo almacenaremos los datos? y, ya pensando un poco a futuro y, sobre todo en colocar la solución en un ambiente de pruebas y el productivo; uno busca la forma de ahorrarse el tiempo que pasaría en el navegador definiendo las listas o resolviendo problemas de compatibilidad con plantillas, entre otras curiosidades que se pueden encontrar al migrar la solución de una granja a otra o bien, entre versiones de las granjas.
La solución es sencilla (requiere su esfuerzo pero es sencilla jeje). Define tu modelo de datos en el proyecto de Visual Studio, empaquétalo y cuando lo implementes en otras granjas éste se creará completo ahorrándote todo el tiempo que se invierte en pulir esos detalles del pase a producción.
Pongamos un ejemplo.
Ejemplo de modelo Entidad Relación del escenario propuesto |
Al leer el ejemplo y pensar en un modelo de base de datos tradicional, uno vislumbraría una tabla en la que se almacene el catálogo de "Categorías de licencia" y una tabla en la que se almacenan las solicitudes.
Ejemplo simplificado en SharePoint |
En cambio, si ocupamos las opciones que nos provee SharePoint al momento de diseñar las listas, podríamos ahorrarnos una de las tablas si en lugar de usar una lista adicional ocupamos un campo de tipo Elección. Claro está que la elección de la solución depende del requerimiento sin embargo, no nos compliquemos la vida y pensemos en que el campo de tipo Elección es adecuado al requerimiento.
Esto nos indica que tendremos dos campos de tipo Fecha, un campo de tipo persona y un campo de tipo elección.
Podemos dispensar del campo ID y Solicitante ya que SharePoint nos provee con estos de forma automática.
El proyecto de Visual Studio
Una vez identificada nuestra estructura de datos abramos Visual Studio y creamos un proyecto de SharePoint. Las siguientes opciones funcionan tanto para Soluciones On Premise como On Line por lo que siéntete con la seguridad de que funcionará (por favor revisa la sección probando jejeje). En este caso estamos usando Visual Studio Community 2015. En la siguiente liga coloco un post de cómo configurar Visual Studio para poder usar las plantillas de proyectos de Office/SharePoint. Nosotros usaremos la opción de App's para SharePoint Online.
En Visual Studio selecciona la opción File > New Project y selecciona Templates > Visual C# > Office/SharePoint y selecciona SharePoint Add-in.
Al presionar el botón OK, Visual Studio solicitará la URL de tu sitio de desarrollo, en mi caso, coloco la URL de mi sitio en Office 365 con la opción SharePoint-hosted y proveo mis credenciales de acceso.
También solicitará la versión del sitio de SharePoint, en mi caso selecciono SharePoint Online.
Al presionar el botón Finish, Visual Studio creará un proyecto con la plantilla adecuada. Para dar un poco de orden a los siguientes puntos, coloqué algunas carpetas anidadas en las que definiré las columnas de sitio y la lista.Creando un proyecto para SharePoint Online |
También solicitará la versión del sitio de SharePoint, en mi caso selecciono SharePoint Online.
Las columnas de sitio
Una columna de sitio es la definición de un tipo de dato que puede ser usado varias veces en un sitio de SharePoint y ahí es donde radica su utilidad. Por otro lado, tienes un control mucho mayor que apreciarás en su momento como, la posibilidad de ocupar una clave como título y otra para descripción y, de esta forma, controlar el idioma del nombre y descripción de la columna que se muestra al usuario. En otro momento hablaremos de este tema.
Lo primero que se necesita para agregar una columna de sitio es, presionar con el botón derecho sobre el folder Columnas y seleccionar las opciones Add > Add New Item. Esto abrirá un cuadro de diálogo en el que la opción Site Column estará disponible, selecciónala y dale un nombre a la columna. Te recomiendo que al definir nombres internos o de referencia nunca ocupes espacios o caracteres especiales ya que estos valores se codifican de otra forma y te harán un poco difícil el desarrollo.
Al realizar este procedimiento se generará un archivo xml en el que podrás definir el resto de las propiedades de las columnas por ejemplo, en la siguiente ilustración coloco la definición de la columna TipoLicencia que es de tipo Choice y Requerida. Para que puedas construir el resto de las columnas (de tipo fecha y persona) te recomiendo la definición de Microsoft que contiene un par de ejemplos adicionales.
La lista
Una vez creadas las columnas, es necesario crear la plantilla de la lista en la que se hará referencia a las columnas recientemente creadas. Para ello de click derecho a la carpeta Listas y seleccione las opciones Add > Add New Item.
En el cuadro de diálogo que aparece, seleccione la opción List y dele un nombre a la lista.
Visual Studio le presentará un Wizard con el que podrá elegir la plantilla de la lista, revise las opciones para que se dé una idea de las posibilidades para futuros proyectos. En nuestro caso dejamos la selección original y presionamos el botón OK.
Al presionar Finish el Wizard creará varios archivos xml con los que podremos definir varias opciones de la lista incluso, los formularios para visualizar, dar de alta y actualizar la información de ítem.
El archivo que contiene el grueso de la información es el llamado Schema.xml. Éste archivo está compuesto de cuatro secciones principales:
Archivos XML de configuración de la lista |
- Content Types
- Fields
- Views
- Forms
Los Content Types son plantillas de información bastante útiles y que veremos en otro post debido a su extensión. Por el momento basta con decir que en dicha sección se colocarán referencias a las columnas que creaste en la sección Las columnas de sitio, y que agregas en el editor que aparece justo después de haber finalizado el Wizard de la creación de la lista (La imagen de abajo muestra el editor y las columnas que hemos agregado, dichas columnas son las que creamos en la sección anterior).
En la sección Fields se encuentra toda la definición de las columnas que creamos anteriormente. Esta redundancia se debe a motivos de seguridad y es que, ¿qué ocurriría si su proyecto llegara a productivo y por algún error, un administrador borrara la definición de una columna de sitio que sea ocupada por la lista?, por ejemplo Suplente. Para evitar que se genere un error, la lista tiene su propia definición de la columna de sitio.
Estructura del archivo Schema.xml |
Tanto la sección Views como Forms merecen cada uno su propio post debido a que cada uno tiene configuraciones especiales. En el caso de Views, ésta sección del XML administra la estructura de la vista; desde su nombre, el número de elementos a mostrar, el orden de las columnas, los datos a mostrar, los criterios de filtrado y los archivos con los que se manejará la apariencia de la lista. Para la sección de Forms está destinado el archivo que manejará el formulario para Edición, Inserción y Visualización de datos. En éstos archivos podrás agregar referencias a elementos JavaScript y CSS, lo que te dará un mejor manejo y presentación del formulario.
Finalmente agregaremos un vínculo a la lista para que puedas probar su funcionamiento. Para ello, abre el archivo Default.aspx que está dentro de la carpeta Pages. Dentro coloca el código HTML para dirigirte a la lista, por ejemplo yo ocupé el siguiente fragmento de código:
Agregando vínculos a nuestra lista |
Probando
Es el momento de probar todo el trabajo, para ello ejecuta el depurador con la tecla F5.
Una vez que termine de implementar la solución verás una página similar a la que se muestra en el lado izquierdo, en ella verás el vínculo que colocamos; al seguir el vínculo te mostrará la lista que definimos con todos los XML.
Te recomiendo que hagas avances pequeños cuando definas tu estructura de datos y los pruebes; es decir, crea las columnas que necesites para tu primer lista y también crea dicha lista, posterior a eso prueba que funcione correctamente. Si todo sale bien, crea las siguientes columnas que necesites, su lista y vuelve a probar.
¿A qué se debe mi sugerencia?
Lamentablemente existen algunos problemas al momento de implementar las soluciones durante el desarrollo, relacionados con SharePoint. Entre los problemas más comunes están, que no puedas ocupar la lista debido a que una de las columnas no fue creada de forma correcta (ocurre seguido con las columnas de tipo Choice y Lookup). La solución a este problema es eliminar la columna problema y volverla a crear (esto a nivel del Visual Studio), lo cual es un problema si tienes poco tiempo para realizar el desarrollo. En ambientes productivos no he tenido dicho problema pero, si a alguno de ustedes le ha ocurrido, ojalá puedan compartir su experiencia.
Una vez que termine de implementar la solución verás una página similar a la que se muestra en el lado izquierdo, en ella verás el vínculo que colocamos; al seguir el vínculo te mostrará la lista que definimos con todos los XML.
Te recomiendo que hagas avances pequeños cuando definas tu estructura de datos y los pruebes; es decir, crea las columnas que necesites para tu primer lista y también crea dicha lista, posterior a eso prueba que funcione correctamente. Si todo sale bien, crea las siguientes columnas que necesites, su lista y vuelve a probar.
¿A qué se debe mi sugerencia?
Lamentablemente existen algunos problemas al momento de implementar las soluciones durante el desarrollo, relacionados con SharePoint. Entre los problemas más comunes están, que no puedas ocupar la lista debido a que una de las columnas no fue creada de forma correcta (ocurre seguido con las columnas de tipo Choice y Lookup). La solución a este problema es eliminar la columna problema y volverla a crear (esto a nivel del Visual Studio), lo cual es un problema si tienes poco tiempo para realizar el desarrollo. En ambientes productivos no he tenido dicho problema pero, si a alguno de ustedes le ha ocurrido, ojalá puedan compartir su experiencia.
Los siguientes pasos
Con esto concluimos nuestro primer post, esperamos que les sea de utilidad en sus proyectos y siéntanse libres de expresar todos sus comentarios. En nuestros siguientes artículos le daremos un poco más de funcionalidad a nuestra lista con:
- Formularios de listas personalizados
- Usando JSOM
No hay comentarios:
Publicar un comentario