Acciones de flujos de trabajo personalizadas en SharePoint Designer (1)

Sin duda una de las mejores cosas de MOSS 2007 es el nuevo SPD, y dentro de este, el diseñador de flujos de trabajo, que nos permite de forma ágil y sencilla diseñar nuestros flujos de trabajo.

Aunque como he comentado en otras ocasiones, si deseamos realizar flujos de trabajo más complejos, o máquinas de estados debemos usar Visual Studio.

SPD, solo nos permite realizar workflows secuenciales con las actividades que vienen predeterminadas. Sin embargo existe la posibilidad de ampliar las actividades básicas que nos encontramos dentro de SPD, con lo cual podemos extender la funcionalidad de nuestros workflows sin llegar a realizarlos completamente en Visual Studio.

De manera predeterminada, SharePoint Designer incluye 22 acciones.



Estas acciones se encuentran definidas en el archivo WSS.ACTIONS, que se encuentra en “C:Archivos de programaArchivos comunesMicrosoft Sharedweb server extensions12TEMPLATE3082Workflow”.

En este archivo se encuentran definidas tanto las condiciones como las acciones que figuran dentro de SPD.
<Condition Name=”Creado en un intervalo de fechas determinado”
FunctionName=”CreatedInRange”
ClassName=”Microsoft.SharePoint.WorkflowActions.Helper”
Assembly=”Microsoft.SharePoint.WorkflowActions,
                  Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”

AppliesTo=”list”
UsesCurrentItem=”true”>
<RuleDesigner Sentence=”creado entre %1 y %2″>
<FieldBind Id=”1″ Field=”_1_” Text=”fecha” DesignerType=”Date”/>
<FieldBind Id=”2″ Field=”_2_” Text=”fecha” DesignerType=”Date”/>
</RuleDesigner>
<Parameters>
<Parameter Name=”_1_” Type=”System.DateTime, mscorlib” Direction=”In”/>
<Parameter Name=”_2_” Type=”System.DateTime, mscorlib” Direction=”In”/>
</Parameters>
</Condition>
En donde podemos ver el ensamblado que se ocupa de manejar la condición, a que elementos se aplica y si es posible usar el ítem actual del workflow.

Dentro de la condición tenemos la regla para el diseñador, con el texto que va a aparecer, cada regla usa una serie de campos los tags FieldBind, que se enlazan con los parámetros necesarios en el ensamblado.

Cada tag FieldBind tiene un identificador ID que se corresponde con la posición del campo dentro de la sentencia ID=1 será %1 en la sentencia.

También podemos ver atributos como Text que será el texto por defecto y el tipo de campo DesignerType.

Después tenemos la sección de Parameters con los distintos parámetros que se pasarán al ensamblado. El atributo Name ha de corresponderse con el atributo Field del tag FieldBind, y tenemos la dirección del parámetro In para entradas y Out para las salidas.


<Action Name=”Establecer estado de aprobación del contenido”
ClassName=”Microsoft.SharePoint.WorkflowActions.SetModerationStatusActivity”
Assembly=”Microsoft.SharePoint.WorkflowActions, Version=12.0.0.0,
               Culture=neutral, PublicKeyToken=71e9bce111e9429c”

AppliesTo=”list”
ListModeration=”true”
Category=”Acciones principales”
UsesCurrentItem=”true”>
<RuleDesigner Sentence=”Establecer estado de aprobación del contenido en %1 con %2″>
<FieldBind Field=”ModerationStatus” DesignerType=”Dropdown” Id=”1″ Text=”este estado”>
<Option Name=”Aprobado” Value=”Approved”/>
<Option Name=”Rechazado” Value=”Denied”/>
<Option Name=”Pendiente” Value=”Pending”/>
</FieldBind>
<FieldBind Field=”Comments” Text=”comentarios” Id=”2″ DesignerType=”TextArea” />
</RuleDesigner>
<Parameters>
<Parameter Name=”ModerationStatus” Type=”System.String, mscorlib” Direction=”In” />
<Parameter Name=”Comments” Type=”System.String, mscorlib” Direction=”Optional” />
<Parameter Name=”__Context”
      Type=”Microsoft.SharePoint.WorkflowActions.WorkflowContext, Microsoft.SharePoint.WorkflowActions” />
<Parameter Name=”__ListId” Type=”System.String, mscorlib” Direction=”In” />
<Parameter Name=”__ListItem” Type=”System.Int32, mscorlib” Direction=”In” />
</Parameters>
</Action>

A continuación vamos a ver como se ven las acciones en este mismo archivo, son muy similares a las condiciones.

La primera parte incluye el ensamblado que se ocupará de manejar  la acción.    

La segunda, las reglas para el diseñador. En este caso los campos que usa son un combobox (DesignerType=”Dropdown”) y una línea de texto (DesignerType=”TextArea”)

La tercera parte la de los parámetros además de utilizar los dos primeros campos definidos en la regla del diseñador, podemos ver que usa tres parámetros adicionales que son:

__Context : que es el contexto del flujo de trabajo.
__ListId
: el id de la lista con la que estamos trabajando
__ListItem:  el ítem actual

Con estos tres campos (que están preestablecidos, de modo que podemos usarlos siempre que queramos) tenemos control  tanto sobre la lista como sobre el flujo de trabajo que se está llevando a cabo.


No existe un archivo XSD, para este tipo de archivos, por el momento.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *