Précédent   Forum des professionnels en informatique > Dotnet > Général Dotnet > Développement Office System > SharePoint
SharePoint Forum d'entraide sur Microsoft Office SharePoint Server et Windows SharePoint Services.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 07/09/2010, 08h57   #1
Membre Expert
 
Inscription : mai 2004
Messages : 884
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2004
Messages : 884
Points : 1 106
Points : 1 106
Par défaut Déclenchement par code d'un workflow manuel

Bonjour,

J'ai un workflow qui n'est que manuel et je souhaiterais qu'il le reste.

Par contre j'aimerais pouvoir implémenter du traitement groupé de données, ce qui basiquement impliquerait de lancer ce workflow autant de fois qu'il y a d'éléments sélectionnés. Y'a-t-il une méthode en js ou code behind, un appel rtc ou webservice permettant de se substituer à l'événement clic du bouton "démarrer" d'un workflow de liste ?
nonoxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2010, 10h26   #2
Membre éprouvé
 
Homme
Formateur en informatique
Inscription : mai 2007
Messages : 481
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique

Informations forums :
Inscription : mai 2007
Messages : 481
Points : 470
Points : 470
Solution compliquée... il faut peut-être revoir le problème !
Un workflow de site ne convient pas ?
__________________
Jean-François Fustec - Consultant Formateur - Sharepoint Infopath Lotus
jff42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2010, 14h01   #3
Membre Expert
 
Inscription : mai 2004
Messages : 884
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2004
Messages : 884
Points : 1 106
Points : 1 106
Pour l'instant à part un event handler je n'ai pas trouvé d'autre solution. Je cherche encore un peu du côté des rtc et des webservices mais sans grand espoir.

Le souci c'est que le workflow est déjà en production et a été implémenté sur un mode adhoc, ce qui convient parfaitement à la problématique initiale. A la limite, une bonne analyse de code sur les formulaires générés devrait m'en dire plus, mais c'est assez chronophage.
nonoxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2010, 11h28   #4
Membre Expert
 
Inscription : mai 2004
Messages : 884
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2004
Messages : 884
Points : 1 106
Points : 1 106
Par défaut Erreur de Code Access Security ???

Bonjour,

J'ai avancé sur ma problématique au moyen d'un Generic Handler (ashx) qui fait appel à ma classe handler ci-après. Par contre, gros souci sur lequel je n'arrive plus à avoir assez de recul, il est impossible de modifier les éléments avec cette méthode (car visiblement le code est appelé d'un contrôle UI) donc pouvez-vous m'aider à passer outre cette erreur :

Citation:
Actuellement, les mises à jour ne sont pas autorisées sur les requêtes GET. Pour autoriser les mises à jour sur une requête GET, définissez la propriété 'AllowUnsafeUpdates' sur SPWeb.
Je ne pense pas que c'est une erreur CAS car mon web.config est ok pour la partie SafeControls. J'ai tenté de repositionner mes allowunsafeupdates dans le code, rien n'y fait. Peut-être cela est-il lié au SPContext ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public class MultiActionWFHandler : IHttpHandler
{
	private static void StartWF(SPListItem listItem, Guid WorkflowID)
	{
		SPWorkflowManager oWorkflowMgr = null;
		oWorkflowMgr = listItem.Web.Site.WorkflowManager;
		foreach (SPWorkflowAssociation wfasso in listItem.ParentList.WorkflowAssociations)
		{
			if (wfasso.Enabled)
			{
				if (wfasso.Id.Equals(WorkflowID))
				{
					oWorkflowMgr.StartWorkflow(listItem, wfasso, wfasso.AssociationData);
					break;
				}
			}
		}
	}
 
	public void ProcessRequest(HttpContext context)
	{
		NameValueCollection queryString = context.Request.QueryString;
		string paramList = queryString["List"]; //Guid de la liste
		string paramWFID = queryString["WFID"]; //Guid du Workflow à lancer
		string paramItem = queryString["Items"]; //Collection d'items ID séparé par ,
 
		SPWeb web = SPContext.Current.Web;
		SPList list = web.Lists[new Guid(paramList)];
		bool allowUnsafeUpdates = web.AllowUnsafeUpdates;
		bool allowsiteUnsafeUpdates = web.Site.AllowUnsafeUpdates;
		try
		{
			web.AllowUnsafeUpdates = true;
			web.Site.AllowUnsafeUpdates = true;				
			Guid WorkflowID = new Guid(paramWFID);
			if (!string.IsNullOrEmpty(paramItem))
			{
				foreach (string oneItem in paramItem.Split(new char[] { ',' }))
				{
					int num;
					if (int.TryParse(oneItem, out num))
					{
						SPListItem itemById = list.GetItemById(num);
						StartWF(itemById, WorkflowID);
					}
				}
			}
		}
		finally
		{
			web.AllowUnsafeUpdates = allowUnsafeUpdates;
			web.Site.AllowUnsafeUpdates = allowsiteUnsafeUpdates;
		}
	}
 
	public bool IsReusable
	{
		get{return true;}
	}
}

Dernière modification par Deepin ; 17/09/2010 à 16h36. Motif: Balises [QUOTE]...[/QUOTE] au lieu de [CODE]...[/CODE]
nonoxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2010, 11h41   #5
Membre Expert
 
Inscription : mai 2004
Messages : 884
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2004
Messages : 884
Points : 1 106
Points : 1 106
Pour me répondre et faire un point sur les méthodes existantes :
Citation:
Envoyé par nonoxp Voir le message
Y'a-t-il une méthode en js
Oui, avec un petit script AJAX ça devrait passer car on peut piloter le formulaire généré par SharePoint (pas testé).
Citation:
Envoyé par nonoxp Voir le message
ou code behind
Bien sûr, il faut juste faire appel à la fonction StartWorkflow du SPWorkflowManager. Le plus long est de packager ça proprement et faire en sorte que les appels successifs à cette méthode ne bloquent pas le serveur web (passer par de l'asynchrone sinon au moyen d'un job).
Citation:
Envoyé par nonoxp Voir le message
un appel rpc
Pas à ma connaissance, sauf à faire un WF automatique basé sur la modification d'un champ au moyen de la commande Save qui fait appel à une custom activity "Start another workflow" (un peu trop alambiqué à mon goût).
Citation:
Envoyé par nonoxp Voir le message
ou webservice
Oui, mais sur Moss avec le /_vti_bin/workflow.asmx
nonoxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2010, 13h29   #6
Membre Expert
 
Inscription : mai 2004
Messages : 884
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2004
Messages : 884
Points : 1 106
Points : 1 106
Personne n'a une petite piste par rapport à mon erreur ?
Citation:
Actuellement, les mises à jour ne sont pas autorisées sur les requêtes GET. Pour autoriser les mises à jour sur une requête GET, définissez la propriété 'AllowUnsafeUpdates' sur SPWeb.
N'importe quoi qui m'aide à contourner ce problème ? Une exécution en asynchrone ? Un handler ? Un timerjob ?
nonoxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2010, 13h28   #7
Expert Confirmé Sénior

 
Avatar de Ditch
 
Didier Danse
Inscription : mars 2003
Messages : 4 136
Détails du profil
Informations personnelles :
Nom : Didier Danse
Âge : 30

Informations forums :
Inscription : mars 2003
Messages : 4 136
Points : 4 540
Points : 4 540
Envoyer un message via MSN à Ditch Envoyer un message via Skype™ à Ditch
Pourquoi ne pas suivre la recommandation de la description de l'erreur?
__________________

Didier Danse

Most Valuable Profesionnal SharePoint
Microsoft Certified Application Developer
Mes articles sur developpez.com
Mon site perso

Ditch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2010, 19h23   #8
Membre Expert
 
Inscription : mai 2004
Messages : 884
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2004
Messages : 884
Points : 1 106
Points : 1 106
Citation:
Envoyé par Ditch Voir le message
Pourquoi ne pas suivre la recommandation de la description de l'erreur?
C'est ce que je pense avoir pourtant fait (voir code try/catch message précédent). Est-ce mal fait ? Là est la question...
nonoxp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2010, 15h19   #9
Expert Confirmé Sénior

 
Avatar de Ditch
 
Didier Danse
Inscription : mars 2003
Messages : 4 136
Détails du profil
Informations personnelles :
Nom : Didier Danse
Âge : 30

Informations forums :
Inscription : mars 2003
Messages : 4 136
Points : 4 540
Points : 4 540
Envoyer un message via MSN à Ditch Envoyer un message via Skype™ à Ditch
Citation:
Envoyé par nonoxp Voir le message
C'est ce que je pense avoir pourtant fait (voir code try/catch message précédent). Est-ce mal fait ? Là est la question...
Effectivement, sorry, je ne l'avais pas vu ;-) Du coup j'ai pas d'idée comme cela sans le tester..
__________________

Didier Danse

Most Valuable Profesionnal SharePoint
Microsoft Certified Application Developer
Mes articles sur developpez.com
Mon site perso

Ditch est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 18h14.


 
 
 
 
Partenaires

Hébergement Web