Sharepoint Designer Workflow – El usuario no puede editar la tarea

En los últimos días he estado trabajando en procesos y formularios que utilizan las herramientas office de Microsoft, esto es InfoPath para las formas y Sharepoint Designer para los procesos (Workflows)

Aunque todo lo que he venido haciendo se puede lograr en VS2005 con las extensiones para sharepoint (incluso de esta forma se obtiene mayor control de los resultados), uno de los requerimientos específicos era utilizar estas herramientas para poder pasar el conocimiento a usuarios no desarrolladores.

Después de un par de días ya pude realizar el formulario y el proceso, lo publique en el servidor de pruebas y pedí a los usuarios retroalimentación, todo parecía ir bien hasta que tuvieron que realizar sus tareas y se les notifico que no tenían acceso. Luego de verificar todos los permisos en la lista de tareas, los formularios, el gestor de perfiles, el AD, etc. pues nada esto es un bug.  Un par de horas de búsqueda en Internet me trajo esta solución que pongo aquí para que alguien se ahorre un par de horas de la vida.

El Problema.

Un formulario de Infopath, un workflow asociado a la librería de formas, un usuario con permisos limitados,

el usuario puede llenar formas (si)

El usuario puede ingresar a la lista de tareas desde un link (si)

El usuario puede ver el link de editar tarea (si)

El usuario puede editar la tarea (No. Acceso denegado). No se supone que funciones de esta forma.!!!


La Solución

Después de un par de horas de mirar en internet encontré este foro donde lo resolvieron. , para los que les gusta en español, la solución aquí.

Abra el sitio con Sharepoint designer. Clic derecho en el folder workflows, seleccione propiedades., en el tab de seguridad haga clic en el enlace «Manage Permissions using the browser».

WorkflowFolderSecurity

Se abrirá una nueva ventana del browser, en mi caso se habían perdido los permisos heredados y mi usuario estaba en un nivel de permisos incorrecto, cambie el nivel de configuración para que volviera a heredar del sitio y listo.

Juan Carlos Peláez

Arquitecto de Software

www.juanpelaez.com  

Keywords: Sharepoint Designer, Workflow, Problemas, Usuario, Tareas, Permisos, Juan Carlos Peláez, Procesos, Formularios, InfoPath, MOSS 2007, WSS 3.0

Modificar la forma como arranca un Workflow de Sharepoint creado con Sharepoint Designer.

Cuando se crea un Workflow con Sharepoint Designer se utiliza un asistente, es uno de los argumentos de venta, workflows sin necesidad de código.

La primera pregunta del asistente es esta:

clip_image001

Que le permite a uno determinar la forma como debe arrancar el workflow y su relación con los items de la lista, es decir, si el workflow arranca cuando se crea el item, se modifica o si arranca manualmente.

Bien el problema es que esta pantalla no vuelve a verse nunca más después de este paso (yo nunca la encontré), entonces si hay problemas con el modelo de arranque del workflow se queda uno varado. 

La solución para modificar la forma que arranca el workflow es abrir con un editor de texto el archivo (puede usar el mismo del SPD) como se ve aquí:

clip_image002

luego se pueden modificar estas lineas (eliminandolas), lo que modificará la forma como arranca el workflow de acuerdo con la que se elimine.

<Association
       ListID=»{A245AE99-E68F-4500-9B36-6DD167FF676F}»
       TaskListID=»{EAE51F29-83F8-4C88-8A36-D9417969E07C}»
       StartManually=»true»    ‘Workflow arranca manual
       StartOnCreate=»true»   ‘Workflow arranca cuando se crea el item
       StartOnChange=»true»  ‘Workflow arranca cuando se cambia el item.
   >

Ahora, todo tiene un porque, la razón por la que me vi enfrentado a esto fue que cree un Workflow, le puso a que se iniciara de forma automática y nada paso, nunca arranco, así que tuve que cambiarlo a inicio manual y una cosa llevo a la otra…, esta fue la solución.

Ahora hoy he encontrado que la razón por la que no pude arrancar mi workflow de forma automática tiene que ver con el SP1 de WSS 3.0 y MOSS 2007. Como se indica aquí.  ( en español en este buen blog de Sharepoint)

Juan Carlos Peláez

Arquitecto de Software.

visite www.juanpelaez.com  

Keywords:  Sharepoint, MOSS2007, WSS3.0, Workflows, Declarative Workflows, Sharepoint Designer, SP1, Juan Carlos Peláez.

VS2005 – Web Application Projects o Web Site Projects? y SharePoint

Al usar VS2005, una de las cosas con las que se encuentran los usuarios (que vienen de VS2003) es un nuevo modelo de compilación de los proyectos Web. (Web Site Project).   Hay varias diferencias entre un modelo y otro, desde el sitio donde se seleccionan para crear un nuevo proyecto hasta los resultados de compilación. Para muchas cosas esto es muy importante, así que aunque este no es un tema nuevo vuelvo a él para referencia propia y de otros. En el modelo Web Application:

  • Toda la aplicación se compila en un solo assembly (dll) que queda en la carpeta bin.
  • Todas las referencias, y archivos se relacionan en el archivo del proyecto.
  • Todo el proceso de compilación usa MSBuild así que se puede personalizar lo que pasa antes, durante y después de la compilación.

En el Modelo Web Project:Se generan muchos dlls que viven en el directorio bin, es un poco complicado saber para que es cada uno y cual es cual. Para mi entonces la principal diferencia esta relacionada con la compilación, y aquí es donde esto se vuelve importante hoy. (3 años después de VS2005.)

Ahora estoy desarrollando algunos proyectos para Sharepoint 2007, hay muchas opciones pero una interesante es crear una aplicacion asp.net normal, agregar las referencias a Sharepoint y publicarla en el directorio _layouts.

Para hacer esto y que quede bien es obligatorio que el assembly de la aplicación web sea uno solo, es decir que sea un proyecto Web Application. , hay otros escenarios como usar Enterprise services en los que eso del ensamblado único también es importante.

Asi que para mucha gente, esto resulto tan importante que se creo una adición para VS2005 que permite volver a tener los proyectos Web Applications.

A continuación algunas fotos de mi maquina de desarrollo (gracias clo J) que permiten ver las diferencias al momento de creación, los resultados de compilación y el deployment resultante en sharepoint. Cuando se entra a Visual Studio y se selecciona nuevo web site se ve una pantalla como esta:

clip_image001

si se crea una pagina, un botón, una clase, se compila y se publica (Publish) se obtiene algo como esto:

clip_image002

Como pueden ver hay dos dlls, una llamada application Code y Otra llamada App_web_xxxx.dll. Para tener el soporte para Web Applications se puede ir al sitio de Microsoft y rápidamente instalarlo siguiendo estos pasos:

  1. Primero Aplicar este parche y
  2. Luego descargar el complemento de aqui.

Luego de instalar esto se siguen teniendo los web projects, pero también esta ahora la opcion de web applications, solo que se encuentran en otro lado como se puede ver aquí:  (new Project, Web…)

clip_image003

Y al agregar la misma página, el mismo botón, la misma clase que en el proyecto anterior, compilar y publicar se obtiene esto:

clip_image004

Como se ve una sola dll con el mismo nombre del proyecto. Pues bien, esta dll es la que se puede colocar en el carpeta BIN del directorio virtual del sitio sobre el que se esta creando la aplicación en sharepoint. asi : (En este caso mi aplicación dentro del Sharepoint se llama ProjectServer)

 

clip_image005 

 

Y las páginas del compilado si quedan en el directorio layouts:

 

 

clip_image006 

Personalmente me gustan los proyectos que usan webApplications, y hasta el momento no he encontrado ninguna restricción o algo que no pueda hacer, incluso en otro proyecto que usaba Enterprise Services desde una de las clases del Web Site fue perfecto para registrar con facilidad los componentes en la consola de COM+. espero que sea de ayuda.  

Juan Carlos Peláez

MCTS Distributed Applications 

Keywords: VS2005, Sharepoint, Web Application Projects, Web Projects, Sharepoint Applications, Juan Peláez, MCTS Distributed Applications. Build, deploy, Desarrollo para Sharepoint, Consultor en Sharepoint.  

Fuentes del Framework de .Net

Todos los fuentes del framework de .net se han publicado hace algunos minutos, están disponibles en un buen ejemplo de software + servicios usando el visual studio 2008 como software cliente y el servidor de microsoft reference haciendo de proveedor de servicios en http://referencesource.microsoft.com/symbols



Como una de las mejores prácticas para ser un gran programador es leer mucho código, que mejor que explorar (dentro de Visual Studio, depurando y todo eso) el framework de .Net.

Las instrucciones para hacer que nuestro VS2008 pueda abrir estas fuentes aquí:

http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx

Espero que sea de ayuda

 


 


Juan Carlos Peláez


Arquitecto de Software


MCTS Distributed Applications.

Creando aplicaciones de Silverlight 1.1 para SharePoint con VS2008

Uno de los Blogs a los que estoy suscrito es el de Janne Mattila quien siempre tiene cosas muy interesantes sobre Sharepoint, generalmente avanzadas y muy pero muy útiles e interesantes, en las últimas semanas Janne publicó un post sobre Silverlight y Sharepoint que va en la misma línea de trabajo que estoy siguiendo en los últimos días. Con el permiso de Janne, traduzco el contenido a continuación para todos aquellos que prefieren el español. J .

(Nota: no me considero traductor, ni espero que esto sea una traducción textual, lo importante es el sentido general, comentarios son bienvenidos como siempre)

Creando aplicaciones de Silverlight 1.1 para SharePoint con VS2008


El título lo dice todo.:-) Mi plan es crear un pequeño instructivo paso a paso de cómo crear una aplicación Silverlight 1.1 con Visual Studio 2008 y luego ejecutarla en SharePoint. Y como no quiero instalar un montón de cosas en mi ambiente de Sharepoint cree una Web part que sirva de host a la aplicación Silverlight. Todo el desarrollo se ha realizado fuera del ambiente de Sharepoint.

Si Silverlight es algo nuevo para usted le sugiero que empiece revisando silverlight.net y un ejemplo muy interesante en Coding4Fun Silverlight 8-Ball example. El primer enlace es el punto de enlace para el desarrollo usando Silverlight y el segundo enlace es un ejemplo muy interesante que muestra cómo crear un juego de 8-bolas usando Silverlight.

Ahora sabe más de Silverlight 🙂 así que empecemos con el ejemplo:

Tengo VS2008 corriendo en Vista y he descargado e instalado Microsoft Silverlight 1.1 Tools Alpha for Visual Studio 2008 para ayudarme a desarrollar las aplicaciones Silverlight. Esto agrega una nueva plantilla con toda la configuración necesaria para construir aplicaciones de Silverlight 1.1. También tengo SharePoint corriendo en Virtual PC y está configurada para conectarse directamente a mi maquina host (Ej: al escribir http://demo1:1000 en mi maquina host se conecta al SharePoint virtualizado).

Lo primero es modificar el SharePoint de forma que pueda hospedar mi nueva aplicación. Agreguemos algunas carpetas bajo el directorio _LAYOUTS:

image

ClientBin es la carpeta que contendrá todos los archivos .dll requeridos en el cliente por Silverlight (=Si usted compila su proyecto Silverlight automáticamente tendrá en su proyecto la carpeta ClientBin que contiene todos los ensamblados del cliente necesarios para el proyecto.).

La carpeta Silverlight es usada para almacenar los archivos .xaml (=Las páginas Silverlight). También necesito cambiar la configuración de las dos carpetas para que las cosas funcionen. Primero cambiare la configuración de la carpeta ClientBin:

 


image


 


Asigne solo acceso de lectura (Read) y también permisos de ejecución (Execute) a nadie (None) :  


Luego adicionaré .dll para permitir tipos mime (y .pdb para propósitos de depuración en el futuro) :-):

image

Entonces cambiaré la configuración de la carpeta Silverlight para que soporten las extensiones .xaml:

image

Ahora el SharePoint está configurado… pero creemos una web part que sirva de host la aplicación Silverlight en la página. Aquí está el código que hace esto:

   1:  using System;
   2:  using System.Runtime.InteropServices;
   3:  using System.Web.UI;
   4:  using System.Web.UI.WebControls.WebParts;
   5:   
   6:  namespace Silverlight_Web_Part
   7:  {
   8:    [Guid(«fc852641-9955-433c-945e-d773f46351eb»)]
   9:    public class Silverlight_Web_Part : WebPart
  10:    {
  11:      string xamlFile;
  12:      [WebBrowsable(true), Personalizable(true)]
  13:      public string XamlFile
  14:      {
  15:        get { return xamlFile; }
  16:        set { xamlFile = value; }
  17:      }
  18:   
  19:      public Silverlight_Web_Part()
  20:      {
  21:        this.ExportMode = WebPartExportMode.All;
  22:      }
  23:   
  24:      protected override void Render(HtmlTextWriter writer)
  25:      {
  26:        if (string.IsNullOrEmpty(this.XamlFile) == false)
  27:        {
  28:          writer.Write(«<div id=’SilverlightControlHost’ « + 
  29:            «style=’width: 640px; height: 480px;’></div>»);
  30:          writer.Write(«<script type=’text/javascript’ « +
  31:              «language=’JavaScript’ src=’/_layouts/Silverlight.js’></script>»);
  32:          writer.Write(«<script type=’text/javascript’ « +
  33:            «language=’JavaScript’ src=’/_layouts/SilverlightStarter.js’></script>»);
  34:          writer.Write(«<script type=’text/javascript’ « +
  35:            «language=’JavaScript’>createSilverlight(‘» + xamlFile + «‘);</script>»);
  36:        }
  37:        else
  38:        {
  39:          writer.Write(«Xaml file is not selected.»);
  40:        }
  41:      }
  42:    }
  43:  } 

Mi web part usa los archivos Silverlight.js y SilverlightStarter.js. SilverLight.js es el mismo archivo que se incluye en el proyecto cuando se crea un proyecto Silverlight 1.1 en VS. SilverlightStarter.js es prácticamente una copia del archivo de la plantilla del proyecto pero lo he modificado un poco para que soporte que el archivo XAML sea pasado como parámetro:


   1:  function createSilverlight(filename)
   2:  {
   3:    Silverlight.createObjectEx({
   4:      source: filename,
   5:      parentElement: document.getElementById(«SilverlightControlHost»),
   6:      id: «SilverlightControl»,
   7:      properties: {
   8:        width: «100%»,
   9:        height: «100%»,
  10:        version: «1.1»,
  11:        enableHtmlAccess: «true»
  12:      },
  13:      events: {}
  14:    });
  15:     
  16:    document.body.onload = function() {
  17:     var silverlightControl = document.getElementById(‘SilverlightControl’);
  18:     if (silverlightControl)
  19:     silverlightControl.focus();
  20:    }
  21:  }

Y si verifica el código del web part en la línea 35 notará que paso como parámetro el archivo XAML que ha sido configurado en las propiedades del web part:

image

Ahora solo tenemos que adicionar algo de código Silverlight y estamos listos. Aquí está el contenido del archivo Page.xaml (=La Aplicación :-):

   1:  <Canvas x:Name=»parentCanvas»
   2:      xmlns=»http://schemas.microsoft.com/client/2007″ 
   3:      xmlns:x=»http://schemas.microsoft.com/winfx/2006/xaml» 
   4:      Loaded=»Page_Loaded» 
   5:      x:Class=»MySilverLight.Page;assembly=/_LAYOUTS/ClientBin/MySilverLight.dll»
   6:      Width=»640″
   7:      Height=»480″
   8:      Background=»White»    
   9:      >
  10:   
  11:   <Rectangle x:Name=»MyRectangle» 
  12:         Canvas.Top=»25″ Canvas.Left=»25″ 
  13:         Width=»50″ Height=»50″ 
  14:         Fill=»Gray» MouseLeftButtonDown=»MyMouseLeftButtonDown» />
  15:   <TextBlock x:Name=»MyText» 
  16:         Text=»Click either rectangle or me» 
  17:         MouseLeftButtonDown=»MyMouseLeftButtonDown» />
  18:  </Canvas>

 


Y el code behind Page.xaml.cs contiene el siguiente código:


   1:  using System;
   2:  using System.Windows.Controls;
   3:   
   4:  namespace MySilverLight
   5:  {
   6:    public partial class Page : Canvas
   7:    {
   8:      DateTime started = DateTime.Now;
   9:   
  10:      public void Page_Loaded(object o, EventArgs e)
  11:      {
  12:        // Required to initialize variables
  13:        InitializeComponent();
  14:      }
  15:   
  16:      public void MyMouseLeftButtonDown(object o, EventArgs e)
  17:      {
  18:        string runningTime = (DateTime.Now – started).TotalSeconds.ToString(«F2»);
  19:        System.Windows.Shapes.Rectangle rectangle = o as System.Windows.Shapes.Rectangle;
  20:        if (rectangle != null)
  21:        {
  22:          MyRectangle.Opacity = 1;
  23:          MyText.Text = «You clicked rectangle! Application has been running for « + 
  24:            runningTime + » seconds.»;
  25:        }
  26:   
  27:        System.Windows.Controls.TextBlock textBlock = o as System.Windows.Controls.TextBlock;
  28:        if (textBlock != null)
  29:        {
  30:          MyRectangle.Opacity = MyRectangle.Opacity * 0.8;
  31:          MyText.Text = «You clicked text block! Rectangle is fading away…»;
  32:        }
  33:      }
  34:    }
  35:  }

Ahora usted probablemente estará ansioso de saber lo que hace la aplicación 🙂 Aquí esta nuestra aplicación luego de un par de solicitudes (request):

image

Y si el usuario hace click en el rectangulo…

image

Si el usuario hace click en el texto…

image

Ahora tenemos el ambiente de desarrollo listo así que podemos construir y probar la aplicación Silverlight 1.1 y hospedarlo en SharePoint. Aquí están los pasos que tiene que seguir para probarlo usted mismo.

1) Cree un proyecto Silverlight en VS2008
2) Escriba el Código 🙂
3) Construya la solución
4) Copie el contenido del folder ClientBin*.* al folder _LAYOUTSClientBin del Sharepoint
5) Copie los archivos *.xaml de su proyecto a la carpeta Silverlight del SharePoint. (Nota: tiene que verificar que este correcto el path en x:Class! Vea mi Page.xaml y la línea 5 en el fuente)
6) Cree la página que usa el web part Silverlight y seleccione su nuevo archivo XAML

Esta fue mi pequeña introducción a Silverlight 1.1 con SharePoint. En este ejemplo yo use archivos .xaml estáticos ubicándolos en el sistema de archivos para hacer todo tan simple como sea posible… solo quería demostrar como usted puede empezar a experimentar con esta combinación. Esto puede ser ampliado y mejorado en muchas formas diferentes y probablemente volveré a este tema en futuros posts.



De todas formas… Happy hacking!
J


Hasta aqui el Post de Jane.

Espero que sea de Ayuda.

Juan Carlos Peláez

MCTS Distributed Applications

Arquitecto de Software.

Keywords: Silverlight, Sharepoint, VS2008, WSS 3.0

Ahora…MCTS Distributed Application Development

Acabo de presentar el examen 070-529 para optar a la certificación MCTS en Aplicaciones Distribuidas. Obtuve un puntaje de 889 (se requiere 700 para aprobar), 40 preguntas en 1 hora 25 minutos.


La mayor parte del examen se enfoco en servicios web y WSE 3.0, muy pocas preguntas de Message Queue y Enterprise Services.


Ahora empiezo a estudiar para presentar los otros examenes y apuntar a la certificación de Desarrollar Profesional Enterprise, que requiere pasar todos los examenes del framework 2.0 y luego pasar el examen 79-549, antes presente un examen cada año, ahora a ver si puedo presentar uno cada semestre. 🙂


Para este examen utilice el Self Pace Training Book de Microsoft Press realmente un muy buen recurso y en el que estan todos los temas que se preguntaron en el examen.


En realidad este examen me parecio más fácil que el anterior (070-536), incluso en este saque un mejor puntaje.


Juan Peláez


MCTS…Distributed Application Development.


 


 


 


 


 

Blend 2 Preview de Diciembre.

 


Se ha publicado el Preview de Diciembre de Blend 2.  Para descargarlo puede ir a este enlace.


En una revisión rápida para preparar un demo para Microsoft Andino he encontrado dos caracteristicas interesantes:


 



  • La Solución ahora puede manejar multiples proyectos lo que permitirar reconstruir y reusar controles que estaban en proyectos diferentes.
  • Ya se pueden cerrar los diferentes paneles con la acostumbrada x que tanto extrañamos antes.

 


Hay muchas más que se pueden leer en el mismo sitio de la descarga.


 


Un Comentario.


Al crear un nuevo proyecto ya se puede seleccionar el framework que desea usarse para compilar, esto ya estaba en la versión anterior (preview de septiembre), pero solo se habilitaba si se instalaba el framework 3.5. (Lo que por cierto traia muchos dolores de cabeza con proyectos nuevos que se crearan despues de instalar el Framework 3.5). Imagino que es por la misma razón que en esta versión actual todos los proyectos y soluciones que se crean son para VS2008, lo que tiene sentido pero es complicado para todos los que veniamos usando blend, queremos las mejoras de la ultima versión pero aún no estamos en VS2008.


Tambien puede verse como una excusa más para migrar a VS2008. (Otras en un post futuro…)


 


Espero que sea de ayuda


 


Juan Peláez


MCTS.


Miembro de Microsoft Andean Influencer Framework


Miembro de Microsoft Andean Speaker Group.


 


Keywords: VS2008, Blend 2, Juan Peláez., Problemas Proyectos Blend 2 Diciembre VS2005., Por que mi proyecto Blend no abre en VS2005, Visual Studio 2005.

Ahora Juan Peláez también en Geeks.ms

Gracias a la amable invitación de Rodrigo Corral ahora publicaré algunos contenidos en Geeks.ms una de las comunidades más activas en el mundo Microsoft en Español.


 


Una de las ventajas de Internet: no podemos ser silenciados, podemos compartir nuestro conocimiento, podemos aprender de todos, gracias a comunidades como la de Rodrigo, a los cientos de Bloggers que comparten sus experiencias, problemas y sobre todo soluciones cada vez más personas tienen acceso a respuestas para  sus problemas reales. Espero que algo de la información que comparto ayude a alguien a salvar un par de horas.


 


Juan Peláez.


MCTS.


Miembro del Microsoft Andean Speaker


Miembro del Microsoft Andean Influencers Framework.


Visite www.juanpelaez.com