Custon Activity para Sharepoint Designer (WorkFlows)

02/10/2007 - 14:07 por Salva Garate | Informe spam
Hola,
Me he creado una custom activity en VS2005 para añadirla en Sharepoint
Designer. La actividad lo único que hace es crear una biblioteca de
documentos en un site cuando se mete un nuevo elemento en la librería donde
se aplica el workflow. Hasta aqui todo correcto, el workflow funciona.
He leído un articulo en
http://www.gavd.net/servers/sharepo...&itm54 y me
parece interesante lo referente a los parámetros:

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

He cambiado mi Workflow con el fin de poder hacer referencia por código en
VS2005 a dichos parámetros:
En el archivo WSS.ACTIONS he añadido los 3 parametros mencionados:
<Action Name="Crear libreria de documentos"
ClassName="Actividad_CrearBiblioteca_WF.Activity1"
Assembly="Actividad_CrearBiblioteca_WF, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=2e23dcf2dc1187aa"
AppliesTo="all"
Category="Acciones de lista">
<RuleDesigner Sentence="Create document library %1 on %2.">
<FieldBind Field="Url" Text="Link al sitio" Id="1" DesignerType="TextArea"
/>
<FieldBind Field="ListName" Text="Nombre de la libreria" Id="2"
DesignerType="TextArea"/>
</RuleDesigner>
<Parameters>
<Parameter Name="Url" Type="System.String, mscorlib" Direction="In" />
<Parameter Name="ListName" Type="System.String, mscorlib" Direction="In" />

<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>
En Visual Studio 2005 los he definido:


public static DependencyProperty __ContextProperty =
DependencyProperty.Register("__Context", typeof(WorkflowContext),
typeof(Activity1));
public static DependencyProperty ListIdProperty =
DependencyProperty.Register("ListId", typeof(string), typeof(Activity1));
public static DependencyProperty ListItemProperty =
DependencyProperty.Register("ListItem", typeof(int), typeof(Activity1));

[ValidationOption(ValidationOption.None)]
public WorkflowContext __Context
{
get{return (WorkflowContext)base.GetValue(__ContextProperty);}
set{base.SetValue(__ContextProperty, value);}
}

[ValidationOption(ValidationOption.Required)]
public string ListId
{
get{return (string)base.GetValue(ListIdProperty);}
set{base.SetValue(ListIdProperty, value);}
}

[ValidationOption(ValidationOption.Required)]
public int ListItem
{
get{return (int)base.GetValue(ListItemProperty);}
set{base.SetValue(ListItemProperty, value);}
}

Luego hago referencia a ellos:

...
protected override ActivityExecutionStatus Execute(ActivityExecutionContext
executionContext)
{
try
{
// QUiero saber que informacion puedo sacar de ellos..
WriteInLog("Context: " + __Context.Site.Url);
WriteInLog("ListId: "+ListId.ToString());
WriteInLog("ListItem: " + ListItem.ToString());

Compilo el proyecto de Visual y no me da ningun problema

El problema viene cuando quiero utilizar esta nueva actividad en Sharepoint
Designer. Antes de los cambios solo metía la url del sitio donde iba a crear
la biblioteca y el nombre de la biblioteca. Ahora meto esos dos datos pero
Sharepoint Designer me dice que faltan campos obligatorios por rellenar,
supongo que se refiere a los 3 nuevos parámetros( __Context, ListID y
ListItem). Hay que hacer algo en el designer para dar valores a estos campos?
No consigo activar el WorkFlow.

Gracias de antemano

Salva Garate

He mirado diferentes webs pero no he coseguido resultados:

http://blogs.microsoft.co.il/blogs/...plate.aspx

http://www.ideseg.com/AddCustomWork...Part1.aspx

http://glorix.blogspot.com/2007_03_01_archive.html

http://www.codeproject.com/useritem...print=true
 

Leer las respuestas

#1 Salva Garate
02/10/2007 - 17:00 | Informe spam
Hola soy yo otra vez, he conseguido arreglar el problema siguiendo los
siguientes pasos:

1- Mirar los que ya están definidos en el archivo WSS.ACTIONS, ruta:
C:\Archivos de programa\Archivos comunes\Microsoft Shared\web server
extensions\12\TEMPLATE\3082\Workflow

2- Abrir con el Reflector el archivo Microsoft.Sharepoint.WorkFlowActions
que esta en la ruta:

C:\Archivos de programa\Archivos comunes\Microsoft Shared\web server
extensions\12\ISAPI

Un Saludo

"Salva Garate" wrote:

Hola,
Me he creado una custom activity en VS2005 para añadirla en Sharepoint
Designer. La actividad lo único que hace es crear una biblioteca de
documentos en un site cuando se mete un nuevo elemento en la librería donde
se aplica el workflow. Hasta aqui todo correcto, el workflow funciona.
He leído un articulo en
http://www.gavd.net/servers/sharepo...&itm54 y me
parece interesante lo referente a los parámetros:

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

He cambiado mi Workflow con el fin de poder hacer referencia por código en
VS2005 a dichos parámetros:
En el archivo WSS.ACTIONS he añadido los 3 parametros mencionados:
<Action Name="Crear libreria de documentos"
ClassName="Actividad_CrearBiblioteca_WF.Activity1"
Assembly="Actividad_CrearBiblioteca_WF, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=2e23dcf2dc1187aa"
AppliesTo="all"
Category="Acciones de lista">
<RuleDesigner Sentence="Create document library %1 on %2.">
<FieldBind Field="Url" Text="Link al sitio" Id="1" DesignerType="TextArea"
/>
<FieldBind Field="ListName" Text="Nombre de la libreria" Id="2"
DesignerType="TextArea"/>
</RuleDesigner>
<Parameters>
<Parameter Name="Url" Type="System.String, mscorlib" Direction="In" />
<Parameter Name="ListName" Type="System.String, mscorlib" Direction="In" />

<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>
En Visual Studio 2005 los he definido:


public static DependencyProperty __ContextProperty =
DependencyProperty.Register("__Context", typeof(WorkflowContext),
typeof(Activity1));
public static DependencyProperty ListIdProperty =
DependencyProperty.Register("ListId", typeof(string), typeof(Activity1));
public static DependencyProperty ListItemProperty =
DependencyProperty.Register("ListItem", typeof(int), typeof(Activity1));

[ValidationOption(ValidationOption.None)]
public WorkflowContext __Context
{
get{return (WorkflowContext)base.GetValue(__ContextProperty);}
set{base.SetValue(__ContextProperty, value);}
}

[ValidationOption(ValidationOption.Required)]
public string ListId
{
get{return (string)base.GetValue(ListIdProperty);}
set{base.SetValue(ListIdProperty, value);}
}

[ValidationOption(ValidationOption.Required)]
public int ListItem
{
get{return (int)base.GetValue(ListItemProperty);}
set{base.SetValue(ListItemProperty, value);}
}

Luego hago referencia a ellos:

...
protected override ActivityExecutionStatus Execute(ActivityExecutionContext
executionContext)
{
try
{
// QUiero saber que informacion puedo sacar de ellos..
WriteInLog("Context: " + __Context.Site.Url);
WriteInLog("ListId: "+ListId.ToString());
WriteInLog("ListItem: " + ListItem.ToString());

Compilo el proyecto de Visual y no me da ningun problema

El problema viene cuando quiero utilizar esta nueva actividad en Sharepoint
Designer. Antes de los cambios solo metía la url del sitio donde iba a crear
la biblioteca y el nombre de la biblioteca. Ahora meto esos dos datos pero
Sharepoint Designer me dice que faltan campos obligatorios por rellenar,
supongo que se refiere a los 3 nuevos parámetros( __Context, ListID y
ListItem). Hay que hacer algo en el designer para dar valores a estos campos?
No consigo activar el WorkFlow.

Gracias de antemano

Salva Garate

He mirado diferentes webs pero no he coseguido resultados:

http://blogs.microsoft.co.il/blogs/...plate.aspx

http://www.ideseg.com/AddCustomWork...Part1.aspx

http://glorix.blogspot.com/2007_03_01_archive.html

http://www.codeproject.com/useritem...print=true

Preguntas similares