Numero de visitas 

contadores

 Creado por Ramon Torras   r_torras@msn.com

Ibetania > Workflow Foundation on SharePoint
mayo 10
Ejemplos LINQ

En el siguiente enlace podrás encontrar 101 ejemplos de sintaxis enLINQ

http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

abril 19
Best practices for SharePoint 2010
julio 18
¿SharePoint 2010 + Workflow Foundation 4.0?

Mencionar que SharePoint 2010 utiliza la versión 3.5 del FrameWork.

¿Porque SharePoint 2010 no utiliza Workflow Foundation 4.0?

Pues porque el desarrollo del Framework 4.0 se hizo en paralelo con el desarrollo de SharePoint 2010

¿Cuándo se prevé la alineación de las dos plataformas?

Se supone que en algún momento se hará efectiva la integración. De momento con el Service Pack 1 de SharePoint, no ha sido asi.

Pero si buscáis en AMAZON, hay libros que saldrán en breve….asi que pronto lo veremos J

octubre 30
Versionado de workflows
Para deployar una versión nueva del mismo wf tenemos de tener en cuenta una serie de consideraciones.
 
Como si cambia el codigo del workflow o si solo cambian los taskforms, que pasa con las instancias que estan corriendo con la antigua versión, etc..
 
 
En este link explican las cosas a tener en cuenta.
 
 
 
Cuando tenga un poco de tiempo me explaiaré sobre este tema :)
 
 
 
Saludos
 
 
mayo 18
Deploy de un Workflow sobre SharePoint

Vamos al directorio de nuestra solución WF

<Nombre solución>\DeploymentFiles\ProductionDeployment

Aquí encontraremos dos ficheros:

-          Manifest.xml

-          Wsp_structure.ddf

Primero hemos de dejar bonito el Manifest.xml asi que vamos a editarlo:

<?xml version="1.0" encoding="utf-8" ?>

 

<!--  Manifest for a solution package (wsp).  To customize:

1) Replace NEW_GUID with a unique GUID

2) Replace "MyFeature" with the name of your own feature

3) Replace "MyTarget" with the name of your own target

-->

 

<Solution xmlns="http://schemas.microsoft.com/sharepoint/" SolutionId="NEW_GUID" >

  <Assemblies>

    <Assembly DeploymentTarget="GlobalAssemblyCache" Location="MyTarget.dll" />

  </Assemblies>

  <FeatureManifests>

    <FeatureManifest Location="MyFeature\Feature.xml"/>

  </FeatureManifests>

</Solution>

Como bien dice los comentarios del fichero tenemos que reemplazar el new_guid con:

-          Con el guid de la solución

-          Con otro guid único creado a partir del guidgen (menú inicio->visual studio 2005 o 2008 /Visual Studio tolos/Simbolo del sistema de Visual Studio)

También hay que reemplazar el nombre de la dll con el nuestro. En principio, yo siempre hago  coincidir con el nombre de la feature. Es decir, MyFeature y MyTarget valen lo mismo.

Una vez tengamos el manifest.xml a punto vamos a editar el fichero .ddf

;

;*************

; This ddf specifies the structure of the .wsp solution cab file. To customize this:

; 1. Replace "MyFeature" with the name of your own feature.

; 2. Add IP forms for the workflow at the bottom.

;*************

;

.OPTION EXPLICIT     ; Generate errors

.Set CabinetNameTemplate=MyFeature.wsp    

.set DiskDirectoryTemplate=CDROM ; All cabinets go in a single directory

.Set CompressionType=MSZIP;** All files are compressed in cabinet files

.Set UniqueFiles="ON"

.Set Cabinet=on

.Set DiskDirectory1=Package

"..\..\DeploymentFiles\ProductionDeployment\manifest.xml"  manifest.xml

"..\..\DeploymentFiles\FeatureFiles\feature.xml"      MyFeature\feature.xml

"..\..\DeploymentFiles\FeatureFiles\workflow.xml"     MyFeature\workflow.xml

"MyTarget.dll"      MyTarget.dll

;

;*** add IP forms

;"..\..\DeploymentFiles\FeatureFiles\MyForm.xsn"      MyFeature\MyForm.xsn

;*** <the end>

Aquí también tendremos que reemplazar  MyTarget y MyFeature y poner bien el path de la dll que luego se instalará en la GAC.

Si tenemos formularios de tareas también debemos añadir-los aquí. A su vez si los formularios de tareas tienen código también debemos poner sus dll correspondientes.

Un fichero de ejemplo quedaría de la siguiente forma:

;

;*************

; This ddf specifies the structure of the .wsp solution cab file. To customize this:

; 1. Replace "LiquidacionViajes" with the name of your own feature.

; 2. Add IP forms for the workflow at the bottom.

;*************

;

.OPTION EXPLICIT     ; Generate errors

.Set CabinetNameTemplate=LiquidacionViajes.wsp    

.set DiskDirectoryTemplate=CDROM ; All cabinets go in a single directory

.Set CompressionType=MSZIP;** All files are compressed in cabinet files

.Set UniqueFiles="ON"

.Set Cabinet=on

.Set DiskDirectory1=Package

"..\..\DeploymentFiles\ProductionDeployment\manifest.xml"  manifest.xml

"..\..\DeploymentFiles\FeatureFiles\feature.xml"      LiquidacionViajes\feature.xml

"..\..\DeploymentFiles\FeatureFiles\workflow.xml"     LiquidacionViajes\workflow.xml

"..\..\bin\Release\LiquidacionViajes.dll"   LiquidacionViajes.dll

;

;*** add IP forms

"..\..\DeploymentFiles\FeatureFiles\AutorizacionGasto.xsn"      LiquidacionViajes\AutorizacionGasto.xsn

"..\..\DeploymentFiles\FeatureFiles\AutorizacionSGEF.xsn"      LiquidacionViajes\AutorizacionSGEF.xsn

"..\..\DeploymentFiles\FeatureFiles\AutorizacionSGEF.dll"      LiquidacionViajes\AutorizacionSGEF.dll

"..\..\DeploymentFiles\FeatureFiles\LiquidViajeModificable.xsn"      LiquidacionViajes\LiquidViajeModificable.xsn

"..\..\DeploymentFiles\FeatureFiles\LiquidViajeModificable.dll"      LiquidacionViajes\LiquidViajeModificable.dll

"..\..\DeploymentFiles\FeatureFiles\Microsoft.Office.Samples.ECM.Activities.dll"     

LiquidacionViajes\Microsoft.Office.Samples.ECM.Activities.dll

;*** <the end>

Ahora ya podremos hacer la compilación:

Creamos un commandwindows (menú inicio->ejecutar->cmd) y nos vamos con el path donde está el fichero .ddf

En este punto ejecutamos el comando:

makecab /f wsp_structure.ddf

 

Esto nos creara un subdirectorio llamado Package donde contendrá nuestra solución WSP.

Para ver que tiene correctamente nuestros ficheros copiamos y pegamos el fichero haciendo una copia del mismo.

Renombramos la copia a extensión .cab y así podremos ver el contenido para comprobar que tenga todos los ficheros.

 

Para instalar la feature vamos a crear un script . Aparte de instalar la feature debemos copiar los xsn y las dll: install.bat

echo Copying the feature...

 

rd /s /q "%CommonProgramFiles%\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\LiquidacionViajes"

mkdir "%CommonProgramFiles%\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\LiquidacionViajes"

 

copy /Y feature.xml  "%programfiles%\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\LiquidacionViajes\"

copy /Y workflow.xml "%programfiles%\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\LiquidacionViajes\"

xcopy /s /Y *.xsn "%programfiles%\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\LiquidacionViajes\"

xcopy /s /Y *.dll "%programfiles%\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\LiquidacionViajes"

 

ECHO.

ECHO Adding and deploying the solution...

ECHO.

 

STSADM -o addsolution        -filename LiquidacionViajes.wsp"

STSADM -o deploysolution     -name LiquidacionViajes.wsp              -local                  -allowGacDeployment  -force

 

ECHO.

ECHO Activating and installing the feature...

ECHO.

 

STSADM -o installfeature     -filename LiquidacionViajes\feature.xml  -force

STSADM -o activatefeature    -filename LiquidacionViajes\feature.xml  -url http://moss/sites/WorkFlows  -force

 

::echo Doing an iisreset...

::popd

::iisreset

Para desinstalar haremos otro script: uninstall.bat

ECHO.

ECHO Deactiviating and uninstalling the feature...

ECHO.

 

STSADM -o deactivatefeature  -filename LiquidacionViajes\feature.xml  -url http://moss/sites/WorkFlows  -force

STSADM -o uninstallfeature   -filename LiquidacionViajes\feature.xml  -force

 

ECHO.

ECHO Retracting and deleting solution (if it exists)...

ECHO.

 

STSADM -o retractsolution    -name LiquidacionViajes.wsp              -local

STSADM -o deletesolution     -name LiquidacionViajes.wsp

diciembre 09
Como recuperar quien ha completado una tarea
Muchas veces una tarea se assigna a una persona pero damos permisos a personas para que también la puedan completar.
 
Si miramos la propiedad "Modificado por" de la tarea.
 
Con esta función dentro del Workflow podremos verla.
 

public string returnModifiedBy(int taskId)

        {

            Guid taskListID = workflowProperties.TaskListId;

            SPList taskList = workflowProperties.Web.Lists[taskListID];

            SPListItem taskItem = workflowProperties.TaskList.GetItemById(taskId);

            return taskItem["Editor"].ToString().Split('#')[1];

        }

 

octubre 16
workflowProperties.Item.Update() provoca OnwWorkflowActivated
Cuando hagais un workflow pensado en utilizar la opción del triger cuando el elemento ha cambiado.  Tened cuidado.
 
 
 
 
 
 
En todos los ejemplos cuando por codigo se modifica una property del propio elemento asociado sale:
 

workflowProperties.Item["Num Linea Objeto WF"] = NumLineaObjWF.ToString();

workflowProperties.Item.Update();

Pero realmente, al hacer el Update desencadena los eventos de item modificado con lo que en algun caso os entrara él solo en el primer evento del workflow llamado OnwWorkflowActivated.

Esto nos puede volver loco ya que seria el equivalente a un GOTO de VisualBasic totalmente Aleatorio.

Realmente, lo que nos interesa es actualizar el valor de la property sin desencadenar ningun evento.
Debeis utilitzar el metodo SystemUpdate()

SOLUCIÓN:

workflowProperties.Item["Num Linea Objeto WF"] = NumLineaObjWF.ToString();

workflowProperties.Item.SystemUpdate();

Saludos
 
 
agosto 12
Introducción Workflow sharepoint Services 3.0 y MOSS 2007
Este és un fantastico articulo EN CASTELLANO para introducirse en el mundo de Workflows para Sharepoint Services 3.0
 
 
Saludos
julio 29
Enviar un correo con adjunto (attachment) dentro de un Sharepoint Workflow
En este blog nos cuenta como hacer por codigo la forma de enviar un correo con attachment.
 
julio 04
Como desabilitar los controles de un TaskForm cuando la tarea esta completada o cancelada ?
Cuando una TaskForm esta completado pq un usuario lo ha rellenado y enviado se pone la propiedad interna de la tarea

["Completed"] = "1

en el ItemMetadata el TaskForm hemos de definir este campo para poder cogerlo desde el formulario de infopath.

De esta forma ponemos Reglas condicionales en todos los campos del infopath TaskForm para que si "Completed =1" enable =False.

NOTA: Cuando las tareas se cancelan, por ejemplo de un replicador se ha de poner manualmente la property Completed =1.

En este post sale una función para completar las tareas canceladas

http://www.ibetania.es/WFonSharePoint/Lists/Entradas%20de%20blog/Post.aspx?ID=6

 

1 - 10Siguiente