Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Julien Chable

He blogs, you blog, I blog ...

[SharePoint 2010] Créer et packager une application Silverlight pour SharePoint 2010

L’intégration native de Silverlight dans SharePoint 2010 représente une avancée majeure dans la conception des applications sur la plateforme SharePoint. Et pour cause, Silverlight repousse les limites du Web de SharePoint en offrant une expérience plus riche à l’utilisateur : dynamisme des interfaces, possibilité d’utilisation hors ligne et hors navigateur des applications, streaming vidéo, … et mise à disposition d’un modèle objet pour accéder en toute simplicité aux données de SharePoint !

Ce court post a pour objet de vous présenter une façon de créer et de déployer un projet d’application Silverlight. Nous utiliserons très succinctement le modèle objet client pour Silverlight de Sharepoint 2010.

Création d’un projet Silverlight pour SharePoint 2010 et utilisation du modèle  client

1. Créer un projet de type « Silverlight Application » (ajoutez un projet Web de test si vous le souhaitez pour tester votre application, au moins l’interface, lors de sa conception) :

image

2. Pour communiquer depuis un contexte Silverlight avec le serveur SharePoint en utilisant le modèle objet mis à disposition par l’équipe de Redmond, vous devez référencer les deux DLLs suivantes :

  • Microsoft.SharePoint.Client.Silverlight.dll
  • Microsoft.SharePoint.Client.Silverlight.Runtime.dll

Remarque : les DLL pour les clients non Silverlight se trouve dans le répertoire ISAPI et se nomment Microsoft.SharePoint.Client.dll et Microsoft.SharePoint.Client.Runtime.dll.

Effectuez un clic droit sur votre projet > ‘Add Reference’

image

Localisez les DLLs (cf plus haut) dans le chemin « c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin ».

Votre projet devrait maintenant posséder les références vers les DLLs du modèle objet client pour Silverlight :

image

3. Dans votre fichier de code de l’application, ajoutez l’espace de nom Microsoft.SharePoint.Client :

image

4. Le modèle objet de Silverlight est accessible, ici de façon asynchrone, c’est à dire que vous empiler les requêtes (de chargement, de mise à jour, …) et les exécuter à l’aide de la méthode ExecuteQueryAsync.

private Client.ClientContext context = null;
private Client.Web web;
private delegate void MiseAJourInterface();

...

private void btnRefresh_Click(object sender, RoutedEventArgs e)
        {
           
// Récupération du contexte SharePoint
            context = Client.
ClientContext.Current;
            web = context.Web;

           
// Récupération des informations du site
            context.Load(web,
null);

           
// Chargement asynhrone des listes du site
            context.Load(web.Lists,
null);
            context.ExecuteQueryAsync(RequeteSucceeCallback, RequeteEchecCallback);
        }

        #region Gestion des appels asynchrones

       
private void RequeteSucceeCallback(object sender, Client.ClientRequestSucceededEventArgs args)
        {
           
// TODO
        }

       
private void RequeteEchecCallback(object sender, Client.ClientRequestFailedEventArgs args)
        {
           
// TODO
        }

        #endregion

Dans cet exemple nous souhaitons récupérer toutes les informations du site web courant et les listes/bibliothèque de ce dernier.

Déploiement d’une application Silverlight dans SharePoint 2010

Pour déployer votre application Silverlight sur SharePoint, il vous faut créer comme vous vous en doutez une feature ! Avec la nouvelle extension SharePoint de Visual Studio 2010, rien de plus simple :

5. Ajoutez un nouveau projet à votre solution : clic droit sur la solution > Add project > SharePoint > 2010 > Empty SharePoint Project

image

6. Dans le module créé par le modèle de projet (que vous pouvez renommer), modifiez son fichier Elements.xml  associé de la façon suivante :

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Module Name="SLAccessible">
    <File Path="SLAccessible/SilverlightAccessible2010.xap" Url="_catalogs/masterpage/SilverlightAccessible2010.xap" />
</Module>
</Elements>

Attention à bien remplacer les valeurs des attributs par les valeurs correspondant à votre projet. L’élément File contenant dans l’élément Module contient deux attributs :

  • Path : chemin de l’emplacement du fichier .xap à inclure dans le projet,
  • Url : emplacement où sera déployé sur le serveur SharePoint le fichier .xap spécifié par l’attribut Path.

Remarque : Dans l’exemple, je place le fichier .xap dans la bibliothèque des pages maîtres, néanmoins un autre emplacement (LAYOUT) par exemple est tout aussi indiqué.

7. Maintenant vous devez inclure le fichier .xap de votre application Silverlight dans le projet SharePoint. Pour cela, ajoutez la sortie du projet Silverlight à votre module en effectuant les actions suivantes : propriétés du module > Project Output Preferences (cliquez sur le bouton ‘…’) > Add > Project Name (changez et mettez votre projet Silverlight) > Deployment Type (mettez ElementFile) > OK

image

image

8. Pour packager, déployer et lancer le débogage : F5 ! Le compilateur va d’abord procéder à la compilation de votre application Silverlight puis il l’intégrera dans le WSP qui sera généré avant de déployer et d’activer la feature ainsi créée.

9. Une fois la feature déployée, insérez une webpart Silverlight dans une page et paramétrez cette dernière pour qu’elle pointe vers le fichier .xap déployé sur votre serveur (à l’adresse de la valeur Url du fichier .xap de votre fichier Elements.xml).

image

image 

image

10. Enregistrez la page et vous devriez maintenant observer votre application Silverlight dans votre espace SharePoint 2010 :

 image

 

Voilà j’espère que ces quelques rapides explications sur la création d’une application Silverlight dans SharePoint 2010 vous satisferont (n’ayant pas trop le temps de créer un article détaillé sur le sujet). Les retours d’expérience et les améliorations sont bien évidemment toujours les bienvenues !

Bon SPCode !

Faire apparaitre l’onglet ‘Développeur’ dans Office 2010

La nouvelle interface d’Office 2010 à amener quelques modifications par rapport à celle de 2007. Certes mineures, ces modifications ont fait disparaître la case à cocher de l’onglet ‘Développeur’ en première page du panneau du ‘bouton Office’ (dans Office 2010, ce bouton est redevenu l’onglet  ‘Fichier’).

Afin de donner une réponse aux personne qui me contactent, et aux autres, pour savoir comment retrouver l’onglet ‘Développeur’, voici la réponse en image :

1. Clic droit sur un onglet existant > “Personnaliser le ruban”:

image

2. Dans la partie droite de l’écran, cochez la case ‘Développeur’ :

image

3. L’onglet ‘Développeur’ apparaît :

image

Cet onglet vous ouvre la porte à l’édition des macro VBA avec l’éditeur, à l’insertion de Content Control et à l’ajout de schémas pour le Custom XML. En revanche, il n’y a toujours pas d’interface pour lier les Content Controls à une source de données XML embarquée (est-ce dû au procès qu’essuie Microsoft en ce moment ? Sûrement).

Séminaire “SharePoint 2010 à l'heure des WCAG 2.0, du RGAA et d'AccessiWeb 2.0”

Comme annoncé dans mon précédent post, voici les détails du séminaire sur SharePoint 2010 et l’accessibilité initulé “SharePoint 2010 à l'heure des WCAG 2.0, du RGAA et d'AccessiWeb 2.0”.

Ces 3 sessions seront encore co-animé par Philippe Béraud (Microsoft France), Sylvie Duchateau, Denis Boulay (AccessiWeb) et moi-même (plus sur la partie SharePoint 2010). Je ne pourrais malheureusement ne faire que la première session car, mais j’aurais le temps de vous en reparler, je pars en Outre mer très prochainement.

C’est à nouveau dans les belles salles du Microsoft Conference Center (Centre de conférences 41, quai du Président Roosevelt, 92130 Issy-Les-Moulineaux – lieu évidemment accessible) que se déroulera cet ensemble de session. Vous trouverez les détails pour vous orienter jusqu’à la salle à cette adresse.

Pour vous inscrire c’est ici.

Au niveau du programme (que vous pouvez également retrouver ici), voici ce qu’attend les participants :

9h00 : Accueil des participants - Un petit déjeuner continental sera proposé sur place.
    09h30 - 10h45 : Matinée Première partie
    • Introduction : Comprendre la problématique de l’accessibilité des sites Web
    • Comprendre les WCAG 2.0
    • Comprendre le RGAA 2.2
    11h00 - 12h30 : Matinée deuxième partie
    • Comprendre le référentiel AccessiWeb 2.0
    • Mise en perspective des WCAG 2.0, du RGAA 2.2 et d’AccessiWeb 2.0
    • Comment intégrer l’accessibilité dans son projet (SharePoint)
    • Questions/réponses
    12h30 - 14h00 : Pause Déjeuner – Un cocktail déjeunatoire sera proposé sur place
      14h00 - 15h30 : Après-midi Première partie
      • Comprendre les enjeux d’accessibilité pour les applications Web riches comme SharePoint 2010 ou Office Web Apps
      • Découvrir la spécification WAI-ARIA
      • Comprendre les axes majeurs d’évolutions de SharePoint 2010 en termes d’accessibilité et ce notamment par rapport à la version 2007.
      15h45 - 17h30 : Après-midi Deuxième partie
      • Accessibilité des composants "Web part"
      • utiliser le support d’AutomationPeer, offrir des fonctionnalités comme les notifications pour les exigences de contrastes élevés, etc.
      • Évaluer l’accessibilité de sa solution SharePoint
      • Conclusion, questions

      Espérant vous y retrouver !

      [TechDays’10] Les présentations des sessions Accessibilité du web et SharePoint 2010

      UPDATE : apparemment les liens ne fonctionnant pas tous correctement, voici le répertoire sur mon Skydrive pour l’ensemble des ces présentations : http://cid-5b91d11e39fb989a.skydrive.live.com/browse.aspx/TechDays/2010

      Pour faire suite à ces trois jours exceptionnels qu’ont été ces TechDays 2010, voici les présentations du parcours Accessibilité :

      - “Accessibilité du Web : enjeux et impacts sur la société numérique Française” en présence de Philippe Béraud (Microsoft) et Denis Boulay (Accessiweb).

      - “Conception de sites Web accessibles avec les technologies SharePoint 2007 et 2010” animé par Philippe Béraud, Michel Hoel (Urbilog) et moi-même.

      - “Créer un livre audio numérique MP3 à l'aide de Microsoft Office Word 2007/2010” animé par Philippe Béraud et Sylvie Duchateau.

      Vous remerciant pour votre présence lors de ces sessions. Les webcats devraient suivre dans les semaines à venir.

      Un séminaire sur l’accessibilité de SharePoint 2010 ainsi qu’un livre blanc sont également planifiés pour les semaines à venir, je vous en informerai bien évidemment.

      Une Jolie-Horloge et pas qu’un peu !

      image Pour les possesseurs d’iPhone, ça y est Bijin Tokei – qui se traduit littéralement en Français par “Jolie Horloge” – est arrivé et GRATUITEMENT s’il vous plaît !

      Après la version Tokyo, Hokkaido, night club, racing, Gal, “pour les mademoiselles'”, … voici l’édition de notre belle capitale : Paris !

      Pour ceux qui ne connaisse pas Bijin Tokei, vous allez certainement me demander à quoi peut servir cette application ?  C’est une application qui affiche l’heure c’est tout ? non … car je préfère sans conteste consulter l’application “Jolie Horloge” que les aiguilles d’une pendule ou l’horloge de mon iPhone. Vous en jugerez par vous même :

      image image

      Les créateurs ont même pensé à créer un gadget pour votre portail iGoogle, disponible à cette adresse : http://www.google.com/ig/directory?hl=fr&url=www.bijint.com%2Fgadget%2Fparis%2Fgadget.xml

      Jolie-horloge by bijin-tokei

      D’autres gadgets pour d’autres plateformes sont en cours … à suivre !

      Pour terminer, voici une photo de la version Racing pour les amoureux des circuits :

      image

      Autant dire qu’il devient tout de suite plus intéressant et sympathique de consulter l’heure ! Messieurs, attention à ne pas passer trop de temps devant votre téléphone tout de même, et inutile de regarder toutes les 10 secondes si la photo n’a pas changée, les photos ne défilent que toute les minutes ;-) Pour mesdames, la version Homme – cette fois payante – vous est dédiée.

      Le blog dédié à cette version Française : http://blog.joliehorloge.com/ et le site officiel http://www.joliehorloge.com/

      Tous sur votre Apple Store ! Cherchez l’application ‘Bijin Tokei

      [Open XML] Liens de la semaine 01/02/2010

      IMG_0852 Après deux semaines de repos bien méritées et quelques webcasts SharePoint 2010 bien en tête, voici les liens intéressants que j’ai glaner autour de Open XML et de SharePoint 2010 en rapport :

      Pour toutes vos questions sur Open XML, un seul endroit, le forum du SDK : http://social.msdn.microsoft.com/Forums/fr-FR/oxmlsdk 

      Pour ceux qui se rendent aux TechDays la semaine prochaine, j’aurais la joie de vous retrouver sur le stand ATE pour parler Office, SharePoint 2010 et de vos projets !

      Session “SharePoint 2007/2010 et l’Accessibilité” aux Microsoft TechDays

      Cette année encore j’animerai une session. En revanche, plus d’Open XML mais du SharePoint à la place ! Pour faire suite aux nombreux séminaires que j’ai pu animé aux côtés de Philippe Béraud (Microsoft France) et de Sylvie Duchateau (Braillenet), cette session sera l’occasion de voir ensemble comment rendre vos sites accessibles aux personnes qui en ont le plus besoin.

      Au programme de cette session co-animé avec Philippe Béraud et Michel Hoel de la société Urbilog :

      • Accessibility Kit for SharePoint (SharePoint 2007),
      • L’accessibilité et SharePoint 2010 : WCAG 2, Web-ARIA, etc,
      • Accessibilité et AJAX,
      • Silverligth 2+

      Cette session s’intitule ‘ACN201 : Conception de sites Web accessibles avec les technologies SharePoint 2007 et 2010’ et se déroulera de 16h à 17h le Lundi 08 Février.

      En espérant vous y retrouvez !

      Présentation et sources du séminaire “Développer des applications accessibles” chez Microsoft France

      Ce séminaire est la quatrième édition que l’équipe, composée de Sylvie Duchateau (Braillenet), Philippe Béraud (Microsoft France) et moi-même, donnons depuis début 2009.

      Ce séminaire s’est déroulé pour cette édition dans les nouveaux locaux de Microsoft à Issy les Moulineaux. Comme à son habitude, l’accueil a été exceptionnel.

       

      Sylvie Duchateau (photo à droite) pendant sa démonstration des outils avec une tablette braille et un logiciel d’aide. La maitrise des outils par une personne non voyante est toujours un plaisir à observer, malgré tout, il reste encore beaucoup de travail pour faciliter l’accès à l’information et aux outils dans leur globalité pour ces personnes.

      Pour les participants présents, j’avais promis les mises à jour du contenu de la présentation et des sources, c’est chose faite, vous trouverez cela en pièce jointe de ce post.

      Cette mise à jour sera certainement répercuté sur le page officielle du séminaire sur le site de Microsoft France sur laquelle vous pouvez trouver l’intégralité des présentations et démonstrations en webcast.

      SharePoint 2010 et l’Accessibilité, qu’est-ce que cela donne ? Vous en saurez plus en vous rendant à la session concernant ce thème et dans un prochain post.

      Rejoignez-nous à la journée ‘Développer des applications accessibles’ chez Microsoft ce Jeudi 7 Janvier 2010

      image L’une des premières conférences Microsoft de l’année – de surcroît GRATUITE - vous attend ce Jeudi 7 Janvier autour du thème : “Développer au quotidien des applications accessibles sous Windows”.

      Voici le programme pour vous convaincre que l’accessibilité est un sujet sur lequel il y a long à dire :

      • Accueil
      • 9h30 – 11h00
      • Pause
      • 11h15-12h30
      • Pause Déjeuner
      • 14h00-15h30
      • Pause
      • 15h45 – 17h30
      • Conclusion

      Au niveau des sujets : création d’applications accessibles WPF, Silverlight, Web/ARIA, etc

      image

      Au niveau des intervenants, on ne change pas une équipe qui fonctionne à merveille :

      image

      Journée intense en transfert de connaissances et réflexion, alors n’hésitez pas à vous inscrire à cette conférence entièrement GRATUITE à cette adresse.

      En espérant vous retrouver Jeudi autour d’un café !

      [Open XML] Sortie et retour sur le SDK Open XML 2.0 CTP Décembre

      Le SDK 2.0 en version CTP connait une nouvelle monture pour cette fin d’année et on pourrait presque prendre celle-ci comme le cadeau de noël de l’équipe Office. Car cette CTP est une vraie bonne nouvelle comme vous allez pouvoir le constater.

      Vous pouvez télécharger le SDK Open XML 2.0 CTP Décembre à cette adresse.

      Parmi les nouveautés et avancées de cette nouvelle version, nous pouvons voir l’émergence de la compatibilité avec Office 2010, qui de mon point de vue manquait à la précédente version : dans certains cas précis, lors de l’ouverture de certains documents édités avec la Beta d’Office 2010, le SDK 2.0 CTP d’Août lançait des exceptions en arguant que le document n’était pas valide. C’est maintenant chose résolue ! Ce support d’Office 2010 se trouve aussi bien au niveau des APIs avec de nouvelles capacités (d’où certaines parties supplémentaires dans la structure OPC, et donc de nouvelles classes au niveau des APIs) qu’au niveau de la validation des documents avec le SDK.

      Un autre changement a également eu lieu, il s’agit de la séparation entre les APIs et les outils de productivité Open XML. Au lieu d’avoir un lieu unique comme ce fut le cas, vous trouverez maintenant deux liens : l’un pour télécharger les APIs et l’autre pour télécharger les outils de productivité.

      image

      Voici quelques détails supplémentaires pour chaque nouveauté.

      Support d'Office 2010

      Les nouvelles fonctionnalités d’Office 2010, rajoutés sous forme d’extension au format grâce aux capacités normés du format, sont contenues dans des espaces de nom .NET et XML différents. Vous trouverez ainsi des éléments propre à Office 2010 dans les espaces de nom DocumentFormat.OpenXml.Office2010.[Word|Excel|PowerPoint] tel que le montre la figure suivante :

      image

      Si vous cherchez une capacités propres à Office 2010 (Sparkline, effet de style, etc), c’est dans ces espaces de nom que vous devrez naviguer pour trouver votre bonheur !

      La validation revue

      La validation a été sortie de l’espace de nom original pour arriver dans un espace de nom propre DocumentFormat.OpenXml.Validation, ce qui entrainera des modifications dans vos codes existants. Du coup, les éléments ont été rendus obsolètes et seront probablement supprimés – comme le spécifie l’aide en ligne – dans les prochaines versions du SDK.

      Les outils de productivité

      Ce package d’outil, maintenant téléchargeable séparément, contient toujours les outils : Document Reflector, le Class Explorer et le Diff. Somme toute, ces trois outils portent bien leur nom d’outil de productivité tant une fois leur utilisation maîtrisé en développement se révèlent indispensable pour avancer vite et bien, mais aussi pour se débloquer de situations parfois complexes dans le travail avec le format. A la différence de la CTP d’Août, ces trois outils sont maintenant proposés au sein d’une interface unifiée avec onglet :

      image

      Le Document Reflector supporte aujourd’hui Office 2010 et sa validation. Le Diff quant à lui permet maintenant de générer un code de transformation d’un document vers un autre ! Par exemple, en ayant supprimé une table dans un en-tête de page, voici le une partie du code généré par l’outil pour passer du document original au document cible :

              private void ChangeHeaderPart1()
              {

                  Header header1 = (UriPartDictionary["/word/header1.xml"] as HeaderPart).Header;
                  Table table1 = header1.GetFirstChild<Table>();

                  table1.Remove();
              }

       

      Pour conclure, le SDK Open XML 2.0 s’embellie version après version aussi bien au niveau de sa compatibilité que des outils fournis. Une chose est sûre, le SDK Open XML est très attendu par les développeurs et surtout ceux qui testent depuis quelques semaines, comme moi, SharePoint 2010 Word Services (bientôt un article sur MSDN …). Une version finale qui attendra donc la sortie conjointe avec SharePoint 2010 ; en attendant on ne peut que souhaiter que l’équipe en charge continue l’excellent travail qu’elle a entreprise.

      Au niveau de la migration de votre code, certaines méthodes ont été revues, ce qui devrait vous valoir de reprendre certains de vos codes. Par exemple, le paramètre autosave de la méthode Open a été remplacé par un objet OpenSettings, ce qui représente à mes yeux une amélioration au niveau de la cohérence des paramètres d’ouverture de document. Au delà de ces quelques renommages (méthodes – obsolètes ou supprimées – et espaces de nom – notamment sur les objets concernant la validation des documents), de remettre la référence vers la DLL (v 2.0.4725) et de différentes adaptations (certaines propriétés ont changé de type), la migration de vos solutions ne devraient pas être problématique.

      [Open XML] Liens de la semaine 30/11/2009

      Comme à mon habitude, voici une petite fournée des meilleurs liens Open XML, Office et maintenant SharePoint 2010 que j’ai glané au fil des derniers jours :

      Bonne lecture

      [Open XML] Manipuler un document Office 2007 côté serveur et les types MIME indispensables

      Le SDK Open XML permet de pouvoir générer ou éditer des documents côté serveur à la volée et sans nécessité l’utilisation d’Office. Une première pour Microsoft qui vient d’être appuyé par Word Services inclus dans SharePoint 2010 (dont vous pouvez télécharger la Beta ici).

      Si vous utilisez le format Open XML (.docx, .xlsx, .pptx) vous avez sûrement remarquer que la plupart des serveur Web vous retournent les documents sous la forme d’un zip (et ne vous propose donc pas de l’ouvrir avec Office). En effet la plupart des sites suggère d’utiliser le type MIME ‘x-zip-compressed’ pour ces types de documents Office à cause de l’utilisation de ce format pour stocker les différents éléments d’un document. Il est bien évident que c’est un non sens, surtout si vous voulez que les index des moteurs de recherche puisse interpréter correctement le fichier en tant que document et non comme une simple archive compressée.  Vous me direz que les moteurs de recherche utilisent l’extension pour déterminer la nature du document, sauf que si l’URL de téléchargement se présente sous la forme “/download.aspx?id=12345” et que l’entête filename n’est pas renseignée, l’index ouvrira le document et indexera le contenu de votre document sous sa forme XML. Le type de contenu MIME devient donc la seule source d’information que l’index ou le système possède pour ouvrir de façon décente le document.

      Voici la liste des types de contenu pour Office 2007 sans macro :

      "application/vnd.openxmlformats-officedocument.wordprocessingml.document" (.docx)
      "application/vnd.openxmlformats-officedocument.wordprocessingml.template" (.dotx)
      "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" (.xlsx)
      "application/vnd.openxmlformats-officedocument.spreadsheetml.template" (.xltx)
      "application/vnd.openxmlformats-officedocument.presentationml.presentation" (.pptx)
      "application/vnd.openxmlformats-officedocument.presentationml.template" (.potx)
      "application/vnd.openxmlformats-officedocument.presentationml.slideshow" (.ppsx)

      Voici les types pour les documents comportant des macros :

      "vnd.ms-word.document.macroEnabled.12"
      "vnd.ms-word.template.macroEnabled.12"
      "vnd.ms-powerpoint.template.macroEnabled.12"
      "vnd.ms-powerpoint.addin.macroEnabled.12"
      "vnd.ms-powerpoint.slideshow.macroEnabled.12"
      "vnd.ms-powerpoint.presentation.macroEnabled.12"
      "vnd.ms-excel.addin.macroEnabled.12"
      "vnd.ms-excel.sheet.binary.macroEnabled.12"
      "vnd.ms-excel.sheet.macroEnabled.12"
      "vnd.ms-excel.template.macroEnabled.12"

      Et pour terminer un peu de code ASP.Net pour télécharger un document Word :

      Response.ClearHeaders();
      Response.AddHeader("content-disposition", "attachment; filename=summary.docx");
      Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
      Response.ClearContent();
      … // Votre contenu
      Response.Flush();
      Response.Close();

      Bon code !

      Le format Open XML est enfin dans le Référentiel Général d’Interopérabilité

      Ca y est, c’est fait : le Référentiel d’Interopérabilité Général est !

      Interérabilité pour quoi faire ?

      Voici les 10 bénéfices énoncés de l’intérêt de ce RGI :

      1. Améliorer la qualité des services fournis aux administrés
      2. Promouvoir les services en ligne en réduisant les délais de mise en oeuvre
      3. Maîtriser les coûts de développement et de maintenance
      4. Favoriser l'interopérabilité des systèmes d’information en respectant l’autonomie des acteurs
      5. Contribuer à l’ouverture des systèmes d’information dans leur écosystème (relations avec les citoyens et les entreprises et avec d’autres organismes publics)
      6. Adopter un langage et une sémantique communs lors des échanges d’information
      7. Diffuser les bonnes pratiques entre administrations européennes et converger vers un cadre d’interopérabilité commun
      8. Favoriser l’intégration et guider les administrations dans leurs choix de solutions
      9. Garantir la neutralité de l’administration en s’appuyant sur des normes et standards
      10. Favoriser la standardisation et l’innovation

      Bons je vous l’accorde, de mon opinion, la description contenue dans le RGI – ici non incluse - de certains des objectifs est quelquefois un peu fumeuse et assez éloigné de la réalité technique, mais la bonne volonté est là. De plus on y retrouve l’essence même de tout RGI : échangeons ensemble !

      N’oublions pas qu’il ne s’agit que de recommandations, en rien d’obligations. L’extrait du RGI est d’ailleurs assez éloquent à ce sujet : “Ces recommandations constituent les objectifs à atteindre pour favoriser l'interopérabilité. Les moyens d'y parvenir sont à la discrétion des responsables des SI de l'administration, en fonction de leurs propres enjeux, de leur planning et du rapport entre le coût de mise en oeuvre et les bénéfices attendus.”

      De l’Open XML et OpenDocument dans le RGI

      Les deux formats de documents bureautique sont cités dans le RGI, alors que seul OpenDocument dans sa version 1.1 l’était dans sa version brouillon de 2007. Les deux formats sont notés ‘En observation’ et ne sont donc pas encore des recommandations.

      Pour OpenDocument, la raison est que la version 1.2 est toujours en cours de normalisation … depuis fin 2006 (!) et corrige enfin les problèmes critiques techniques et d’interopérabilité du format (Accessibilité, Formules et Métadonnées notamment). Le RGI indique une normalisation en 2009, mais il y a bien peu de chances que ce dernier soit ratifié avant 2010. Un format ISO – version 1.1 donc - qui commence à dater et qui ne respect pas vraiment les principes d’un format de document bureautique innovant et permettant de combler certains besoins essentiels que l’on peut attendre d’un document bureautique en 2009.

      Concernant Open XML, l’argument avancé est que la version ISO – IS 29500 – n’est pas implémentée. C’est notamment Office 2010 qui inaugurera son arrivée sur le marché, sachant que la version ECMA est déjà implémentée depuis Office 2007 avec un support en lecture dans OpenOffice 3.0 et en écriture dans la future monture 3.2. So wait and see ! (Attention, le RGI fait sûrement référence à la version Stricte et non Transitionnelle, enfin ce sera sûrement une précision apporter lors de la prochaine révision du RGI).

      Nuançons tout de même la réalité des deux formats dans la pratique. Autant la version ISO d’Open XML est ratifiée avec des implémentations en cours de réalisation de la part de plusieurs acteurs du marché, jusque là tout va bien. Autant OpenOffice implémente une norme qui n’est pas encore validée et qui pourrait être modifiée au besoin par l’ISO (quid de la compatibilité avec les documents créés par OpenOffice dans une version 1.2 non ISO ?). C’était déjà le cas en 2006 où OpenDocument 1.0 n’était que le reflet du format OpenOffice et non issu d’un échange des experts dans le domaines des formats bureautiques.

      Je vous laisse consulter ce fameux RGI.

      [Open XML] Liens de la semaine 01/11/2009

      Cela faisait un petit bout de temps que je n’avais pas mis à disposition la liste des derniers liens dans le domaine de d’Open XML, d’Office 2010 ou encore de SharePoint, voici de quoi me rattraper :

      Pour les développeurs de solutions Office de la vague 2010, voici le nouveau blog auquel vous devriez souscrire : celui de l’équipe de Word Services ! Voici le premier article qui explique les fondements de Word Services et comment exploiter le SDK Open XML avec ce nouveau service : Introduction de Word Services.

      Bonne lecture

      La recherche SharePoint MOSS : synthèse sur la syntaxe des requêtes par mots clés

      Après de nombreux échanges sur la recherche avec de nombreuses personnes, voici un petit récapitulatif sur le fonctionnement et l’utilisation des requêtes par mots clés (par opposition aux requêtes Search SQL). Voici quelques exemples de saisie dans la boite de recherche

      • Un seul mot : par exemple collaboratif retournera tous les éléments contenant ce terme,
      • Plusieurs mots : par exemple collaboration travail retournera tous les éléments contenant collaboration ET travail. En effet, l’espace sera considéré comme un ET logique.
      • Une phrase : par exemple “travail collaboratif” retournera tous les éléments contenant exactement cette phrase,
      • L’utilisation des préfixes :
        • Il n’y pas de caractère joker tel que ‘*’, taper juste le début du mot et le moteur vous trouvera tous les éléments contenant en partie cette expression. Par exemple, collab retournera les documents contenant collaboration, collaboratif, collaborateur, etc
        • Exclusion d’un terme : utilisez le moins ‘-‘ dans votre requête, par exemple ‘-collaboratif’ pour exclure tous les éléments contenant collaboratif. Cet opérateur sera compris comme un NOT par le moteur de recherche.
        • Inclusion d’un terme : utiliser le plus ‘+’ dans votre requête, par exemple ’+collaboratif’ pour incluse tous les éléments contenant collaboratif. Néanmoins, étant donné que tous les termes sont transmis sous forme de ET, ce caractère est quelque peu dispensable …
        • Filtre sur une propriété : les propriétés indexées et dites “Managed properties” (que vous pouvez configurer dans le SSP) peuvent être utilisées dans la recherche comme critère selon la syntaxe suivante : :. Par exemple auteur:julien retournera tous les éléments créés par Julien.
          • L’utilisation du caractère Joker ‘*’ est ici permise, par exemple auteur:ju* retournera tous les documents créés par Julien, Justine, etc… En revanche, ce joker ne semble marché que sous la forme du préfixe (auteur:*ien ne revoie pas les éléments Julien, Aurélien, etc, de même pour auteur:*uli*. Heureusement que nous avons le Search SQL pour nous les développeurs qui permettent ce type de requête !). Sachez que le joker ‘*’ est en fait optionnel et que si vous saisissez auteur:ju, le résultat sera le même que auteur:ju*.
          • Pour limiter le nombre de résultat contenant le suffixe de votre requête, utiliser les guillemets, par exemple auteur:”ju”, pour ne retourner que les éléments dont l’auteur se nomme ju.
          • Filtre sur le type de contenu : même principe que pour la propriété mais en filtrant sur le type de contenu en utilisant la syntaxe suivante : contenttype:, par exemple contenttype:document pour ne demander que les documents.
          • Pour détecter la langue d’un élément, sachez que le moteur d’index utilise un algorithme déterminant la langue, et la place dans la propriété managé detectedlanguage. Ainsi la requête detectedlanguage:9 ramènera le contenu en anglais et detectedlanguage:12 pour retrouver le contenu en Françai. Reste que le moteur d’index (IFilter notamment) fait aussi quelques erreurs sur la langue …
          • Pour ne cibler qu’un seul site en particulier, utilisez la syntaxe site:
          • Pour ne filtrer que les types de documents d'une extension spécifique, utilisez la syntaxe fileextension:<extension>

      Quelques précisions sur le comportement du moteur de recherche :

      • Notez que le moteur de recherche, par défaut, ne prend pas en compte la casse des mots, ainsi collaboratif et Collaboratif retourneront le même résultat.
      • Utilisation de filtres multiples : si vous utilisez plusieurs filtres différents, le moteur de recherche garde son comportement par défaut de ET logique concernant la relation entre les critères ou termes de recherche. Si vous utilisez plusieurs fois la même propriété, type de contenu ou scope de recherche dans votre requête, le moteur de recherche interprétera les éléments avec un OU. Par exemple, la requête auteur:julien contenttype:document collaboratif retournera tous les documents dont l’auteur est julien (prénom ou nom) contenant le terme collaboratif. Si vous spécifiez auteur:julien auteur:christian contenttype:document collaboratif, le moteur de recherche renverra tous les documents dont l’auteur est soit Julien, soit Christian, soit les deux, possédant un terme collaboratif.

      Voilà pour le rappel de ces quelques règles élémentaires sur le fonctionnement du moteur de recherche de MOSS 2007, en attendant celles de “MOSS  2010” dans un prochain post.

      [Open XML] Des code snippets pour le SDK Open XML v2

      image

      Avec l’arrivée prochaine d’Office 2010, l’évolution du SDK Open XML dans sa version 2 s’accélère et avance à grand pas. Alors que la CTP d’Août du SDK Open XML a été rendue disponible il y a peu, voici que Microsoft met maintenant à disposition des snippets de code, environ une cinquantaine.

      Ces snippets en C# et VB.NET vous permettront de découvrir l’utilisation du SDK mais surtout de les utiliser dans vos projets de production afin de gagner en productivité. Et si le SDK Open XML v2 fait déjà gagner beaucoup de temps par rapport à sa première mouture, ces snippets accélèrent véritablement le temps de création des méthodes utilitaires !

      Voici l’adresse de téléchargement : Code snippets Open XML SDK

      Pour plus de détail vous pouvez consulter le post d’Erika ici.

      [Interop] Inauguration de l’Interop Lab Microsoft

      Interop et Open Source semblaient être deux mots opposés à Microsoft il y a encore pas si longtemps. La soirée d’inauguration du laboratoire d’interopérabilité de Microsoft qui s’est déroulée Jeudi 10 Septembre dernier a encore prouvée que ces trois termes étaient bien en harmonie.

      Alfonso Castro, directeur de l’Interopérabilité chez Microsoft France, a réussi à réunir des personnes de Citrix, Red Hat, HP, Drupal, OpenOffice.org (enfin plutôt de l’AFUL), Novell, Bull, Soyatec (plugin Eclipse pour Silverligth), VMWare, etc autour de la même table. Belle prouesse pour un débat qui s’est déroulé sans accrochage, car on aurait pu s’attendre au pire de la part de certains intervenants ! Il y a bien évidemment quelques 'pics' de la part de certains qui sont venus colorés les propos du débat, mais les esprits étaient bien réunis autour du thème de l'interopérabilité.

      Une fois ce débat passé (qui manquait à mon sens de matière sur la ‘conformité’ ), les intervenants se sont rendus disponibles et nous avons pu avoir de véritables discussions (l’utopie n’était pas loin parfois …) autour de petits fours et de rafraichissements (comme à son habitude, Microsoft sait recevoir, surtout dans les nouveaux bâtiments flambants neufs).

      J’ai également eu le droit à une petite visite privée de la salle serveur du nouveau MTC (merci à toi Bertrand !). La voici de dehors (photo iPhone … piètre qualité ?), très design en plus d’avoir de véritables monstres de puissance dans ses armoires :

      IMG_0195 

      Bilan de la soirée, de grandes rencontres et discussions autour de l’Interopérabilité et le dernier train pour Lille raté … mais ça en valait vraiment le détour ! Les vidéos du débat devraient être disponibles sous peu.

      [Open XML] Nouvelle version CTP du SDK Open XML 2.0 pour Microsoft Office

      Une bonne nouvelle pour les personnes désirant générer ou consommer des documents Office dans son format Open XML : la 3ème CTP du SDK Open XML est enfin disponible !

      Au programme des apports :

      • Support de la validation sémantique : valider les éléments sémantiques de l’arbre XML tel que les conflits d’identifiant ou les interdépendances.
      • Support des balises d’extensibilité/compatibilité : les mécanismes d’extensions (contenu à ignorer et bloc de contenu alternatif) et de compatibilité permettant à vos documents d’être compatible avec Office 2007 et 2010 !
      • Améliorations diverses basées sur les retours :
        • Sauvegarde automatique : chaque modification est enregistré automatiquement sans appeler la méthode Save(). Vous pourrez désactiver ce comportement.
        • Type booléen pour les attributs ‘booléens’ Open XML : certains attributs possèdent une valeur ST_OnOff avec les valeurs possibles suivantes : ‘On’, ‘Off’, ‘true’, ‘false’, ‘0’ et ‘1’ (oui je sais cela n’est pas très uniforme). Le SDK Open XML rend cela transparent en vous laissant spécifier un simple booléen C# ! Le SDK fera le nécessaire pour vous.
        • Etc

      Un peu plus de détails sur la validation sémantique avec ce diagramme (issu du post de Zeyad) :

      La validation sémantique permet d’aller au delà de la simple validation des XSD (qui possèdent des limitations dans les restrictions …). Par exemple comment valider le fait que deux identifiants d’un même élément ne soit pas identique dans toute la structure XML ? C’est le travail de la validation sémantique !

      N’oubliez pas le lien de téléchargement : http://www.microsoft.com/downloads/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&DisplayLang=en

      Pour rappel la version finale du SDK Open XML 2.0 sera disponible en même temps qu’Office 2010 … N’hésitez pas à envoyer vos feedbacks sur Connect.

      Vous pouvez trouver les éléments de ce post et des détaisl supplémentaires sur le post de Zeyad.

      Bon code !

      [Open XML] OPC inclut en natif dans Windows 7

      L'Open Packaging Convention a été introduit dans .NET 3.0 (et oui ça remonte un peu) comme structure interne des fichiers de documents bureautiques pour Office et le format XPS. Pour ceux qui ont déjà eux affaire à OPC, vous avez dû utiliser l'espace de nom System.IO.Packaging situé dans la DLL WindowsBase.

      Aujourd'hui avec l'arrivée de Windows 7, l'équipe en charge d'OPC est fier d'annoncer - et moi de pouvoir utiliser - l'intégration en natif d'une API Win 32 dans Windows 7. Vous trouverez une comparaison des deux APIs (managé et native) à cette adresse et celle-ci.

      [Open XML] Le SDK Open XML 2.0 : Introduction et développement – 2ème partie et fin

      VI. Utiliser le SDK Open XML par la pratique

      Les scénarios fonctionnels d’utilisation d’un tel SDK sont assez nombreux, cela peut aller de la simple génération de factures ou de rapports à l’extraction de données pour exportation dans une base de données. N’oublions pas les scénarios de conversion ou de manipulation de documents à la volée (formatage d’entreprise, suppression des données personnelles, etc).

      Dans cet article nous allons voir ensemble les deux scénarios de base, à savoir la génération et la consommation de documents. Dans le premier cas, il s’agira d’un document Word, dans le second cas d’un document Excel.

      Génération d’un document Word

      La génération d’un document Word passe simplement par l’utilisation du modèle objet du SDK qui se révèle être très efficace et rapide pour cette tâche. Pour générer le document du code suivant, nous créons simplement deux parties : la partie principale (celle qui contient les paragraphes du document) et la partie de style (contenant l’ensemble des styles du document) :

      using (WordprocessingDocument wordDoc =
      WordprocessingDocument.Create("SampleDemo.docx",
      DocumentFormat.OpenXml.WordprocessingDocumentType.Document))
      {
      // Création d'une nouvelle partie de contenu
      MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();

      // Création d'un nouveau paragraphe
      Document mainDoc = new Document(
      new Body(
      new Paragraph(
      new ParagraphProperties(
      new ParagraphStyleId() { Val = "Title" }),
      new Run(
      new RunProperties(
      new Italic()),
      new Text("Bienvenue au SDK Open XML V2 !")))));

      // Enregistrement de la partie
      mainDoc.Save(mainPart);

      // Création d'une nouvelle partie de style
      StyleDefinitionsPart stylePart = mainPart.AddNewPart<StyleDefinitionsPart>();

      Styles styles = new Styles(
      new Style(
      new Name() { Val = "Title" },
      new BasedOn() { Val = "Normal" },
      new NextParagraphStyle() { Val = "Normal" },
      new LinkedStyle() { Val = "TitleChar" },
      new UIPriority() { Val = 10 },
      new PrimaryStyle(),
      new Rsid() { Val = "002C2DBE" },
      new ParagraphProperties(
      new ParagraphBorders(
      new BottomBorder() { Val = BorderValues.Single, Color = "auto", Size = (UInt64)4UL, Space = (UInt64)1UL }),
      new SpacingBetweenLines() { Line = 240, LineRule = LineSpacingRuleValues.Auto },
      new ContextualSpacing()),
      new RunProperties(
      new RunFonts() { AsciiTheme = ThemeFontValues.MajorHighAnsi, HighAnsiTheme = ThemeFontValues.MajorHighAnsi, EastAsiaTheme = ThemeFontValues.MajorEastAsia, ComplexScriptTheme = ThemeFontValues.MajorBidi },
      new Spacing() { Val = 5 },
      new FontSize() { Val = (UInt64)52UL },
      new FontSizeComplexScript() { Val = (UInt64)52UL })
      ) { Type = StyleValues.Paragraph, StyleId = "Title" });
      // Enregistrement des styles
      styles.Save(stylePart);
      }

      Comme énoncer précédemment, l’utilisation du SDK Open XML v2 nécessite une connaissance du format. Chaque classe utilisée dans le code précédent représente un élément ou un attribut XML qu’il vous faudra connaître pour exploiter le format à son maximum.

      L’exécution de l’application permettra de générer un document que vous ouvrirez sans aucun problème dans Office 2007 ou Open Office 3.0.

      image

      Utilisé parallèlement avec Linq et les nouvelles fioritures de la nouvelle syntaxe de C# 3, la productivité des développeurs atteindra son apogée dans ce genre de projet.

      Consommer un document Excel

      Attaquons nous maintenant à la discipline inverse de la précédente partie, c'est-à-dire, la consommation de données d’un document Open XML.  L’exemple qui suit procède à l’extraction des données d’un document Excel en utilisant le SDK et un peu de Linq.

      static WorksheetPart ObtenirPartieFeuille(WorkbookPart classeur, string nomFeuille)
      {

      try {

      Sheet feuille = classeur.Workbook.Descendants<Sheet>()

      .Where(s => nomFeuille.Equals(s.Name)).First();

      return (WorksheetPart)classeur.GetPartById(feuille.Id);

      }

      catch (Exception) {

      return null;

      }

      }

      static Cell ObtenirCellule(WorksheetPart feuille, int indexLigne, int indexColonne)

      {

      try {

      Row row = feuille.Worksheet.Descendants<Row>()

      .Where(r => indexLigne == r.RowIndex).First();

      return (Cell)row.ChildElements.ElementAt(indexColonne);

      }

      catch (Exception) {

      return null;

      }

      }

      static string ObtenirValeurCellule(Cell cellule, SharedStringTablePart sharedStringTablePart)

      {

      if (cellule.ChildElements.Count == 0)

      return null;

      string value = cellule.CellValue.InnerText;

      if ((cellule.DataType != null) && (cellule.DataType == CellValues.SharedString))

      value = sharedStringTablePart.SharedStringTable.ChildElements[Int32.Parse(value)].InnerText;

      return value;

      }

      static void Main(string[] args)

      {

      using (SpreadsheetDocument excelDoc = SpreadsheetDocument.Open("Sample.xlsx", false))

      {

      WorksheetPart feuille1 = ObtenirPartieFeuille(excelDoc.WorkbookPart, "Sheet1");

      Cell cA1 = ObtenirCellule(feuille1, 1, 0); // Ligne 1, première colonne (base 0)

      Cell cA2 = ObtenirCellule(feuille1, 2, 0); // Ligne 2, première colonne (base 0)

      Console.WriteLine("{0} {1}", ObtenirValeurCellule(cA1, excelDoc.WorkbookPart.SharedStringTablePart), ObtenirValeurCellule(cA2, excelDoc.WorkbookPart.SharedStringTablePart));

      }
      }

      Le SDK v2 rend la consommation d’un document Open XML aussi aisée que la génération. Les classes typées du SDK répondent à la logique de Linq to XML et elles vous permettront d’écrire du code de façon productive et intuitive sans vous égarer dans les méandres techniques de la sérialisation/désérialisation XML.

      A l’instar de l’exemple sur la génération du document Word, il vous faudra connaître les bases de la structure d’un document pour être à même de récupérer les données voulues. Par exemple, dans le cas d’un document Excel, vous devez savoir que les valeurs de type chaines sont contenues dans une partie indépendante qui indexe toutes les chaines de votre classeur afin d’en optimiser le stockage.

      image

      image

      VII. Conclusion

      La création de documents bureautiques Office n’a jamais été aussi simple avant l’arrivée du SDK v2. Cette version devrait apporter aux développeurs de la productivité et de la simplicité dans la manipulation de documents Office, et cela, quelques soit le format utilisé (Word, Excel ou PowerPoint). Les nombreux outils annexés avec cette version du SDK assureront également deux objectifs : le premier de formation et le second d’accroitre encore votre productivité.

      Cette version du SDK, bien qu’encore en CTP, est relativement stable et performante et mérite que l’on y prête attention pour les projets à venir. Néanmoins, son statut de CTP vous empêchera de la déployer dans vos projets clients pour le moment. Il faudra sûrement attendre la sortie du SP2 d’Office 2007 ou de Office « 14 » pour savourer la fraîcheur de cette librairie qui n’augure que de bonnes choses pour les documents Office dans les années à venir.

      Egalement, n’oubliez pas de rejoindre la communauté Connect sur le site associé au SDK (https://connect.microsoft.com/site/sitehome.aspx?SiteID=589) afin de déposer vos feedbacks, vos bugs, etc et de contribuer à son amélioration.

      VIII. Références

      · Téléchargement du SDK Open XML v1 : http://go.microsoft.com/fwlink/?LinkId=120908

      · Téléchargement du SDK Open XML v2 : http://go.microsoft.com/fwlink/?LinkId=127912

      · Documentation du SDK en ligne : http://msdn.microsoft.com/en-us/library/bb448854(office.14).aspx

      · Forum MSDN du SDK : http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1647&SiteID=1

      · Site Connect du SDK : https://connect.microsoft.com/site/sitehome.aspx?SiteID=589

      · Blog personnel de l’auteur majoritairement dédié à Open XML : http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1647&SiteID=1

       

      Bon code !

      Plus de Messages Page suivante »


      Les 10 derniers blogs postés

      - Comment mapper une vue SQL sur une collection de complex type? par Matthieu MEZIL le il y a 17 heures et 59 minutes

      - SQL Server : Query Notification ou comment être notifié de modifications de données côté application (SqlDependency) par SQL Server vu par Christian Robert le il y a 23 heures et 59 minutes

      - [WF4] Un Binding Activity/ActivityDesigner qui passe mal? par Blog de Jérémy Jeanson le 03-19-2010, 13:42

      - MyTIC – SharePoint 2010 : déjà un mythe Microsoft ? par Le Blog (Vert) d'Arnaud JUND le 03-19-2010, 08:54

      - TechDays 2010 Genève : Retrouvez-moi pour une session sur la Haute disponibilité et le ScaleOut avec SQL Server par SQL Server vu par Christian Robert le 03-18-2010, 15:45

      - [MIX10] Keynote deuxième journée – Internet Explorer 9, Html5, Visual Studio 2010, OData par Atteint de JavaScriptite Aiguë [Cyril Durand] le 03-17-2010, 19:40

      - Certifications beta .NET 4 par Kévin Gosse le 03-17-2010, 19:33

      - [Mix 2010] – Microsoft Translator Technology Preview V2 par RedoBlog - The .NET Gentleman !!! le 03-17-2010, 18:53

      - Lancement en Preview de Cyclone lors des TechDays 2010! par Blog de Frédéric Queudret le 03-17-2010, 16:30

      - [WP7] Je ne veux pas d’un nouvel iPhone par Le blog de FremyCompany le 03-17-2010, 13:11