2009-03-04 8 views
2

Nous utilisons un formulaire infopath qui, lorsqu'il est soumis, est supposé déclencher un flux de travail .NET personnalisé. Fondamentalement, les informations contenues dans le formulaire sont utilisées pour créer un nouveau site SharePoint. Ce que je vois arriver, c'est que la première fois que le flux de travail s'exécute (ce qui est automatique après la soumission du formulaire), le flux de travail s'interrompt. Lorsque j'exécute le flux de travail manuellement immédiatement après l'échec, le flux de travail s'exécute correctement.Le flux de travail Sharepoint échoue lors de la première exécution mais réussit lorsqu'il est exécuté manuellement

this.workflowProperties.Item["Client Name"] 

J'ai débogué la question à la ligne ci-dessus où workflowProperties est de Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties de type. La première fois que le flux de travail s'exécute, la propriété listée ci-dessus (et toutes les autres) est nulle. La deuxième fois qu'il est exécuté, la propriété du nom du client est comme il se doit (renseignée à partir du formulaire infopath).

Une autre information importante est que ce flux de travail fonctionnait bien depuis plus d'un an et a soudainement commencé à ne pas fonctionner correctement il y a quelques semaines sans raison particulière. Nous avions quelques problèmes d'autorisations le mois dernier mais je ne vois pas comment cela pourrait être lié au problème de workflow. L'utilisateur auquel je suis connecté est un administrateur de collection de sites. J'utilise le même utilisateur pour lancer le flux de travail manuellement (ce qui réussit). Je ne pense pas que le workflow s'exécute en tant qu'utilisateur connecté (lorsqu'il est exécuté automatiquement lors de la soumission du formulaire).

Une autre pli intéressante à l'ensemble de la situation: il y a un total de 3 flux de travail personnalisés que l'application utilise. 2 ont été réalisés en studio visuel - l'un de ces travaux très bien et l'autre affiche le comportement décrit ci-dessus. Le dernier a été fait dans le concepteur de sharepoint et échoue. Je suis prêt à essayer à peu près n'importe quoi à ce stade. Je suis sur un serveur de développement (qui affiche les symptômes exacts en tant que production) afin que je puisse essayer à peu près n'importe quoi.

+0

Juste pour que tout le monde sait: nous utilisons WSS 3.0 sur un serveur Windows boîte 2003. Le flux de travail a été créé dans VS 2005 mais la solution a depuis été convertie en 2008. – sestocker

+0

J'ai rencontré ce même problème avec un flux de travail personnalisé. Le problème est qu'il échoue uniquement lorsque le formulaire InfoPath est envoyé depuis Vista ou Windows 7. Il fonctionne correctement lorsqu'il est envoyé depuis XP. Vos utilisateurs ont-ils basculé vers Vista ou Windows 7 avant que les défaillances ne se produisent? – Abs

+0

Ils étaient sur Windows Vista mais le workflow avait fonctionné correctement pendant plus de 6 mois avant le démarrage des pannes. – sestocker

Répondre

1

Je suppose que ceci a à voir avec le flux de travail lancé de manière asynchrone à partir de l'opération de validation qui définit les valeurs des champs. Pouvez-vous essayer d'extraire l'élément explicitement de la liste au lieu d'utiliser l'élément à partir des propriétés du flux de travail. quelque chose comme le suivant:

SPListItem l_item = 
     workflowProperties.Item.List.Items.GetItemById(
       workflowProperties.Item.Id 
    ); 

Je ne suis pas certain, mais cela peut valoir la peine d'essayer.

L'autre chose à garder à l'esprit est que l'objet SPContext.Current sera nul s'il est appelé depuis un EventReceiver, mais sera valide s'il est appelé manuellement. Cela ne semble pas être le problème, mais c'est quelque chose dont il faut quand même être conscient.

+0

Je suis en train d'essayer le code ci-dessus. J'ai inséré l'extrait de code exact ci-dessus - l_item n'est pas nul, ce qui peut être un bon signe. S'il vous plaît supporter avec moi - je suis un débutant sharepoint. – sestocker

+0

J'ai ajouté une modification ci-dessus. Serait-il possible que les autorisations puissent jouer un rôle dans le problème? Lorsque j'ouvre le flux de travail, je suis connecté en tant qu'administrateur de la collection de sites. – sestocker

+0

l'autorisation a-t-elle été modifiée sur la liste sous-jacente? si l'utilisateur n'a pas l'autorisation de créer un nouveau listitem, peut-il avoir lancé le workflow qui vérifie alors une valeur qui n'existe pas? Pouvez-vous vous connecter avec un compte différent et tester avec différentes autorisations? – Jason

0

Essayez de rechercher dans vos journaux SharePoint.

Ils sont situés sous la 12-Hive dans le dossier LOGS - ouvrez les plus récents et cherchez quelque chose avec «infrastructure de flux de travail», peut-être que vous pouvez pointer dans la bonne direction.

0

La "solution" consistait à effectuer une exportation et un transfert vers un nouveau serveur. Fondamentalement, il suffit d'utiliser STSADM pour effectuer l'opération d'exportation, puis importer le même fichier sur le nouveau serveur.

VOIR:

http://sharepointdogs.wordpress.com/2008/07/30/content-migration-or-backuprestore-in-moss-2007/

J'étais au téléphone avec le support Microsoft pendant des heures sur cette question - le transfert vers un nouveau serveur serait ma recommandation pour quelqu'un d'autre qui pourrait rencontrer ce problème.

1

Si les formulaires InfoPath sont soumis à partir d'un ordinateur Vista ou Win 7, vous pouvez rencontrer ce problème d'obtention d'une valeur NULL pour les champs dans le formulaire InfoPath. Essayez d'ajouter une activité de délai d'environ 10 secondes et vérifiez si vous pouvez obtenir la valeur des champs à partir d'InfoPath.

Se reporter à ce lien pour plus de détails: Why does my SharePoint workflow fail when the client is running Vista or Windows 7?

Questions connexes