Archives Catégorie: Flux de travail SharePoint

Créer des Sites (SPWeb) par le biais de flux de travail SharePoint Designer

Cette entrée de blog c'est plus un « dans le domaine du possible" entrée vs. info béton.

Nous avons une conception technique qui appelle pour nous de créer un site dans une collection de sites via un processus de workflow lancé manuellement. Essentiellement, utilisateurs de saisir des données dans un « nouveau client" liste personnalisée, puis quand ils ont terminé et validé le processus d'entrée de données, Nous avons besoin de créer un site pour ce client.

Je suis un grand fan de flux de travail déclaratif ainsi comme un programmeur de flux de travail faible visual studio, Si je voulais répondre à l'exigence relative à l'aide de SharePoint Designer.

J'ai l'intention d'écrire sur ce sujet plus en détail (et je l'espère présenter à un groupe d'utilisateurs ou deux dans l'année à venir), mais voici la solution globale:

  • Créer une action personnalisée qui s'intègre avec le SPD.
  • L'action personnalisée permet de SPD à invoquer un service web et la transmettre une chaîne XML.
  • Service Web localise la ligne dans la liste personnalisée et crée un nouveau site selon les données pour ce nouveau client à l'aide d'une définition de site personnalisé.
  • Service Web puis met à jour la liste personnalisée avec certaines informations, comme un lien vers le nouveau site.

Nous avons considéré les autres approches, comme les gestionnaires d'événements et de flux de travail visual studio basé. L'approche de la SPD donne à nos utilisateurs un peu plus de contrôle sur le processus. Accordée, Il y a beaucoup de code c# dans cette solution, mais qu'il est encapsulé à l'intérieur d'un flux de travail déclaratif, Nous recevons ainsi certains des avantages du flux de travail déclaratif tandis qu'accrocher dans le service de création de site.

Tout ce que nous besoin maintenant est un outil facile à migrer automatiquement les flux de travail SPD aussi facilement que possible pour les flux de travail de studio visuel et nous allons vraiment être la cuisine au gaz 🙂 Je comprends que certaines gens sont partis travailler là sur ce problème et j'espère qu'ils ont un certain succès avec elle bientôt.

</fin>

S'abonner à mon blog.

Tags Technorati: ,

Intégrer les flux de travail SharePoint Designer avec les Services Web

J'ai été jouer avec des actions personnalisées pour SharePoint Designer pendant un certain temps (voir ici pour des trucs détaillés, Si qui vous intéresse).

Dans mon projet actuel, Nous devons faire certains assez gros et que nous voulons utiliser le flux de travail déclaratif SPD pour gérer le processus métier associé.

Longue histoire courte, C'est tout à fait possible. J'ai prolongé mon projet Codeplex pour appeler un service d'assistance de »" et maintenant nous pouvons invoquer un service web directement depuis un flux de travail SPD.

Voici la signature:

 public chaîne Répartiteur(
        GUID WebID, // Adoptée par l'environnement d'exécution
        GUID SiteID, // Adoptée par l'environnement d'exécution
        chaîne ListID, // Adoptée par la RTE (ne sais pas pourquoi il s'agit d'une chaîne, pas un GUID)
        int ListItemID, // Adoptée par la RTE.
        chaîne XmlMessage) // Transmis par l'utilisateur comme déclarée dans le SPD.

Cela tire parti du fait que nous pouvons obtenir d'information important flux de travail, comme le site, ID de la liste, etc.. C'est bien documenté dans plusieurs endroits pour ceux d'entre vous intéressés par la création de vos propres actions personnalisées. L'idée est d'extraire la chaîne XML fourni par l'utilisateur d'envoyer une procédure appropriée. Fun stuff!

Malheureusement, C'est évidemment un billet aller simple à « Loosey Goosey" Terre anti-pattern, mais il vaut mieux que de frapper un mur de briques 🙂

Est-ce un CRUDy si vous le faites même si vous savez que c'est un CRUDy?

J'espère pour cela enrouler à l'intérieur de Codeplex dans un proche avenir. Si vous êtes intéressé à me faire, Give me poke (Messagerie ou laisser un commentaire) et je serai que plus enthousiastes à l'idée de le faire 🙂

</fin>

S'abonner à mon blog.

Tags Technorati: ,

SPD Workflow “Recueillir des données d'un utilisateur”: Modifier la forme de travail généré

Je travaille sur un projet qui utilise cinq différents flux de travail SharePoint Designer pour gérer des approbations de documents. SPD fournit la « collecte de données d'un utilisateur" action afin que nous puissions invite l'utilisateur à différents bits d'information, comme si ils homologuent il, certains commentaires et peut-être nous demander ce qu'ils avaient pour le dîner l'autre soir.

Les formes sont parfaitement fonctionnels. Ils sont liés à une liste de tâches comme un type de contenu. Ils sont 100% générées par le système. Il s'agit de leur force et leur faiblesse. Si nous pouvons vivre avec le formulaire par défaut, puis nous voilà prêt à partir. Cependant, Nous n'avons pas trop de contrôle sur comment SPD crée la forme. Si nous n'aimons pas ce comportement par défaut, Nous avons besoin d'avoir recours à diverses astuces pour obtenir autour d'elle (par exemple, définition de priorité sur une tâche).

J'avais besoin de fournir un lien sur ces formes de travail qui ouvrent les propriétés du point de vue (DispForm.asxp) de l'élément « connexe" dans une nouvelle fenêtre. Cela donne accès en un clic pour les métadonnées de l'élément associé. C'est ce que je veux dire:

image

Heureusement, Nous pouvons le faire et il n'est pas très difficile. Grosso modo, incendie de SPD, Accédez au répertoire qui héberge les fichiers de flux de travail et ouvrez le fichier ASPX à modifier. Voici les instructions de transformation XSL simplement classiques et si vous avez mucked avec itemstyle.xsl, recherche ou autres scénarios XSL, ce sera facile pour vous. En fait, J'ai trouvé il est généralement plus facile puisque le formulaire généré est un peu plus facile à suivre par rapport à un composant WebPart résultats principaux de recherche (ou la CWQP cauchemardesque).

Bien sûr, Il y a un écueil majeur. Éditeur de workflow du SPD s'attend à un contrôle total sur ce fichier. Si vous modifiez, SPD va écraser joyeusement votre donner de changements le droit ensemble de circonstances. J'ai fait deux tests rapides pour voir à quel point cela pouvait obtenir. Ils ont tous deux supposent que vous avez conçu un flux de travail SPD valide qui utilise la "collecte de données d'un utilisateur" étape.

Test 1:

  • Modifier le fichier ASPX à la main.
  • Mettre à l'épreuve (Vérifiez que vos modifications ont été correctement enregistrées et n'a pas briser rien).
  • Ouvrir le flux de travail et d'ajouter une action indépendante (comme le « journal de l'histoire »).
  • Enregistrer le flux de travail.

Résultat: Dans ce cas, SPD ne pas recréer la forme.

Test 2:

  • Faire la même chose : #1 sauf directement modifier la « collecte de données d'un utilisateur" action.

Résultat: Cela recrée la forme à partir de zéro, écraser vos modifications.

Notes finales:

  • Au moins deux actions de SPD créer des formulaires comme ceci: « Collecte de données d'un utilisateur" et « Assign pour faire le point ». Deux de ces actions’ formes peuvent être modifiés manuellement.
  • J'ai été capable de générer mon lien vers dispform.aspx parce que, dans ce cas, l'article relate a toujours son ID incorporé dans l'URL de l'article connexe. J'ai pu extraire et ensuite construire une <a href> basé sur lui pour fournir la fonctionnalité d'accès un clic meta données. Il est peu probable que votre URL suit cette règle. Il peut y avoir d'autres façons d'obtenir l'ID de l'élément connexe, mais je n'ai pas eu à traverser ce pont, donc je ne sais pas si obtient de l'autre côté de l'abîme.
  • Je n'avait pas étudier, mais je ne serais pas surpris si il y a une sorte de fichier modèle dans la 12 la ruche que je pourrais modifier affecter comment SPD génère les formulaires par défaut (comme nous pouvons modifier les modèles de l'alertes).

</fin>

S'abonner à mon blog!

Solution (en quelque sorte): Définir la priorité sur une tâche à l'aide de SharePoint Designer

J'ai un scénario d'entreprise comme ceci:

  • Un utilisateur télécharge un document dans une bibliothèque de documents.
  • Elle choisit un type de contenu et pénètre dans les meta-données au besoin. Les champs de données meta est un drapeau, « Urgent ».
  • Cela déclenche un flux de travail SharePoint Designer qui, entre autres choses, utilise le "recueillir des données d'un utilisateur" action.

« Collecte de données d'un utilisateur" crée un élément dans une liste de tâches demandant l'approbation de ce document.

J'avais besoin de créer un point de vue de la liste des tâches qui ont montré des demandes urgentes pour l'approbation.

Solution: Mettre le mot « URGENT:" dans le titre de ces tâches.

J'aurais préféré spécifier le champ priorité directement. Cependant, J'ai été incapable de le faire pour plusieurs raisons:

  1. L'action de collecte de données ne fournit pas un mécanisme pour mettre à jour un champ autre que le titre (et ces champs supplémentaires pour lesquels vous souhaitez collecter des données).
  2. Le « attribuer une pour le point" action a le même problème.
  3. Il est possible d'insérer un élément dans une liste (i.e. insérer un élément dans la liste des tâches directement) mais cela pas une action de blocage. Cela signifie que le flux de travail n'attendra pas l'utilisateur effectuer cette tâche.

J'ai examiné quelques approches avant (Heureusement) réalisation que nous pourrions juste mis « urgent" dans le titre.

  1. Démarrer un workflow sur la liste des tâches de sorte que lorsqu'une nouvelle tâche est créée, elle d'une certaine façon cross références arrière vers le document qui a commencé le premier flux de travail, extraire la valeur d'indicateur urgent et mettre à jour la priorité selon les besoins.
  2. Faire quelque chose de similaire avec un récepteur d'événements. Créer de la tâche, Recherchez le document associé et la priorité de mise à jour au besoin.
  3. Utilisez le « créer élément de liste" action en collaboration avec l'attente » de changement de champ" action et un récepteur d'événements. Si on crée un élément de liste, Nous pouvons spécifier tous les champs que nous voulons. Utilisez un récepteur d'événements pour mettre à jour l'élément d'origine lorsque l'utilisateur termine la tâche et l'attente"de changement de champ" condition de l'action serait satisfaite, et le flux de travail procédera. (Pour une raison quelconque, J'avais plus ou moins réglé sur cette approche avant de se décider judicieusement à pied pendant un certain temps).

Il y a un inconvénient à ma solution (Hormis le fait évident que seul le texte du titre indique urgence). Depuis "collect feedback" accepte uniquement les noms de titre dur codé, J'ai besoin d'utiliser deux actions différentes collect feedback dont la seule différence est que dur codé le titre.

Mais, au moins il y a une solution qui ne nécessite pas de récepteurs d'événements ou actions personnalisées de SPD.

Si quelqu'un a résolu ce d'une manière plus intelligente, Please let me know.

</fin>

Facile et rapide: Ouvrir automatiquement le formulaire InfoPath dans SharePoint Designer Courriel

MISE À JOUR: Madjur Ahuja souligne ce lien à un discussion de groupe de discussion: http://msdn2.microsoft.com/en-us/library/ms772417.aspx. C'est assez définitif.

===

Nous voulons souvent incorporer des liens hypertexte vers des formulaires InfoPath dans les courriels envoyés à partir de flux de travail SharePoint Designer. Quand les utilisateurs recevoir ces e-mails, ils peuvent cliquer sur le lien de l'email et aller directement au formulaire InfoPath.

Cette construction d'URL monstre fonctionne pour moi:

http://server/sites/departments/Technical Services/InformationTechnology/HelpDesk/_layouts/FormServer.aspx?XmlLocation=/sites/departments/Technical Services/InformationTechnology/HelpDesk/REC REM RED Forms/REC2007-12-18T11_33_48.XML&Source = http % 3 a % 2F % 2Fserver % 2Ecorp % 2Edomain % 2Ecom % 2Fsites % 2Fdepartments % 2FTechnical % 2520Services % 2FInformationTechnology % 2FHelpDesk % 2FREC % 2520REM % 2520RED % 2520Forms % 2FForms % 2FAllItems % 2Easpx&DefaultItemOpen = 1

Remplacer le texte en gras rouge avec le nom de la forme, comme le montre la capture d'écran suivante:

image

Notez qu'il y a beaucoup de chemin codé en dur dans l'URL, ainsi qu'un élément URL-encodée. Si c'est trop difficile de traduire à votre situation spécifique, essayez d'activer les alertes pour la bibliothèque de formulaires. Poster un formulaire et lorsque vous recevez l'email, afficher la source du courriel et vous verrez tout ce que vous devez inclure.

Les lecteurs astucieux peuvent remarquer que le corps de l'e-mail ci-dessus montre également un lien qui accède directement à la tâche via une vue filtrée. J'ai l'intention d'expliquer cela en détail dans un prochain post.

</fin>

MOUSSE Me dit “Accès refusé” pour modifier une tâche de flux de travail, Mais je dois vraiment accès

J'ai mis en place un workflow à l'aide de SharePoint Designer sur un site qui est principalement lecture seule à « NT_AUTHORITYAuthenticated utilisateurs" (i.e. tout le monde). Il y a une bibliothèque de formulaires pour un formulaire InfoPath. Il y a une liste de tâches de flux de travail associé ainsi afin que lorsque le flux de travail fonctionne, Il peut assigner des tâches aux personnes.

Rompre la permission pour la liste de Bibliothèque et de la tâche de formes afin que tout utilisateur authentifié peut créer des formulaires et mettre à jour leurs tâches assignées.

J'ai tester avec mon compte de test basse-privilèges.

Puis-je remplir hors et enregistrer un formulaire à la bibliothèque? –> OUI

Puis-je accéder à la tâche d'un lien de Courriel? –> OUI

Est-ce que je peux voir un lien de tâche de flux de travail Edit –> OUI

Puis je clique sur ce lien? –> AUCUN … Autorisation refusée.

Pourquoi est-ce que je peux voir un modifier le lien qui me refuse une autorisation lorsque je clique sur elle? Ce n'est pas comment il est censé travailler…

Je vais à nouveau la configuration de la sécurité, très étroitement. Je le referais. Je considère que la suppression de ce poste parce que je n'évidemment sais quoi que ce soit sur la sécurité.

Enfin, Je recherche les Internets. Je trouve ce fil du forum MSDN hautement improbable: http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1838253&SiteID=17

Les affiches semblent être ce qui suggère que le simple fait d'exporter le flux de travail d'un plateau de disque résoudra pas un problème de sécurité de mousse? J'ai peine à croire que j'ai tapé juste que. Je me souviens de l'épisode de South Park sur le 9/11 complot où Stan demande à notre Preznit, « Vraiment?" maintes et maintes fois.

Si, rien à perdre, J'incendie de SPD, faites un clic droit sur le flux de travail et l'enregistrer sur mon c:\ en voiture. Ce serait le c:\ en voiture sur mon portable. Je suis regarder par-dessus mon épaule tout le temps afin que personne ne me demandera, « Pourquoi vous épargnent ce flux de travail de votre ordinateur portable?"

Incroyablement, qui a résolu mon problème. Je peux modifier la tâche.

Par les présentes, je propose ceci pour être le plus solution Workflow Bizarre de 2007.

</fin>

SharePoint Designer, L'élément courant “Codé URL absolue” et HTTPS

Souvent, nous voulons envoyer un email contenant un lien hypertexte vers l'élément ou le document qui a déclenché le flux de travail. Nous pouvons utiliser "codé URL de l'élément actuel absolue" à cet effet. Cependant, Il semble toujours utiliser http »" pour le protocole d'URL. Si votre site fonctionne sur HTTPS alors cela ne fonctionnera pas pour vous.

image

Je sais aussi, Il n'y a aucune sortie de la solution à ce problème de boîte. Si vous devez utiliser le protocole HTTPS, vous n'avez pas l'option de boîte de.

Pour le résoudre, créer une action personnalisée qui fournit une fonction de remplacement de chaînes à utiliser dans votre flux de travail. Vous pouvez également, utiliser un outil de parti 3e comme l'excellent package ici: http://www.codeplex.com/spdwfextensions 🙂

</fin>

Envoie de courriel de SharePoint Designer ???? dans un courriel

Parfois poser des utilisateurs du Forum: Pourquoi SharePoint Designer mis ???? dans mon courriel au lieu d'une valeur de champ?

Dans ce cas l'une des raisons sont parce que la variable à laquelle vous faites référence est nulle.

Cela peut se produire parce que vous essayez de référencer un champ de l'élément actuel »" mais jamais, l'utilisateur a entré une valeur dans ce champ de formulaire.

<fin />

Comparer / Test pour les Dates de vides dans le flux de travail SharePoint Designer

Scénario: Dans un flux de travail SharePoint Designer, vous devez déterminer si un champ de date est vide.

Problème: SPD ne fournit pas une méthode directe pour comparer des dates à autre chose qu'une date. Vous ne pouvez pas créer une condition comme ça: « Si [DateField] est égal à vide ».

Solution: Convertir la date en chaîne. Comparaison de chaînes permet de déterminer si la date est vide.

Captures d'écran:

Les captures d'écran suivantes montrent comment procéder. Dans ce scénario, un champ sur un élément, « Permis d'environnement:Tout d'abord permis Date de rappel", est présenté et le flux de travail est déclenché en réponse.

image

image

Notes:

Quand j'ai essayé ceci, J'ai été agréablement surpris d'apprendre que cela fonctionne. J'étais inquiet que SharePoint Designer peut refuser la cession de la chaîne (Variable:StringReminderDateDate) mais il ne permet pas il.

J'étais aussi inquiète que lui permettant, la valeur peut être null et soit sauter le WF lors de l'exécution ou peut-être augmenter la température globale 1/2 un degré, mais ces craintes n'étaient pas fondées.

</fin>

Action de personnalisée pour le flux de travail SharePoint Designer — Observation sur <FieldBind Designer Type =”StringBuilder” … />

Juste une observation rapide qu'il y a une différence très importante entre ces deux définitions:

<FieldBind Field = "InParam1" DesignerType = "StringBuilder" ID = "2" Text = « Paramètre d'entrée # 1 » />

par rapport à:

<FieldBind Field = "InParam1" ID = "2" Text = « Paramètre d'entrée # 1 » />

La première montre comme ça dans le SPD:

image

alors qu'il le montre ce dernier comme ceci:

image

Je ne sais pas comment ces utiles captures d'écran sont mais je mis dans l'effort pour les faire de sorte que vous devez les voir 🙂

L'observation est la suivante: StringBuilder vous permet de créer une chaîne de (de toute évidence) en mélangeant des littéraux de chaîne et les données de flux de travail (via le « ajouter Lookup" bouton dans le coin inférieur gauche). Lorsque vous utilisez le bouton Ajouter Lookup, elle insère un jeton sous la forme"[%jeton %]". Lorsque SharePoint appelle l'action personnalisée, (Code c# dans mon cas), SharePoint passe le jeton lui-même, pas la valeur du jeton. Si vous utilisez le type de concepteur par défaut (le second type), SharePoint étend le jeton et passe le jeton de la valeur réelle de votre action.

StringBuilder = BAD, par défaut le type de concepteur = bonne.

Bien sûr, Ce n'est pas ce que j'ai vraiment. N'essayez et passez un paramètre à votre action personnalisée lorsque le concepteur tapez = StringBuilder. Utilisez le type de concepteur par défaut et la chaîne un StringBuilder pour elle dès le départ si vous avez besoin pour construire des chaînes complexes dans votre flux de travail (qui est d'ailleurs exactement ce qu'on fait pour créer un objet dynamique pour l'action de Courriel, mais c'est un sujet pour une autre entrée de blog, har har).

<fin />