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