miércoles, 22 de diciembre de 2010

Conector Social de Outlook se conecta a red Social Empresarial en SharePoint y otras redes sociales conocidas

Ahora puedes tener desde el Outlook 2010 un conector social que permitirá desde mas cerca monitorear las actividades de tus socios, amigos y conocidos gracias a este conector de Redes sociales.

Además puedes desarrollar proveedores para otras redes sociales a través del Kit de Desarrollo o SDK.

Las proveedores existes a este momento son:

LinkedIn

 

myspace

Facebook

 

Windows Live

 

 

 

Además del predeterminado para la red Social de la Empresa:

Para Linkedin solo esta disponible la versión de 32 bits a este fecha y si tienes Office 64 no vas a poder utilizarlo.  Pero pienso muy pronto estará disponible.

En Outlook luce así:

image

Para configurar la conexión a una red social solo debes dentro del panel de Personas: Selecciona View, People Pane , Account Settings

image

Luego seleccionas el proveedor que para mi Outlook tengo SharePoint y Facebook

 image

Ingresas el url, para el caso de SharePoint, el usuario y la clave.

image

En ambos casos asociara tu cuenta de Outlook con la cuenta de tu red social la de amigos en caso de Facebook, la de la Empresa en caso de SharePoint.

BeConected4Fun!,

Manolo Herrera

martes, 21 de diciembre de 2010

Cómo hacer para que se actualice el suministro de noticias en mi perfil en SharePoint 2010

Esto en inglés es mucho mas fácil de ubicar y se describe como:

image

Pero en español es un poco confuso encuentro con el nombre:

image

Y dependiendo de este trabajo con que frecuencia se ejecuta así veremos las actividades en nuestro perfil en la sección de Suministro de noticias o  My news feeds.

Para configurar la periodicidad de la ejecución del trabajo mencionado hacemos clic sobre el y nos mostrará las siguientes opciones:

image

Cámbiela según su configuración y necesidad y presione el botón Aceptar.

Para configurar que tipo de noticias deseamos seguir dentro de Suministro de noticias en nuestro perfil hacemos clic sobre Configuración de suministro de noticias o Feed Settings.

Alli seleccionamos el tipo de contenido que deseamos ver en nuestro suministro de noticias.

image

El resultado si tiene noticias es el siguiente:

image

SocialComputing4Fun!,

Manolo Herrera

Cómo corregir el error MOSS MA not found al intentar crear la conexión del Directorio Activo en Perfil de Usuarios en SharePoint 2010

Confirmado por muchas publicaciones y por mi persona, al enfrentarme también a este suceso.  El error se debe primordialmente a que alguno de los servicios de ForeFront no esta iniciado o necesita que se reinicie nuevamente.

Los servicios son:

Forefront Identity Manager Service
ForeFront Identity Manager Synchronization Service

Lo que debe de hacer es reiniciarlos cada uno de ellos y el problema desaparece.

Referencia de la solución encontrada:

http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/CF35F233-C6A9-440A-AA61-8BE190782FCC

ForeFront4Fun!,

Manolo Herrera

Error de importación de Perfiles de Usuario en SharePoint 2010

Muy probablemente sea un error de permisos.  Y lo curioso es que en la misma cuenta utilizada para SharePoint 2007 que si sincroniza con el AD, no funciona con SharePoint 2010.   Al parecer requiere de un permiso especial en SP 2010 y es Replicating Directory Changes.  Pero antes de que lleguemos a la solución del problema veamos los síntomas y errores.

 

Síntomas:

En el visor de eventos le muestra el evento número 6050

Log Name:      Application
Source:        FIMSynchronizationService
Date:          21/10/2010 10:15:01 a.m.
Event ID:      6050
Task Category: Management Agent Run Profile
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      full server-name


o en los SharePoint Logs muestra el siguiente mensaje:

Usage Logging Importer: Exception occured while retrieving profiling information for the user=[username]: Microsoft.Office.Server.UserProfiles.UserNotFoundException: Error al recuperar el perfil de usuario.     at Microsoft.Office.Server.UserProfiles.UserProfileCache.GetUserData(UserProfileManager objManager, Nullable`1 recordId, Guid gAcct, String strAcct, Byte[] bSid, String strEmail, Boolean doNotResolveToMasterAccount)     at Microsoft.Office.Server.UserProfiles.UserProfile.RetrieveUser(String strAcct, Guid gAcct, Byte[] bSid, Nullable`1 recordId, Boolean doNotResolveToMasterAccount, Boolean loadFullProfile)     at Microsoft.Office.Server.UserProfiles.UserProfile..ctor(UserProfileManager objManager, String strAcct, Boolean doNotResolveToMasterAccount, Boolean forceU...    f9f0282c-2eb2-4f50-b258-ee6767c3762b

Para confirmar si es un problema de permisos revise los logs de sincronización para ello vaya a:

C:\Program Files\Microsoft Office Servers\14.0\Synchronization Service\UIShell

Y ejecute la siguiente herramienta:

miisclient.exe

Haga clic sobre el error como se muestra en la imagen de abajo:

image

Si el error es el 8453 es seguro que es por permisos.

image

Para ello necesita que la cuenta que utiliza para sincronizar el AD con los perfiles de usuario de SharePoint tengan el permiso de replicar los cambios en el AD.  Para ello siga las siguientes instrucciones:

1.Open the Active Directory Users and Computers snap-in
2.On the View menu, click Advanced Features.
3.Right-click the domain object, such as “company.com”, and then click Properties.
4.On the Security tab, if the desired user account is not listed, click Add; if the desired user account is listed, proceed to step 7.
5.In the Select Users, Computers, or Groups dialog box, select the desired user account, and then click Add.
6.Click OK to return to the Properties dialog box.
7.Click the desired user account.
8.Click to select the Replicating Directory Changes check box from the list.
9.Click Apply, and then click OK.
10.Close the snap-in.

Eso es todo, y eso fue mi experiencia en solución al problema gracias a las siguientes referencias importantes:

http://www.go4answers.com/Example/user-profile-synchronization-issues-61019.aspx

http://themossblog.com/articles/sharepoint-2010-user-profile-synchronization-failing-event-id-6050/

http://blog.jussipalo.com/2010/02/sp2010-fimsynchronizationservice-errors.html

Otras referencias encontradas que hablan como configurar los perfiles de usuario:

http://www.harbar.net/articles/sp2010ups.aspx

http://technet.microsoft.com/en-us/library/cc663011.aspx

http://technet.microsoft.com/en-us/library/ee721049.aspx

Search&Solve4Fun!,

Manolo Herrera

lunes, 13 de diciembre de 2010

Como cambiar el bloqueo de apretura de PDF´s en SharePoint 2010

Dentro los cambios en SharePoint 2010 está la restricción de manejo de archivos en el navegador.  Esto entre otras cosas nos limita a primero guardar el PDF en nuestra máquina y luego abrir el documento, comportamiento no deseado por la mayoría de usuarios.  Esto es a nivel Aplicación Web y por ende debe de modificarse en la Administración Central  de SharePoint 2010.

Haga clic en Aplicaciones Web.

Seleccionar Aplicacion Web y luego Seleccionar Configuracion General

Sobre la aplicación Web y no sobre el link de la aplicación haga clic izquierdo con el ratón y seleccione Configuración General.

ConfiguracionWeb

Le desplegará un menú y seleccione nuevamente Configuración general.

Permisivo

Haga la búsqueda de la opción Manejo de archivos del explorador y luego haga clic sobre la opción Permisivo.  Para finalizar haga clic en el botón aceptar que aparece hasta abajo o arriba.

Y Listo el comportamiento variara un poco de explorador a explorador pero quitará el problema que solo le deja guardar el documento PDF.

Referencia encontrada:

http://social.msdn.microsoft.com/Forums/en/sharepoint2010general/thread/3e5b820f-9183-414e-a6f8-ec7d0e93d299

Configure4Fun!,

Manolo Herrera

jueves, 9 de diciembre de 2010

Como obtener el user host en SharePoint

Buenas noticias, esto es mas fácil para SharePoint que para los usuarios de ASP.Net. debido a la clase SPSecurity.

Las alternativas para obtener el Remote Host están:

Variables de Servidor:

Page.Request.ServerVariables["REMOTE_HOST"];

En ASP.NET:

Request.UserHostName

A través de el espacio de nombre System.Net

Dns.GetHostEntry()

Pero ninguno funcionaba en mi NAT creada por VMWare y en eso recordé que podría ser problemas de permisos e intente el siguiente código que finalmente me dio la solución:

string hostName = null;
SPSecurity.RunWithElevatedPrivileges(delegate
{
      IPHostEntry hostInfo = new IPHostEntry();
      hostInfo =   Dns.GetHostEntryPage.Request.UserHostAddress);
         hostName = hostInfo.HostName;
  });
return hostName;
    

Obtener la IP es mucho mas fácil para los que se preguntan como:

Variables de Servidor:

Page.Request.ServerVariables["REMOTE_ADDR"];

En ASP.NET:

Request.UserHostAddress

Y en el case de Request.UserHostName no lo puede resolver devuelve el Remote Address que esto me sucedia cuando no ejecutaba con los privilegios necesarios el código.

Este escenario funciona correctamente en una Intranet, en Internet pueda que no de los resultados deseados debido a la complejidad de configuraciones que pueda encontrarse.

HostName4Fun!,

Manolo Herrera

Hot fix útil para revisar los pre-requistos de la migración de SharePoint 2007 a 2010

 

Esta hot fix trae información adicional en la operación del comando de línea stsadm.exe importantes para revisar las personalizaciones que hacen falta por ejemplo.  Dejo registrado este blog ya que siempre lo ando buscando y mejor que lo tenga en mi librería de cosas útiles y mas de alguien le puede servir.

Los prerequisitos de este hot fix es que tengan instalado el Service Pack 2.0. así que tómenlo en cuenta.

Los enlaces para el SP 2 son:

Versión Services

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=79bada82-c13f-44c1-bdc1-d0447337051b&displaylang=en

Versión server

http://www.microsoft.com/downloads/en/details.aspx?FamilyId=B7816D90-5FC6-4347-89B0-A80DEB27A082&displaylang=en

Los enlaces para el Hot Fix son:

Versión Services

http://support.microsoft.com/kb/2412268/

Versión Server

http://support.microsoft.com/kb/2412267/

Si tiene instalado la versión server necesita ambas y el orden es primero services y luego server.

Abajo un extracto de la información de Microsoft sobre el Hot Fix

October Cumulative Update (CU)
Released October 27, 2009
This update provides several fixes for Windows SharePoint Services 3.0 (KB 974989) and Office SharePoint Server 2007 (KB 974988) as well as improved functionality for the Pre-Upgrade Checker. Notable changes to the Pre-Upgrade Checker are improved reports, new rules, and additions to the stsadm –o EnumAllWebs command that enable you to list Web Parts, event receivers, features, or setuppath backed files. Additionally, support is added for listing custom list views.

 

HotFix4Fun!,

Manolo Herrera

martes, 7 de diciembre de 2010

Project Server: El servicio de cola de trabajos no se puede iniciar

Si le da el siguiente error:

image

Y no puede iniciar la cola de trabajos de Project Server.

Este puede ser un problema que se debe a que el certificado del servicio caduco, o que la actualización de algún parche lo haya invalidado.

Lo que debe de hacer es bajar el certificado, instalarlo e iniciar de nuevo el servicio de cola de trabajo de Project Server 2007.

Url para bajar el certificado:

http://crl.microsoft.com/pki/crl/products/CodeSignPCA.crl

Comando de línea para instalarlo:

certutil -addstore CA CodeSignPCA.crl

Las referencias encontradas para resolver el tema son:

http://knowledgewarehouse.wordpress.com/2009/08/21/project-server-queue-service-error-error-1053/

http://blogs.mvp-press.com/RollyPerreaux/entryid/29/How-to-Fix-Project-Server-Events-Service-and-Queue-Service-Event-ID-7000-Error-Graphical-Step-by-Step

Agradezco la contribución a la comunidad para resolver el tema encontrado en estas referencias y lo registro en mi blog, como parte de mi  archivo de soluciones encontradas sobre problemas con Project Server 2007.

Fix4Fun!,

Manolo Herrera

miércoles, 1 de diciembre de 2010

Timer Jobs & UserProfile Tips

 

Dentro de un Timer Job que es un proceso que se ejecuta del lado del servidor y no esta asociado al WorkProcess del IIS, necesitamos acceder a la colección de Sitios y Webs de nuestro portal de otra forma.

Dentro del Timer Job al sobreescribr el método Excecute a través del parametro targetInstanceId podemos obtener la instancia de la base de datos de contenido que estamos ejecutando el Timer Job, como se muestra abajo en el segmento de código:

public override void Execute(Guid targetInstanceId)
      {
          base.Execute(targetInstanceId);
          try
          {
              var miWebApp = Parent as SPWebApplication;
              if (miWebApp != null)
              {
                  SPContentDatabase contentDb = miWebApp.ContentDatabases[targetInstanceId];
….

Si estamos escribiendo un Timer Job para SharePoint Server y necesitamos obtener información de los perfiles de usuario, necesitamos hacerlo a través de la clase SPContentDatabase que obtuvimos del Timer Job, esto facilitará el acceso ya que no tenemos ningún contexto  Web corriendo desde el Timer Job. Abajo el código de ejemplo:

image

Para acceder a las propiedades de los perfiles de usuario tenemos la clase de ayuda PropertyConstants que nos da el nombre de cada propiedad predeterminada de los perfiles de usuario, si necesitamos acceder una propiedad personalizada deberemos de hacerlo por medio de un string o cada de caracteres.

Cuando cambies de periodicidad de un Timer Job en SharePoint 2007 recuerda siempre en desactivar y activar nuevamente la feature para que aplique el cambio:

image

Si utilizas WSPBuilder y nunca desactiva la feature debes de comentar la siguiente línea que para SharePoint 2007 no aplica, como te muestro abajo:

image 

Timer Job4Fun!,

Manolo Herrera

martes, 30 de noviembre de 2010

Managed Extensibility FrameWork (Presentación y Ejemplos)

Estimados para los que preguntaron sobre la presentación de MEF y ejemplos que pueden interesarles pueden obtenerlos en el siguiente link:

http://cid-a548d755baaa8510.office.live.com/browse.aspx/P%c3%bablico?uc=2

Descargo de responsabilidad: 

La presentación aunque es original, las fuentes también fueron tomadas de presentaciones de otros autores, y adaptadas y traducidas al español para la audiencia guatemalteca.

MEF4Fun!,

Manolo Herrera

sábado, 6 de noviembre de 2010

Charla: Extiende tus aplicaciones facilmente con Managed Extensibility FrameWork de .Net Framework 4.0

 

Si te gusto Unity Application Block espera a usar MEF que no solo es un IoC sino un Framework que te permitirá extender tus aplicaciones en vivo muy fácil y naturalmente y esta incluida en el Net Framework 4.0..

Estaré compartiendo en las oficinas de Microsoft en Guatemala sobre "MEF (Managed Extensibility Framework)", no te lo pierdas te dejo con la información de la invitación que puedes verla en EventBrite:

http://eventomefcomunidad.eventbrite.com

A sugerencia de algunos miembros que nos han solicitado postear links referentes al tema que se presentará para poder estudiar un poco antes de la reunión les compartimos las siguientes referencias:

Sitio oficial del producto: http://mef.codeplex.com/ (aquí podrán encontrar referencias, videos, etc.)

Blog de Glenn Block: http://blogs.msdn.com/b/gblock (El padre de la criatura).

NO TE LO PIERDAS !!!!

TE ESPERAMOS!!!!

Datos:

  • Fecha: Jueves 11 de Noviembre de 2010
  • Hora: De 6:30pm a 8:30pm
  • Lugar Oficinas de Microsoft de Guatemala
  • Dirección: 14 calle 2-51 zona 10, Edificio Intercontinental Nivel 11 Oficina 1101
  • Precio: ¡¡Gratis!!
  • Habrá premios por participación!

Nos vemos por allá!,

Manolo Herrera/

sábado, 23 de octubre de 2010

Cómo agregar varios elementos Web en una sola Característica en SharePoint

Cuando hay elementos Web relacionados unos con otros y se desea que en una sola característica o Feature se incluyan todos los elementos Web  dentro de la galería de Elementos Web.

Vamos a utilizar WSPBuilder para los ejemplos, ya que nos permite de forma sencilla la manipulación de los archivos xml sin necesidad de crearlos desde cero.

Para este ejemplo voy asumir que ya han realizado soluciones en SharePoint y han utilizado la herramienta WSPBuilder (que es herramienta excelente, gratuita y esta en el sitio Codeplex).

Desde Visual Studio 2008  seleccionamos la opción para creamos un nuevo proyecto y buscamos crear una solución en Blanco.

image

Luego dese la solución en el Explorador de soluciones seleciconamos agregar un nuevo proyecto y seleccionamos la plantilla WSPBuilder Project

image

Luego seleccionamos crear un nuevo elemento dentro del proyecto y seleccionamos Visual Web Part de las plantillas de WSPBuilder.

image

Luego levantara una nueva venta para la información de la feature, llenela y mantenga el alcance a nivel de Colección de Sitios o Site.  Ya que las galerías de elementos Web estan a este nivel.

image

La opción de Even handler dejela activada ya que creerá el el archivo de código EvenReceiver asociado a la feature.xml.  Luego haga clic en siguiente

image

La opción Removal code nos agregará a la clase  de tipo SPFeatureReceiver el código para eliminar los elementos Web al momento de desactivar la feature. Para finalizar presione Finish.  Para finalizar tendremos una estructura como la que se muestra abajo.

image

En esta estructura nos enfocaremos en los archivos xml feature y elements.  Pero antes vamos a crear el segundo elemento Web.quitando el cheque o palomita de las opciones antes mencionadas ya que no las vamos a necesitar, de tal forma que nos mostrará una estructura parecida a la siguiente:

image

Debemos mover los archivos con extensión webpart y cs  del elemento Web B para el directorio del elemento Web A.

Ahora vamos a abrir el archivo feature.xml del elemento Web B:y vamos a copiar la siguiente línea

<ElementFile Location="ElementoWebDemoB.webpart" />

Al archivoe feature.xml del elemento Web A.y esto dejaría la estructura del archivo de la siguiente forma:

image

Luego abramos el archivo elements.xml del elemento Web B.y copiamos las líneas de declaración de la etiqueta <File/> y la agregamos al archivo elements.xml de el elemento Web A.

image

Debería tener un resultado como se muestra en la imagen de abajo:

image

Aproveche a etiquetar el grupo al cual va asociar los elementos Web.  Para este ejemplo escribí Demo  (luego veremos los resultados).  Para finalizar elimine el directorio del elemento Web B. y obtendrá la siguiente estructura de la solución:

image

Y esto es todo ahora compilamos (Build Proyect), construimos la solución (Build WSP) y la instalamos. (Deploy)

Ahora vamos a SharePoint activamos la feature y editamos un página para ver los resultados:

image

image

Y eso es todo!. 

En este artículo vimos como agregar varios elementos Web a una sola Feature, detalles que hay que tomar en cuenta y gracias a la herramienta de WSPBuilder podemos hacerlo de forma sencilla y rápida.

SharePointCode4Fun!,

Manolo Herrera

miércoles, 20 de octubre de 2010

SharePoint 2010: De Plantillas de Sitio a Soluciones Cosas a tomar en cuenta en la migración.

Las plantillas de sitios en SharePoint 2007 ahora convenientemente son soluciones en SharePoint 2010.   Tiene sus ventajas como el poder incluir código, guarde el estado de cada elemento dentro del sitio entre otros.  Pero todo cambio tiene sus inconvenientes en alguna parte que se debe de tomar en cuenta especialmente cuando se esta migrando plantillas de 2007 a soluciones de 2010.

La primera noticia es que en le proceso de migración provisto por Microsoft no hay chance de migrar las plantillas de Sitios de 2007 a 2010 de forma automática.  Pero no todo esta perdido, ya que se puede resolver manualmente.  El procedimiento es el siguiente:

1) Antes de la migración en el servidor SharePoint 2007, cree un sitio limpio basado en la plantilla que desea migrar.

2) Realice la migración ya sea por el método In-Place o database attach upgrade.

3) Luego de realizada la migración del contenido de base de datos vía Mount-SPContentDatabase.  Ingrese al sitio que creo basado en la Plantilla que no esta migrada y como lo hacia en 2007 cree la plantilla basado en este sitio ya en 2010.  Pero ya  no existe una galería de plantilla de sitios ahora existe una galería de Soluciones y allí encontrará la solución que acaba de crear.

Otra cosa que debe de tomar en cuenta es que debido a que este procedimiento de arriba crea una solución y no una plantilla la Propiedad FilterCategories de la clase SPWebTemplate es nula ya que al momento de crear la solución en 2010 no pregunta, ni tampoco le asigna ningún valor.  Entonces si se tiene algún código como obtener las plantillas disponibles y filtrarlas por esta propiedad tendrá que buscarse otra solución para 2010, como la muestro en la imagen de abajo:

image

Básicamente dispuse que el valor de la propiedad Name de la clase SPWebTemplate  tenga los valores Plantilla y Reuniones.  Con eso resolví el tema, y continué mi proceso de migración.

Migrate4Fun!,

Manolo

viernes, 8 de octubre de 2010

Webcast hoy sobre Servicios de Conectividad de Negocios en SharePoint 2010

Hoy los invito a un evento MSDN en línea para que conversemos sobre los Servicios de Conectividad de Negocios en SharePoint 2010.  Los dejo abajo con la información del evento:

Webcast TechNet: Descripción general de los Servicios de conectividad de negocios

Id. de evento: 1032462160

Idiomas:
Español.

Productos:
Microsoft Office,Microsoft Office InfoPath,Microsoft Office SharePoint Server,Microsoft SharePoint 2010 technology.

Público:
Generalista de IT.

Moderador(es):

Manolo Herrera

Duración:
60 Minutos

Fecha de inicio:

viernes, 08 de octubre de 2010 02:00 p.m. Bogotá

Información general del evento

Los Servicios de conectividad de negocios (BCS) – la evolución del Catálogo de datos de negocios, es una característica clave de SharePoint 2010.  En esta sesión analizaremos las nuevas características de esta versión.  BCS le permite traer datos externos en SharePoint y Office, utilizar y autorizar que los usuarios finales obtengan una visión de los datos subyacentes de una manera reutilizable.  Todo esto se realiza dentro del navegador con el soporte de la operación Crear/Leer/Actualizar/Eliminar (CRUD), integración más fuerte con las aplicaciones de cliente de Office y mejores herramientas para modelar entidades de negocios.  Aprenderá sobre las mejoras importantes BCS y verá un demo detallado de cómo construir una solución declarativa utilizando SharePoint Designer, InfoPath Designer y SharePoint SDK, sin usar un desarrollador o escribir cualquier código.  La solución que le mostraremos lo conectará a sistemas back-end tanto para presentar datos como para permitir la interacción con estos, desde las aplicaciones SharePoint y Office.

Suscríbete aquí:

https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032462160&EventCategory=4&culture=es-AR&CountryCode=AR

Connect4Fun!,

Manolo Herrera

martes, 5 de octubre de 2010

Migrando Soluciones SharePoint V 3.0 (2007) a V 4.0 (2010) con WSPBuilder

Si tiene proyectos creados con plantillas de proyecto en WSPBuilder que necesita migrar a SharePoint 2010, le tengo buenas noticas, la migración no es tan dolorosa como podría pensar para un plataforma de 64 bits  como lo es SharePoint 2010.

Primero debe de descargar la versión WSPBuilder Extensions 2010 BETA 1.4 en el sitio de codeplex y la versión  CabLib.dll for x64 systems (version: 10.5)

Si tiene instalado una versión distinta debe de desinstalarla primero y luego instalar esta.

Genere nuevamente la solución y luego copie dentro del directorio de la solución el CabLib.dll de 64 bits que descargo y el WSPTools.BaseLibrary.dll o bien instale esta versión en el servidor de SharePoint 2010 para no estar copiando este archivo por cada solución que desea instalar.

El directorio debería de tener un contenido parecido al siguiente:

image

Para finalizar ejecute el cmd como administrador para evitar mensajes de error.

Con eso debería poder ejecutar el batch file deploywithwspbuilder

Migrate4Fun!,

Manolo Herrera

Ejecución de programas externos desde un portal en SharePoint

Recientemente este fue un requerimiento de un cliente y aunque hay información en la red , no es muy exacta por lo que les describo abajo mi experiencia con este requerimiento que pueda necesitarlo.

La idea es que podamos ejecutar algún programa del lado del cliente en el momento que el usuario desde el navegador haga clic sobre un enlace de nuestro portal en SharePoint.

Para ello vamos a utilizar de nuestro amigo Java script y de un ActiveX Control llamado WScript.Shell.

El código Java script que podemos incrustar en nuestro elemento web es el siguiente:

image

Donde comando es una cadena de caracteres o string donde envío el comando a ejecutar de la siguiente manera:

<asp:LikButton id=”Enlace” runat=”server” Text=”Enlace de Prueba” OnClientClick=”ProgramaExterno(‘cmd /c c://Windows//notepad.exe /parametros’);return true;”  OnClick=”Enlace_OnClick”/>

Expliquemos en detalle el código arriba escrito; OnClientClick es el código que se ejecutará del lado del navegador en la máquina del cliente, no es necesario colocar las etiquetas de Java script ya que eso esta implícito. Es importante ejecutarlo desde la línea de comando con cmd y pasarle el parámetro /c para indicarle que finalice al ejecutar el comando  y por ultimo aunque notepad no necesita la ruta completa otros programas si lo necesitarán y la ruta debe definirse con doble diagonal. Es Importante también retornar verdadero para que se ejecute del lado del servidor cualquier otro código que necesite.

Para finalizar verifique que el navegador tiene habilitado el uso de Java script y la ejecución de programas externos.

Para realizar una prueba antes de escribir código utilice el elemento Web Editor de Contenido y ejecutar el código desde Editor de código fuente.

Recuerde Code4Fun!,

Manolo Herrera

lunes, 4 de octubre de 2010

Conectando Oracle con SharePoint

Pueda que este sea un requerimiento interno o de un cliente, la dificultad radica en la configuración de Oracle y que es una plataforma no nativa de Microsoft, es decir no espere que funcione tan fácil como lo hace desde MS-SQL Server.

3 aspectos que debe de tomar en cuenta:

1) Necesita para todas las versión tener instala una versión cliente (entre mas reciente mejor) donde se va ejecutada la consulta, que en nuestro caso es el servidor de SharePoint.

2) Necesita lidiar con los archivos de configuración de Oracle (Extensión .ORA), si utiliza cualquier librería distinta de ODBC.

3) Elegir una librería para conectarse a Oracle y esta esta relacionada directamente con la versión cliente instalada y con la configuración de los archivos de Oracle.

Las librerías disponibles y sus implicaciones son las siguientes:

Librería

Versión Cliente Requerida

Comentarios

ODP.NET
Oracle.DataAcces.dll
Oracle 9i o superiorNecesita agregar en archivos .ORA palabra .WORLD
System.Data.OracleClientOracle 9i o superiorNecesita agregar en archivos .ORA palabra .WORLD
Oledb for OracleOracle 7.3.3.4.0 o superiorNecesita eliminar en archivos .ORA la palabra .WORLD
Odbc for OracleOracle 8i o superiorNecesita eliminar en archivos .ORA la palabra .WORLD

Aunque es obvio es mejor mencionarlo, verifique los permisos asignados a la cuenta a la cual le dieron acceso, es común que olviden otorgárselos.

Verificar el registro de Windows en la instalación de Oracle que tenga el valor en la llave American_America, ya que otra versión da problemas:

RegistroOracle

Si necesita instalar el cliente de Oracle para OPD.Net le recomiendo el cliente 10g versión 10.2.0.1.0 y los componentes necesarios son:

ComponentesCliente

ComponentesCliente1

ComponentesCliente2

Si no quiere lidiar con el archivo de configuración y solo lo va utilizar para leer información de la base de datos que no es muy extensa o que no tiene columnas de manejo especial, mi recomendación es que dese con el método mas simple pero efectivo utilice ODBC. Abajo una cadena de conexión para ODBC:

Driver={Microsoft ODBC for Oracle}; CONNECTSTRING= (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=[ip address])(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=[servicename])); uid=[user id]; pwd=[password];

Referencias:

Oracle Data Provider .NET for Developers

Limitations of Microsoft Oracle ODBC Driver and OLEDB Provider

Microsoft OracleClient Deprecated La recomendación de Microsoft es utilizar las librerías que tiene Oracle o terceros para desarrollar con .Net, por lo que le recomiendo busque estas librerías y no las de Microsoft que estuvieron disponibles en su momento.

Oracle4Fun!,

Manolo Herrera

viernes, 17 de septiembre de 2010

Error en el elemento Web luego de varias actualizaciones en SharePoint

Pueda que este erro le suceda.

Síntoma:

Ha estado actualizando varias soluciones de elementos web y de repente  una de ellas muestra un error en el elemento Web  dentro de la página.  Lo intenta eliminar y agregar de la página y aún mas extraño le indica que no esta registrado como SafeControl. Y esta utilizando WSPBuilder y no le reporta ningún error en la interface de usuario o en Visual Studio.

 

Solución:

Si revisa los ULS de SharePoint encontrará el siguiente error que le dará una pista correcta:

Solution Deployment : Error occurred for solution infoware.portal.minuta.wsp - Error: el archivo web.config no es válido en este sitio Web de IIS: C:\Inetpub\wwwroot\wss\VirtualDirectories\8572\web.config.

Y por cada aplicación Web le muestra el mismo error.  Si revisa el Web.Config de las aplicaciones mencionadas se dará cuenta que no son legibles, y es porque se han dañado los web.config.  Si revisa el Web.Config de donde si lo estaba actualizando posiblemente encontrará que efectivamente no esta registrado el elemento Web como SafeControl y eso es porque la hacer el deployment se interrumpió y no pudo finalizar con éxito la actualización.

SharePoint guarda copias automáticamente que este archivo de configuración y lo hace por fechas como se muestra abajo en la imagen:

image

Ordénelos por fecha y restaure el mas reciente que sea legible y no muestre mas error.

Luego actualice de nuevo la solución y con ello deberá seguir trabajando como lo estaba haciendo.

Espero le sirva de ayuda, Fix4Fun!,

Manolo Herrera

lunes, 6 de septiembre de 2010

Creando dos características de distinto alcance en una sola solución en SharePoint

Dentro de una misma solución podemos crear varias características con distinto alcance y una dependiente de la otra.  En este ejemplo demostraré cómo podemos crear una característica a nivel de Colección de Sitios y una a nivel de Sitio la cual estará relacionada o dependiente de la otra.

Además podremos observar algunas tareas que pueden automatizarse al momento de activar cada una de ellas.

Para la construcción de la solución utilizo WSPBuilder que es un producto que podemos instalar de forma gratuita y que ha probado ser la mejor solución de 3eros para crear soluciones en SharePoint 2007 y que se acopla muy bien a Visual Studio (2008 en mi caso). 

No detallaré como crear una solución con WSPBuilder, he escrito otros artículos y hay suficiente documentación en la red sobre esto.  Quiero ir al punto importante sobre este ejemplo que es cómo crear estas características y relacionarlas.

Lo que si debo de mencionar es el breve procedimiento para iniciar:

1) Cree una solución en blanco.

2) Luego cree un proyecto WSPBuilder como muestra la imagen de abajo:

image

3) Cree un Elemento Web con Característica con la plantilla de WSPBuilder:

image

Luego le mostrará una ventana de dialogo: donde lo importante será definir el Scope o Alcance.  Para los elementos Web deberá seleccionar Site (Site Collection) ya que la galería esta a nivel de la colección de sitios y allí es donde almacena.

image

Esto creará las bases para iniciar mas fácilmente la creación de la solución.

Esto creará 3 archivos:

image

el archivo feature.xml; tiene la definición de la característica

elements; asocia el elemento web con la característica.

.webpart; la definición del elemento web a nivel de artefacto de SharePoint.

Si observa tiene la estructura donde depositará estos archivos, al momento de su instalación.  12 representa la siguiente ruta: %progam files%\common files\microsoft shared\web server extensions\12.

Además nos crea un directorio WebPartCode y un archivo donde esta el código del elemento Web

image

Ahora lo que vamos hacer es crear una estructura de directorios bajo el directorio Feature para separar cada feature con el alcance deseado  de tal forma que queda de la siguiente forma:

image

Cómo lo hice solo cree un nuevo directorio con el sufijo Web copie el archivo feature y renombre el otro agregando el sufijo Site para visualmente distinguir el alcance de cada uno.  Pero no se engañe el que indica esto a SharePoint es la definición xml que se encuentra dentro del archivo feature.xml que vamos a modificar.

Antes de modificar la declaración xml del feature o característica abajo en la imagen de la declaración original:

image

La nueva declaración del featue para el directorio MenuReportesAdministradosSite sería de la siguiente forma:

image

Lo importante a mencionar son los atributos ReceiverAssembly y ReceiverClass donde el Assembly es el full Qualified Name de DLL del proyecto.  Utilice Reflector para ver el Full Qualified Name.  Y ReceiverClass es el nombre de la clase donde colocaremos el código de instalación al activar la feature como muestro abajo:

image

image

Ahora veamos el archivo feature.xml del directorio que representa el alcance Web Site..

image

El valor del atributo ReceiverAssembly se mantiene igual ya que es del mismo proyecto y por tanto tiene el mismo DLL, pero el de la clase hace referencia a otra clase donde nos permitirá escribir códigos al activar el feature a nivel de cada sitio o sub-sitio.

image

* El detalle del código mostrado en la imagen de arriba esta fuera del alcance de este articulo.

Entonces tendremos dos archivos de código uno por cada nivel de alcance (Site & Web).

image

En resumen vimos en este artículo como crear dos características dentro de una misma solución y como asociar código a cada feature, útil para entregar soluciones autoinstalables que creen toda la tubería necesaria para utilizar las features activadas.

Hasta la próxima, Feature4Fun!,

Manolo Herrera