sábado, 16 de febrero de 2013

Cuáles son los requisitos para publicar una App para SharePoint en la tienda de Office?

La tienda de office para publicar Apps para SharePoint esta en http://office.microsoft.com/en-us/store/apps-for-sharepoint-FX102804987.aspx para más información sobre el tema viste este artículo http://jmhogua.blogspot.com/2013/02/donde-encuentro-la-tienda-de-para.html.

Si deseas publicar una App para SharePoint en la tienda de Office necesitas saber que tu aplicación debe cumplir con algunos requisitos fundamentales; como tener un nombre único, describir tu aplicación, tiene que tener un propósito y utilidad de valor a los clientes potenciales.  Requisitos de calidad como no deben de contener errores, no puede demorar más de 3 segundos sin tener algún tipo de advertencia, no debe de consumir una cantidad de memoria desproporcionada que repercuta adversamente en el rendimiento de un entorno de cliente normal. Requisitos de privacidad como no debe pasar o transmitir datos de los clientes sin avisarlos. Requisitos morales como la aplicación no debe contener contenido para adultos y otros requisitos más.

En resumen con buenas intenciones debes de preocuparte por los de calidad y privacidad que están en la sección 4 y 5 sin revisar las demás que opino son el comportamiento esperado de un ambiente profesional y serio.

Para ver el detalle de estas validaciones que deben de cumplir el App que desarrolles en la siguiente dirección: http://msdn.microsoft.com/library/office/apps/jj220035(v=office.15)

Debes de tomar en cuenta que están cambiaran en el tiempo según Microsoft lo considere y la experiencia que se vaya desarrollando por lo que revísalas periódicamente. 

Para poderlo publicar lo haces a través del Microsoft Seller Dashboard para ello debes de preparar la información de la App; El tipo, título, versión , fecha de liberación, etc.

http://msdn.microsoft.com/es-gt/library/jj552465

Para ir al Microsoft Seller Dashboard puede encontrar el enlace en tu sitio SharePoint Online 

image

Es necesario que te autentiques con Windows Live ID, que si tienes un sitios SharePoint Online debes de tener una cuenta Live ID.

Aquí se solicita la autorización para ser un Seller y si vas a cobrar por la aplicación es necesario llenar la opción TAX PROFILE.

image

El signo más es un botón que permite adicionar la aplicación.

image

Se indica el tipo que en este caso es App for SharePoint , al colocar la palomita en la cajita de selección se acepta los términos y condiciones que mencionamos arriba

image

Luego para continuar presionamos el botón NEXT

image

Ahora  se debe de llenar la información de la aplicación ingresando el título, la versión, la fecha de liberación, la categoría, e logo de la aplicación (este debe de ser 96x96 píxeles y no pesar más de 250 KB)

image

En esta sección se deberá subir el paquete de la app que tiene extensión app y contiene entre otras cosas el archivo appmanifest.xml que es el manifiesto de la app.

Luego si la aplicación requiere credenciales por ejemplo por que esta hospedada por un proveedor diferente de Microsoft deberá indicarlas.  Pero lo más importante es el mensaje que indica que especialistas de pruebas o Testers efectivamente probarán la aplicación para que puede ser publicada y que sin las pruebas no podrá ser publicada la aplicación.

Luego viene la sección de la versión de prueba o Trial, donde debes de indicar la duración y la cantidad de usuarios.

image

Para continuar debe de subirse el log y el paquete App.

image

Bueno en este artículo indicamos donde verificar las validaciones para publicar una App en la App Store de Office y como llenar los requisitos para ser un Seller para publicar una App.  El reto amigo es desarrollar un App y subir a la tienda, lo tomas?

App4Fun!,

 

Juan Manuel Herrera Ocheita

viernes, 15 de febrero de 2013

Dónde encuentro la tienda de "Apps" para SharePoint 2013?

Increíble pero no es fácil encontrarlo y es importante saber donde estas estas aplicaciones que pueden ser las tuyas, y puedes cobrar por ellas o bien utilizar las que son gratuitas.

Para acceder a esta tienda de "Apps" hay tres formas de llegar a ellas; Navegando en el sitio www.office.com, a través del enlace directo http://office.microsoft.com/en-us/store/apps-for-sharepoint-FX102804987.aspx o bien desde Office 365 dentro del sitio de SharePoint.  A continuación veremos la 1era forma y la 3era, ya que la segunda forma se explica por si misma.

Primera forma:

1) ve al sitio de Microsoft Office  http://office.microsoft.com/en-us/ importante que estés en una región que este habilitado para ofrecer las aplicaciones, para este caso escogimos en-us que es el mercado estadounidense

2) Haz clic sobre el enlace STORE

3) Un poco mas abajo haz clic sobre la opción "Apps for Office and SharePoint ...", te aparecerá un menú de enlaces haz clic sobre la opción "Apps for SharePoint"

image

4) Felicitaciones llegaste!

image

5) Si desplazas la barra de desplazamiento de la derecha hacia abajo, iniciaras viendo las aplicaciones

image

En la parte de abajo de la página tienes enlaces por categoría esto puede ayudarte a encontrar la aplicación que estas buscando

image 

Nota: Si utilizas las categorías y deseas regresas a la página principal tendrás que presionar el botón de Back  del Navegador un par de veces, ya que al parecer hay un enlace perdido no funciona la opción All Categories

image

6)  Regresando al listado de Apps disponibles puedes elegir una aplicación por ejemplo Corporate News App haciendo clic sobre ella, te mostrará una página información y el botón de Acción ADD

image

7)  Te mostrará una página de instrucciones para agregar la App a tu SharePoint.

8)Tercera forma:

Ahora veamos la tercera forma desde Office 365 dentro del sitio de SharePoint

En tu sitio de Office 365 por ejemplo el de desarrollador que es gratuito (http://msdn.microsoft.com/es-es/library/office/apps/fp179924.aspx)

https://mvpguatemala.sharepoint.com/_layouts/15/start.aspx#/SitePages/DevHome.aspx

Allí seleccionas la tuerquita de Settings image  y seleccionas la opción agregar una aplicación

image

Haz clic en el menú Izquierdo en la opción "Almacén de SharePoint"

image

Llegaste!, ahora puedes elegir la aplicación filtrándola por gratuita o todas y por categoría (que muestra muchas más pero hay categorías vacías, aunque aquí si funcionan las categorías)

image 

Haz un clic sobre una de ellas por ejemplo Location Mapper, te describen la aplicación y tiene el botón que te llama a la acción "AGREGAR" o "ADD"

image 

En este caso te pide autenticarte de una sola vez, ya que estamos dentro del Portal O365

image

Te pide que confirmes que deseas utilizar la APP, presionando el botón "Continue"

image

La ultima ventana para indicarle que si la adicione a tu portal presionando el botón "Volver al Sitio" para revisar la aplicación que se instalará

image

Bueno...casi, casi. Te pregunta ahora que si tienes confianza e la App y te da oportunidad para leer los términos y condiciones, y privacidad.  Si deseas aceptar luego de leerlos (Yeah sure!), presione el botón "Confiar"

 

image

Listo espere a que se instale, pruebe y revise la funcionalidad de la aplicación en su sitio.

Bueno en este caso revisamos como encontrar la tienda de Apps para SharePoint y como adicionar estas a un sitio O365.

Espero que le motive a descubrir más de este mercado que puede abrirle muchas oportunidades de negocio.

Apps4Fun!,

 

Juan Manuel Herrera Ocheita

martes, 12 de febrero de 2013

Reporte de ventajas e inconvenientes encontrados después de instalado SP3 de SharePoint Server 2007

Aunque estamos próximos al lanzamiento de SharePoint 2013, todavía hay clientes con SharePoint 2007, que necesitan prepararse para la migración a SharePoint 2010 y luego en un futuro próximo a SharePoint 2013, y para esto es necesario que SharePoint Server 2007 tenga instalado por lo menos el SP2,pero como el último fue SP3 y este tiene mejoras en la opción PREUPGRADECHECK para validar lo instalado y por ende lo que debe de prepararse para la migración.  Pero este artículo no es de migración sino de reportarles amigos lectores de las ventajas e inconvenientes luego de instalado el SP3 de WSS 3.0 y de Office Server 2007.

La configuración inicial donde se aplico el SP3 era la siguiente:

Un Servidor con Windows Server 2003 Enterprise, SharePoint Server 2007 Enterprise Edition con SP1 instalado y la versión del idioma en español.

Las Ventajas

Después de instalado cada SP3 y ejecutado exitosamente el Asistente de Productos y Tecnologías SharePoint, se hicieron evidentes las siguientes ventajas:

1) Velocidad del Portal, mejoró notoriamente

2) Los errores en el editor de contenido Web que daban al insertar una nueva imagen y texto y que daba al cerrarlo desaparecieron

3) El Search no se podía detenerse  al pararlo vía línea de comando ya no se podía iniciar de nuevo, este problema se corrigió y se pudo provisionar de nuevo el Search

4) Ya estaba disponible la opción PREUPGRADECHECK del comando stsadm.exe para preparar la migración.

Los inconvenientes

Al parecer el filtro de las audiencias en el Quick Launch NO estaban incluyendo a todos los  usuarios que están definidos en los grupos de SharePoint que se asignaban al filtro de audiencias y por lo tanto no mostraba algunas opciones, a ciertos usuarios, esto después del SP3 funcionó correctamente incluyendo al resto de usuarios, que fue inconveniente para el cliente ya que no desea que los usuarios que si incluyera pudiesen ver las opciones del Quick Launch o menú lateral izquierdo de SharePoint.

Según testimonio de un usuario también habilito el mostrar las páginas y sub-sitios en el Quick Launch opción no deseada para el cliente pero de fácil corrección.

Por lo que podemos concluir que el cambio fue positivo y de mejora para el usuario final del portal, especialmente para los usuarios que suben contenido.

SharePoint4Fun!,

 

Juan Manuel Herrera Ocheita

domingo, 10 de febrero de 2013

Mi primera aplicación auto hospedada en SharePoint 2013

El término auto hospedado o Autohosted es para indicar recursos de Microsoft en la nube que pueden ser Windows Azure, SQL Azure o SharePoint Online que es el caso del ejemplo que vamos a realizar.  

Para crear esta aplicación es necesario Visual Studio 2013 y descargar las herramientas de Aplicaciones para SharePoint.  El ejemplo de esta aplicación esta tomando del ejemplo en el sitio de MSDN en la siguiente dirección: http://msdn.microsoft.com/en-us/library/office/apps/fp142381

Luego de seleccionar nuevo proyecto "App for SharePoint 2013", levanta una ventana de dialogo donde debemos de indicar la dirección el sitio de SharePoint Online (para ello es necesario suscribirse para crear una cuenta gratuita para desarrollador), luego se debe de seleccionar el tipo de hospedaje o "host" de la aplicación para este caso seleccionaremos "Autohosted".

image

Luego aparecerá un mensaje que esta procesando la orden y al finalizar mostrará la pagina Default.aspx.

image

Si revisamos la ventana "Solution Explorer" podremos apreciar la estructura de la solución; De primero un proyecto que se utiliza para crear el paquete de la App y el proyecto de abajo el paquete de solución (WSP) que se instalará en el sitio online de SharePoint. 

image

En el manifiesto (AppManifest.xml) se define el título de la aplicación, el nombre, la versión, el icono de la App (que vienen como predeterminado), la página de inicio y  los parámetros incluidos en la cadena de la URL que este caso es el "Token" para permitir la ejecución de la aplicación en SharePoint Online.

image

Es necesario definir los permisos de la aplicación para ello se selecciona la pestaña "Permissions", el alcance de la aplicación no puede ser otro que "Web" y el permiso que tendrá para este ejemplo "Read"

image 

Luego de seguir las instrucciones que indica el enlace mencionado en la parte de arriba, echémosle un vistazo al código de la página. 

En el Evento Load de la página  encontraremos la creación del Token de la aplicación para que pueda utilizar los recursos de SharePoint Online.

protected void Page_Load(object sender,EventArgs e)
        {


          
TokenHelper.TrustAllCertificates();
          
string contextTokenString =TokenHelper.GetContextTokenFromRequest(Request);

          
if (contextTokenString !=null)
            {
                contextToken =
                  
TokenHelper.ReadAndValidateContextToken(contextTokenString, Request.Url.Authority);

                sharepointUrl =
newUri(Request.QueryString["SPHostUrl"]);
                accessToken =
                  
TokenHelper.GetAccessToken(contextToken, sharepointUrl.Authority).AccessToken;
                CSOM.CommandArgument = accessToken;

            }
          
else if (!IsPostBack)
            {
                Response.Write(
"Could not find a context token.");
              
return;
            }
        }

La página Default.aspx tiene definido un botón para obtener el contenido de SharePoint a través de CSOM.  En la definición del evento del botón se invoca el Método que Obtiene la lista de usuarios y la lista de las listas de SP para luego enlazarlas con el control ListList.

protected void CSOM_Click(object sender, EventArgs e)
{
string commandAccessToken = ((LinkButton)sender).CommandArgument;
RetrieveWithCSOM(commandAccessToken);
WebTitleLabel.Text = siteName;
CurrentUserLabel.Text = currentUser;
UserList.DataSource = listOfUsers;
UserList.DataBind();
ListList.DataSource = listOfLists;
ListList.DataBind();

}

Se obtiene de la caadena que viene de la URL el parámetro SPHostURL, luego el contexto de SharePoint se obtiene invocando la clase TokenHelper, pasando la URL como parámetro y el token de acceso.  Luego la invocación del CSOM para obtener el título del sitio, listado de usuarios, y el titulo de las listas existentes de SharePoint.

private void RetrieveWithCSOM(string accessToken)
{

if (IsPostBack)
{
sharepointUrl =
new Uri(Request.QueryString["SPHostUrl"]);
}


ClientContext clientContext =
TokenHelper.GetClientContextWithAccessToken(
sharepointUrl.ToString(), accessToken);


//Load the properties for the web object.
Web web = clientContext.Web;
clientContext.Load(web);
clientContext.ExecuteQuery();

//Get the site name.
siteName = web.Title;

//Get the current user.
clientContext.Load(web.CurrentUser);
clientContext.ExecuteQuery();
currentUser = clientContext.Web.CurrentUser.LoginName;

//Load the lists from the Web object.
ListCollection lists = web.Lists;
clientContext.Load<
ListCollection>(lists);
clientContext.ExecuteQuery();

//Load the current users from the Web object.
UserCollection users = web.SiteUsers;
clientContext.Load<
UserCollection>(users);
clientContext.ExecuteQuery();

foreach (User siteUser in users)
{
listOfUsers.Add(siteUser.LoginName);
}


foreach (List list in lists)
{
listOfLists.Add(list.Title);
}
}

Ahora veamos que hace.  Presionamos F5 y con ello basta para crear los paquetes (solución y App), los instale y nos de la página de inicio.


La primera vez no indicará que es necesario instalar un certificado.


image


Indiquémosle que si estamos de acuerdo.


image


Luego que si tenemos confianza de la aplicación.  Presionamos el botón Confiar.


image


Luego nos muestra la aplicación, que tiene un enlace "Populate Data" presionamos el enlace.


image


Luego nos despliega la información que se obtuvo del contenido del sitio, como se muestra en la imagen de abajo.


image


En resumen vimos como definir una aplicación auto-hospedada y que permisos requería la aplicación (lectura ya que la aplicación solo leía el contenido) que desde VS 2012 podemos desarrollar y probar a través de la tecla F5 o Debug.  Se utilizó unas nuevas clases para crear el token de Autorización para la aplicación y se utilizó CSOM la versión C# para obtener el contenido del sitio Online de SharePoint.  Si lo pensamos fue muy sencillo para lo que se requiere cuando estamos interconectando recursos en la nube, por lo que esto hace que la implementación de una solución sea ágil y no complicada, enfocándonos en las funcionalidades de la solución mas que en la infraestructura requerida.


Online4Fun,


 


Juan Manuel Herrera Ocheita

sábado, 9 de febrero de 2013

Mi primera "App" para SharePoint 2013 con Napa Web Tool

La experiencia fue sorpresivamente agradable, fácil e intuitiva.  Microsoft ha hecho un gran trabajo para entregar al desarrollador una herramienta ágil, gratuita y efectiva.

Con la entrega de esta herramienta me hace sentido el anuncio de Microsoft de haber convertido el lenguaje JScript en uno de primera clase, definitivamente esto se hace evidente a través del uso de Napa para desarrollar aplicaciones manejando contenido de SharePoint.

Para crear mi primera aplicación solo tuve que suscribirme en O365 para desarrolladores, instalar el Napa Web Tool y seguir el siguiente enlace: http://msdn.microsoft.com/es-ES/library/office/apps/jj220041

Luego de seguir las primeras instrucción y presionar la imagen de Play >.  La herramienta empaco, instaló y ejecutó la aplicación en una nueva página. Nice ha!

image

La primera parte de la aplicación es muy sencilla: Devuelve la cantidad de listas en el sitio, permite crear una lista, las despliega en un combo y  luego las permite eliminar.

image 

El código para realizar esto es SharePoint es a través de CSOM de sus siglas Client SharePoint Object Model para la versión jscript.  Un ejemplo de la sintaxis de este código es el siguiente:

   this.web = context.get_web();
    this.user = web.get_currentUser();
    this.context.load(user);
    this.context.executeQueryAsync(onUserReqSuccess, onUserReqFail);
 
En este ejemplo se obtiene el contexto actual sin necesidad de escribir una url, se instancia el objeto Web o SPWeb y de este se obtiene el usuario que esta contacto, se carga en memoria el objeto SPUser de forma asíncrona, para luego desplegar el correo del usuario a través de la siguiente línea de código:
function onGetUserNameSuccess() {
    $('#message').text('Bienvenido ' + user.get_title());
}
Adentrándonos en el editor Web tenemos las siguientes opciones: 

Ctrl+F para buscar dentro de la pagina una agradable casilla de texto para escribir lo que se desea buscar.


image


Como era de esperarse no hay botón de Guardar, que esto me parece fabuloso al estilo de One Note y Offfice Web Apps.


Wooohoooo!, se cuenta con "intellisense"


image


Bueno después de hacer algunos arreglos en la distribución de los controles la aplicación me quedo así:


image






No te olvides de utilizar el Developer Tool del Navegador IExplorer (F12 para desplegarlo te puede servir para probar los estilos aplicados a la página que estas visualizando.


Algo de estilos le aplicamos a la App para SharePoint


#left-side {position:relative;float:left;width:49% }
#right-side {position:relative; float:right;width:50%;border-left:gray solid 1px;padding-left: 10px}


Lo último que deseo agregar y llamar su atención amigo lector es la nueva clase ClientWebPart.aspx que es un envoltorio utilizado para incorporar un IFrame "Administrado" dentro de SharePoint para que la página se muestro dentro del la estructura del diseño visual de SharePoint además de ello se incluye las referencias a la hoja de es.tilos predeterminada App.CSS y las referencias a las bibliotecas JS para ajax y CSOM para Jscript y así se pueda invocar el contenido de SharePoint desde el archivo APP.js que tiene el código JScript.


image


Bueno amigo, esto fue un vistazo rápido de lo que se puede hacer en el nuevo paradigma de desarrollo para SharePoint 2013.  Lo invitó a que lo pruebe y experimente lo ágil que puede convertirse el desarrollar una "App" para SharePoint 2013.


Hasta la próxima!,


 


Juan Manuel Herrera Ocheita

jueves, 7 de febrero de 2013

SharePoint Foundation 2010 y Reporting Services un matrimonio a todo dar

Reporting Services es una excelente herramienta de "reportería" (termino que no existen en el Diccionario RAE, pero que la mayoría entiende) esta puede ser integrada debidamente con SharePoint Foundation 2010 y con las demás ediciones de SharePoint en sus versiones de Servidor, y se manipulan los reportes como que si fuesen documentos dentro de bibliotecas y carpetas para su agrupación o bien información asociada a cada reporte que permita agruparla.

image

Otra de las ventajas de esta relación "SharePoint-SSRS" es que viene incluido con Report Builder 3.0 por lo que los usuarios desde el portal pueden crear estos reportes.  Y una de las ventajas obvias de la integración es que no solicitará nuevamente las credenciales una vez el usuario se autenticó en el portal.

image

Con un costo modesto de licenciamiento de 2 licencias de Windows Server 2008 r2 o superior, una de SQL server 2008 r2 o superior, que suman aproximadamente 1,000 USD, tendremos la posibilidad de crear un ambiente de colaboración y la posibilidad de conectarnos a nuestro sistema de aplicaciones ya sea directamente por SQL Server o bien a través de SQL Server Integration Services para extraer la información y presentarlo en un ambiente colaborativo SharePoint Foundation 2010 que viene incluido en la caja de Windows Server 2008 R2.

En ocasiones no es necesario gastar tanto para aprovechar la tecnología que tenemos disponible alrededor nuestro, solo es necesario echar un vistazo alrededor nuestro.  Si necesita consumir información que esta en otros servidores pero que son plataforma Windows, lo que le puede convenir es implementar Kerberos para suplantar la identidad, que esto no tiene sino el costo de pagar un consultor o averiguarlo por si mismo e intentar configurarlo si se siente arrecho para desarrollar esta tarea.

Nuevas noticias es que con SQL Server 2012 no solo tenemos la integración con Reporting Services sino ahora un nuevo producto Power View que nos permitirá presentar la información que generemos a partir de la creación de cubos multidimensionales a través de SQL Server Analisys Services. (La única noticia no tan positiva que este producto requiere la versión SharePoint Enterprise debido a que las funcionalidades de inteligencia de negocios de SharePoint están en esta edición, más información en: http://technet.microsoft.com/en-us/library/hh560549.aspx)

0361_rs_CresAllUp_jpg-550x0

Ahora todas estas herramientas tecnológicas por si solas no producen nada, es necesario de una mano con experiencia para poder aprovecharla, así que busque en casa primero si es posible y sino contrate empresas que estén certificadas en la tecnología que desea aprovechar para que le ayude agregar valor a su organización a través de las tecnologías que están disponibles y son accesibles económicamente hablando hoy en día.

 

Reporting4Fun!,

 

 

Juan Manuel Herrera Ocheita

miércoles, 6 de febrero de 2013

Un segmento de código en SharePoint 2010 que actualiza información en Project Server 2010

Es posible actualizar la información de Project Server desde una solución en SharePoint 2010 a través de la interfaz de Project PSI, esta puede ser a través de los servicios de WCF o ASMX sobre SOAP/HTTP.  Sinceramente creí que en WCF iba a ser más sencillo y que equivocado estaba, por lo que decidí irme por la conocida interfaz Servicios Web por ASMX.

image

Para empezar vamos a crear una solución vacía de un proyecto de SharePoint 2010 desde Visual Studio 2010/2012.

image

Ahora vamos agregar las referencias la librería de PSI Microsoft.Office.Project.Server.Library

Luego vamos agregar las referencias Web:

http://servername/pwa/_vti_bin/psi/project.asmx?wsdl

http://servername/pwa/_vti_bin/psi/LoginWindows.asmx?wsdl

Ahora vamos a crear una intefase para abstraer el servicio:

using System;
using System.Collections.Generic;
namespace MiCodigo.Dominio.Interfases
{
public interface IProyectoTareaServicio
{
void ConsumirServicio(Guid projectID, Guid taskId, DateTime fechaInicio, DateTime fechaFin);

void ActualizarAvance(Guid projectID, Guid taskId, int porcentajeAvance);

}
}

Luego vamos a crear una clase ProyectoTareaServicio y vamos a agregar los siguientes espacios de nombre de los ensamblados:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Net;
using System.Security.Principal; // Required for the TokenImpersonation Level enumeration.
using System.ServiceModel.Web;
using System.Web;
using System.ServiceModel;

using PSLib = Microsoft.Office.Project.Server.Library;

Luego declaramos la clase con el constructor y los dos métodos de la interfase.

    public class ProyectoTareaServicio:IProyectoTareaServicio
{

private static string _pwaUrl;

public ProyectoTareaServicio(string pwaURL)
{
_pwaUrl = pwaURL;
}

public void ConsumirServicio(Guid projectID, Guid taskId, DateTime fechaInicio, DateTime fechaFin)
{

string projectServerURL = _pwaUrl;

//Accediendo el servicio web Project

ProjectService.Project project = new ProjectService.Project();

project.Url = projectServerURL +
"/_vti_bin/psi/Project.asmx";

project.Credentials =
CredentialCache.DefaultCredentials;

//Accediendo el servicio Web LoginWindows

LoginWindowsService.LoginWindows loginWindows = new LoginWindowsService.LoginWindows();

loginWindows.Url = projectServerURL +
"/_vti_bin/psi/LoginWindows.asmx";

loginWindows.Credentials =
CredentialCache.DefaultCredentials;

//Poblando el CookieContainer del servicio Web Project

loginWindows.CookieContainer = new CookieContainer();

project.CookieContainer = loginWindows.CookieContainer;

//Obteniendo la información del proyecto de la base de datos de publicación
ProjectService.ProjectDataSet publishedProjectDataSet = project.ReadProject(projectID, ProjectService.DataStoreEnum.PublishedStore);

// Obteniendo la tarea por medio del ID de la tarea y el proyecto
var miFila = publishedProjectDataSet.Task.FindByTASK_UIDPROJ_UID(taskId, projectID);
// actualizando las columnas de la tarea que se desean modificar
miFila.TASK_START_DATE = fechaInicio;
miFila.TASK_FINISH_DATE = fechaFin;
miFila.TASK_DUR_FMT =
Convert.ToInt32(PSLib.Task.DurationFormat.Day);
// Se crea el trabajo y la sesión que actualizará el cambio
var miJob = Guid.NewGuid();
var miSession = Guid.NewGuid();
string descripcionSesion = "Actualizacion duracion de tarea de proceso de adquisición";

//Se retira el proyecto para modificarlo
project.CheckOutProject(projectID, miSession, descripcionSesion);
//Se actualiza el proyecto enviando el DataSet del Proyecto modificado
project.QueueUpdateProject(miJob, miSession, publishedProjectDataSet, false);
//Se Publica el proyecto
project.QueuePublish(miJob, projectID, true, null);
//Se ingresa el proyecto al servidor nuevamente
project.QueueCheckInProject(miJob, projectID, true, miSession, descripcionSesion);
}

public void ActualizarAvance(Guid projectID, Guid taskId, int porcentajeAvance)
{
string projectServerURL = _pwaUrl;

//Accediendo el servicio web Project

ProjectService.Project project = new ProjectService.Project();

project.Url = projectServerURL +
"/_vti_bin/psi/Project.asmx";

project.Credentials =
CredentialCache.DefaultCredentials;

//Access the out of box LoginWindows web servcie

LoginWindowsService.LoginWindows loginWindows = new LoginWindowsService.LoginWindows();

loginWindows.Url = projectServerURL +
"/_vti_bin/psi/LoginWindows.asmx";

loginWindows.Credentials =
CredentialCache.DefaultCredentials;

//Accediendo el servicio Web LoginWindows

loginWindows.CookieContainer = new CookieContainer();

project.CookieContainer = loginWindows.CookieContainer;

//Obteniendo el proyecto de la base de datos de publicación

ProjectService.ProjectDataSet publishedProjectDataSet = project.ReadProject(projectID, ProjectService.DataStoreEnum.PublishedStore);
if (publishedProjectDataSet != null)
{
var miFila = publishedProjectDataSet.Task.FindByTASK_UIDPROJ_UID(taskId, projectID);
miFila.TASK_PCT_COMP = porcentajeAvance;

var miJob = Guid.NewGuid();
var miSession = Guid.NewGuid();
string descripcionSesion = "Actualizacion duracion de tarea de proceso de adquisición";

project.QueueCheckInProject(miJob, projectID,
true, miSession, descripcionSesion);
project.CheckOutProject(projectID, miSession, descripcionSesion);
project.QueueUpdateProject(miJob, miSession, publishedProjectDataSet,
false);
project.QueuePublish(miJob, projectID,
true, null);
project.QueueCheckInProject(miJob, projectID,
true, miSession, descripcionSesion);
}
}

}
Luego desde un elemento Web se instancia la servicio que se definió arriba y luego se consume
Instancia del cervicio
            string urlPWA = UtilidadWeb.ServerHostName() + "/PWA";
IProyectoTareaServicio _proyectoTareaServicio = new ProyectoTareaServicio(urlPWA);
Consumiendo el servicio 
                    _proyectoTareaServicio.ActualizarAvance(
miProceso.ProyectoAsignado.ID
, miProceso.TareaAsignada.ID
, avance);
Ejemplo de la interfaz gráfica que actualiza esta información desde SharePoint.

image


y eso es todo.


ShareProject4Fun!,


Juan Manuel Herrera Ocheita

domingo, 3 de febrero de 2013

La revolución tecnológica ha empezado y SharePoint 2013 es el epicentro

La nube promete reducción de costos operativos y cambio de paradigma de los costos de propiedad tecnológicos. Microsoft ha realizado una fuerte inversión que ya lleva una década o tal ves más en infraestructura de centros de datos para hacerle frente a la próxima ola de cambios tecnológicos que revolucionaran el mundo de los negocios como lo hizo la revolución industrial en el siglo XVIII.

Hoy en día en todo el mundo las empresas han comprendido la importancia de la tecnológica como una ventaja competitiva, pero esto a llevado una carga financiera que se ha incrementando a lo largo de las décadas, aunque habido especulación y momentos difíciles en el mundo de los negocios, no tarda en incrementarse este tema de mejorar la tecnología para obtener esta ventaja, y se siguen manteniendo costos altos en consumos energéticos, profesionales especializados, y nueva tecnología que ofrece mayores alcances que los anteriores.  Las empresas estas hambrientas de información y que estén disponibles al alcance el dispositivo móvil que hoy tenemos desde un teléfono inteligente, una tarjeta o tabla electrónica hasta un computadora portátil de dimensiones ultra delgadas.

La nube promete una infraestructura lista para utilizarse, reduciendo los costos de implementación, y mantenimiento.  Esto se traduce en menor personal para mantener la infraestructura, no así para el desarrollo de soluciones que aprovechen esta infraestructura de la nube.  Microsoft la a denominado Azure en su versión Windows Azure y SQL Azure para referirse al sistema operativo de la nube y al sistema de base de datos de la nube, donde ya no se adquiere el software sino se arrenda dicha infraestructura como servicios, "Software as a Service".

Después de Xbox kinect el producto más vendido de Microsoft es la plataforma de colaboración preferida por las empresas SharePoint, y es esta plataforma que ha dado a las empresas agilidad para el cambio y rápida adaptación ante las necesidades crecientes de la empresa, ya que es una plataforma multipropósito que permite mesclar la información de las aplicaciones de negocios con la colaboración, redes sociales y que esta disponible tanto dentro como fuera de la organización  a través de su interfaz Web, por lo que no extraña que Microsoft tome como una estrategia de comercialización que Azure se adopte a través de SharePoint, y por ello el nuevo paradigma de programación que se adiciona en SharePoint 2013 llamado APPS.

La idea general de APPS es utilizar Azure para desarrollar funcionalidades de negocio que se hospeden o bien se ejecuten desde SharePoint local (On promises) o en al nube (On line) para aprovechar los beneficios que promueve esta revolución, reducción de costos, conectividad, agilidad y adaptabilidad a la velocidad de los bits que viajan en la supercarretera de la información que deja de llamarse Internet y pasa a denominarse de forma más abstracta la nube por la diversidad de dispositivos, conectividad, y servicios que se ejecutan.

Esta adopción que ha planificado de forma audaz y se ha provisto por un "Marketplace" donde ofrecer y comprar aplicaciones se realiza en línea y de manera muy sencilla, esto ofrece velocidad, reducción de costos, ganancias para los desarrolladores y Microsoft un gran ganador que siguen demostrando visión en el mundo de los negocios a través del uso de su tecnología.

Las Apps en SharePoint 2013 vienen en 3 sabores:

image

Apps hospedadas en SharePoint

Apps auto hospedadas en Azure

Apps hospedadas por terceros

o bien la mezcla de todas ellas.

Una App la hospedamos en SharePoint cuando necesitamos utilizar la infraestructura de SharePoint, bibliotecas, listas, perfiles de usuario, BCS, etc.

Una App que se accede desde SharePoint pero que se ejecuta remotamente con recursos de Windows Azure donde se ejecuta una aplicación ASP.Net MVC que almacena la información en SQL Azure, pero lo brutal (o sea lo bueno) de esto es que fue provisionada desde una App de SharePoint que se instala y toma los recursos de Azure al momento de instalarse.

image

 

Y la tercera opción es utilizar recursos en la nube de terceros o propios que serán menos adaptables y emocionantes que validos para aquellos que quieren utilizar lo existente y no desarrollar sobre Azure, que siempre existe esta posibilidad.

Apps no debe de confundirse con la sustitución de los otros paradigmas de desarrollo existentes en SharePoint y la solución para todo, pero de cierto revolucionará el mercado tecnológico y traerá nuevos retos, y mayores posibilidades en el ámbito de los negocios, por lo que es menester de las empresas y particulares con visión meterse en la ola antes de la reventazón y pueda aprovecharse este momentum que estamos a punto de experimentar.

Así que larga vida a SharePoint y a la nube!.

Juan Manuel Herrera Ocheita