J'écris une activité personnalisée pour le flux de travail SharePoint et je ne sais pas comment je peux utiliser l'élément de flux de travail actuel, SPWEB ou SPSITE. P>
Je vois Peut-être qu'il y a une autre solution de code unique pour obtenir un élément de contexte dans l'activité de flux de travail? P>
6 Réponses :
Jetez un coup d'oeil au SPWORDFLOWACTIVATIONPROPERTES. Propriété d'article P>
Obtient l'élément de liste sur lequel l'instance de flux de travail est en cours d'exécution. P> blockQuote>
Hm .. Je met en œuvre ma propre activité de la classe de base de séquencitation. Où puis-je trouver une instance SPWORDFLOWACTIVATIONPropriétés dans ce cas?
La réponse à ceci est quelques étapes:
protected override ActivityExecutionStatus Execute(ActivityExecutionContext provider)
{
Output = string.Empty;
try
{
SPWeb web = __Context.Web;
// get all of the information we currently have about the item
// that this workflow is running on
Guid listGuid = new Guid(__ListId);
SPList myList = web.Lists[listGuid];
SPListItem myItem = myList.GetItemById(__ListItem);
//...
}
catch (Exception e)
{
//...
}
return ActivityExecutionStatus.Closed;
}
Merci, cette solution m'a aidé.
Bonne et approfondie de réponse. Merci!
Merci! Et quand avons-nous besoin d'activationProperties?
J'ai ajouté System.WindowsBase pour l'obtenir pour reconnaître "DépendanceProperty" et System.workflow, mais j'ai toujours des tonnes d'erreurs partout en raison de "Utilisation" manquantes: /
Kit La réponse de Menke est très complète et couvre à peu près tout ce dont vous avez besoin: j'ajouterais seulement les éléments suivants ...
Si vous faites ceci: p> de ceci: p> alors vous êtes libre du contexte de sécurité transmis au flux de travail par la personne qui l'a déclenché. p> p>
J'essaie ce code et exécute aussi bien que BAT BAT L'objet contextuel est toujours NULL. Quelqu'un sache pourquoi? MERCI P> P>
Je suppose que c'est parce que cela est enveloppé dans le bloc RunwithheEvilevilegesProvileges. Je pense que vous devrez passer l'identité du site d'une autre manière?
Je ne sais pas si c'est trop facile, mais j'ai utilisé: pour obtenir l'élément dans le flux de travail (une liste), puis modifier les éléments dans la liste p> p>
Je ne sais pas si ceci est une modification de l'API de 2010, mais la propriété __Context fournit toutes les pièces nécessaires, y compris la liste et l'élément. L'exemple ci-dessous comprend la suggestion de @ Davek pour éliminer le contexte de sécurité:
var contextWeb = __Context.Web; var site = new SPSite(contextWeb.Url); var web = site.OpenWeb(); var list = web.Lists[new Guid(__Context.ListId)]; var item = list.GetItemById( __Context.ItemId);
J'ai tout fait comme décrit ici, et pourtant mon contexte est toujours aussi nul aussi. Je codifie une activité de SPDesigner personnalisée basée sur la séquencitivité. Encore plus, lorsque j'essaie d'éditer le WF dans SharePoint Designer, je ne peux pas l'enregistrer à cause d'une erreur.