none
SP fundation (O365) : Appeler une URL depuis un workflow RRS feed

  • Question

  • Bonjour,

    Préambule: à cause de restriction de sécurité, je ne puis utiliser d'autre méthode (BDC).

    J'ai sur mon site Sharepoint (2010 - Office 365) une liste contenant des contacts.
    J'ai attaché à cette liste un WorkFlow qui permet de générer un ID unique (basé sur L'ID interne de SP) lors de la création d'un item.

    Ce que je souhaiterai, c'est appeler en fin de traitement une URL (site distant) afin de tenir à jour une base d'utilisateurs d'un site "frère". Cette URL serait la combinaison d'une chaine de caractères et de paramètres Sharepoint du type "http://www.monsite.com/userupdate.cfm?UID=[ID]&email=[Adresse de Messagerie]&granted=[Acces_site]&action=[TypeDetraitementSP]" ([Acces_site] est une colonne personnalisée de la liste SP et [TypedeTraitementSP] indique s'il s'agit d'une création, modification ou suppression).

    La logique de traitement serait gérée côté "site frère", c'est bien donc seulement la méthode pour ajouter cette action dans le workflow (avec SP designer ?) qui m'échappe.

    Merci de vos retours.

    Antoine



    mercredi 12 juin 2013 14:04

Réponses

  • Dans votre cas le BCS semble une bonne idée effectivement.

    Par contre plutôt que d'exposer directement votre SQLServer sur le net (pour que le bcs de SharePoint online puisse appeler) je passerai par l'exposition du couche type webservice soap qui offrirai l'API attendue par un BCS et fera l'interface (et éventuellement le nettoyage/filtrage)

    Ensuite via SharePoint designer vous pouvez creer une connection BCS sur ce webservice au lieu de SQL Server directement


    Blog Sharepoint : www.paslatek.net Twitter : @LimozinLionel

    lundi 17 juin 2013 12:25

Toutes les réponses

  • Bon, le problème se solutionne ainsi : Migrez votre collection de site en SP2013 et là ... magie !
    Dans SP designer 2013, vous pouvez ajouter une action dans le workflow de type "Appeler le service Web HTTP".

    Bien qu'il soit conçu pour travailler avec un "service web", il semble être tout à fait à l'aise pour appeler une page spécifique avec des paramètres (ça ressemble à çà : http://www.monsite.com/mapage.cfm?UID=[%Élément en cours : Password%]&email=[%Élément en cours : Adresse de messagerie%]&granted=[%Élément en cours : Accès Internet%]).

    Je gère ensuite la logique très simplement en regardant si l'élément existe dans ma base distante et en appliquant les requêtes insert/delete qui vont bien (je ne garde pas dans la base distante les items qui n'ont pas d'accès). Simple :)


    mercredi 12 juin 2013 18:12
  • Aïe : c'était trop beau ...

    1. Si le workflow fonctionne parfaitement en création/modification, il ne se passe rien en cas de suppression.
    2. La modification des items de cette liste dans outlook ne déclenche pas l’exécution du workflow

    Questions :

    - J'ai vu qu'on pouvait créer des events handler sur les listes, mais doit-on nécessairement passer par VSTO ?
    - Comment se fait-il que le workflow ne soit pas lancé lors d'une MAJ depuis OL ?

    Merci de m'éclairer ... enfin, j'ai un peu l'impression de parler tout seul là (lol). Parrait que ça aide, de formuler les questions ...

    jeudi 13 juin 2013 12:17
  • Bonjour

    - les workflows de listes via SharePoint Designer  ne peuvent être attachés à l’événement de suppression d'un item (en tout cas en 2010)

    - Concernant le "non déclenchement" quand on passe par outlook ça sent le bug à plein nez ;)

    - Concernant les EventReceivers de listes, il faut passer par un code côté serveur (WSP) et pas VSTO. Donc avec du office online c'est mort... Sur du on premises cela vous réglerai effectivement la question, car qui dit code, dit vous faites ce que vous voulez, y compris sur le cas de la suppression...


    Blog Sharepoint : www.paslatek.net Twitter : @LimozinLionel

    lundi 17 juin 2013 07:57
  • Bonjour Lionel et merci de cette réponse.

    Outlook semble finalement déclencher les workflow ... à condition de bien lancer la MAJ :(
    Je constate, depuis que je suis passé aux listes au format 2013, que certaines MAJ ne se font plus.
    Symptome : on tente de changer une adresse mail dans le formulaire (standard) OL, mais elle se remet à la valeur précédente dès qu'on quitte le champ.

    Pour les event receivers, cela signifie donc que je n'ai aucun moyen de gérer le déclenchement d'un workflow  à partir d'une suppression dans une liste en environnement o365 ? :-\

    Il ne me reste donc qu'un option, gérer la synchro en passant par une connexion BCS ?
    Si oui, quelle méthode me recommanderiez-vous ?

    EDIT : Cette page http://dotnetmafia.sys-con.com/node/1777795/mobile semble indiquer une méthode via VSTO pour dépoyer un WSP sur office365 ... du coup, je suis perdu, là ! :D



    lundi 17 juin 2013 08:27
  • - J'ai pas trop suivi la corrélation avec une connexion BCS à vrai dire... la liste de contacts viendrait en fait de l'exterieur ?

    - on peut déployer un wsp sur du online, mais en mode sandox et il me semble me souvenir (à vérifier) qu'il n'est pas autorisé de faire de l'EventReceiver en mode sandbox....


    Blog Sharepoint : www.paslatek.net Twitter : @LimozinLionel

    lundi 17 juin 2013 10:22
  • Pardon, j'aurai du être plus précis.

    La liste des contacts est hébergée sur 0365 mais doit alimenter une base de données SQL externe (simple gestion des droits d'accès à un site "frère").
    Naïvement, je pensais pouvoir créer une liste externe (SQL externe) et la lier à la liste SP (Contacts) afin que les créations, modifications et suppressions se fassent "en cascade". Mais peut-être que je rêve encore ... ?

    Pensez-vous que cela soit une piste viable ?

    P.S: mes différents tests me montrent que - là aussi - la tâche est rude (la machine externe est protégée par un FW et il semble que je doive passer par les canneaux nommés, avec tous les risques de sécu qui vont avec ...) est-ce qu'une connexion ODBC serait plus simple ?
    lundi 17 juin 2013 10:38
  • Dans votre cas le BCS semble une bonne idée effectivement.

    Par contre plutôt que d'exposer directement votre SQLServer sur le net (pour que le bcs de SharePoint online puisse appeler) je passerai par l'exposition du couche type webservice soap qui offrirai l'API attendue par un BCS et fera l'interface (et éventuellement le nettoyage/filtrage)

    Ensuite via SharePoint designer vous pouvez creer une connection BCS sur ce webservice au lieu de SQL Server directement


    Blog Sharepoint : www.paslatek.net Twitter : @LimozinLionel

    lundi 17 juin 2013 12:25
  • Lionel,

    Comme il est doux d'entendre des explications claire et concises quand on nage en pleine mer noire depuis des semaines !

    P.S: Je ne marque pas encore comme "réponse", afin de pouvoir faire un retour final, mais encore une fois ... MERCI !


    P.S : en // je regarde l'option sandbox WPS sur O365; cela semble finalement possible ... mais je dois tester, tester, encore tester .... :(

    lundi 17 juin 2013 13:21
  • Merci pour vos encouragement à continuer à vous aider ! :)

    Bon courage à vous dans cet apprentisage !

    Et même si vous arrivez à faire un EventReceiver de liste sur votre sharepoint online, je vous déconseille d'apeller votre sql distant en direct et je ne saurais que vous encourager à exposer un service web dans votre infra pour ça ! soyez SOA ! :)


    Blog Sharepoint : www.paslatek.net Twitter : @LimozinLionel

    lundi 17 juin 2013 15:44
  • Oui, un web service (en fait un simple appel de page cfm [ColdFusion]) aura nécessairement ma préférence :)
    lundi 17 juin 2013 15:47
  • Pour info, je suis en train de tester une Webapp (Layer2 Cloud Connector App for SharePoint) qui devrait vraiment me simplifier la vie et surtout permettre de donner à mon client une certaine autonomie.

    Je reviendrai sur le sujet à la fin de mes tests.

    vendredi 21 juin 2013 08:46