Techdays 2010 : Webcast en ligne

Voilà, la session des Techdays est en ligne.

PAR222 : Créer son outil de modélisation de processus métier en utilisant WF4

Les sources de notre projet sont disponible sur ce billet.


Tags: , ,
Catégories: Techdays | Workflow

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed

Techdays 2010 : Source session PAR222 (WF4)

Début février, j’ai animé une session aux Techdays 2010 avec mon ami et collègue Julien Balouka. Notre session s’intitule : Créer sonoutil de modélisation de processus métier en utilisant Workflow Foundation 4(PAR222). La vidéo de la session sera bientôt disponible sur le site des Techdays 2010, je ferais une mise à jourquand elle le sera.

Voici donc avec quelques jours de retard, la solution que nous avons montré durant la session. Je rends donc publique les sources, mais afin que vous puissiez l’utiliser dans de bonne condition, j’ai rédigé un manuel d’installation que je vous conseil de regarder.

Vous pouvez télécharger tous cela à ces adresses :

  - Source de la démo (5,11 mb)

  - Powerpoint de la session (1,17 mb) (inclus dans les sources)

  - Guide d’installation (387,66 kb) (inclus dans les sources)

Pour pouvoir utiliser correctement la démo, il faut que le host Workflow soit toujours lancé pour prendre en compte les Workflows générés, cependant il faudra le relancer à chaque Workflow sauvegarder en base.

Je me permets juste de commenter le contenu des sources afin que vous puissiez mieux appréhender le contenu du l’archive source.

Répertoire « Divers »

Il contient le Powerpoint de la session, le guide d’installation et un backup de la base de données. A cesujet, dans la base se trouve les tables pour la persistance du Workflow, les scripts de création de ses tables se trouve dans le répertoire « C:\Windows\Microsoft.NET\Framework\v4.0.21006\SQL\en »,les deux scripts à exécuter sont « SqlWorkflowInstanceStoreLogic.sql » et « SqlWorkflowInstanceStoreSchema.sql ».

Répertoire « Recrutement »

C’est la solution WPF du designer custom Workflow.

Répertoire « Recrutement.Site »

C’est la solution Silverlight 4 qui nous a permis de tester notre Workflow. Dans cette solution, il y a une Web Référence vers lesservices Workflow dynamique, ce qui nous permet de faire avancer le Workflow. Il y a aussi un pont RIA Services pour l’accès à la base de données.

Répertoire « Recrutement.Site.Web »

C’est la solution Asp.Net d’hébergement de notre site Silverlight, elle contient aussi un modèle EntityFramework 4 pour pourvoir utiliser RIA Services 4, ce qui permet d’avoir un accès à notre base de donnée dans notre module Silverlight.

Répertoire « RecrutementActivies »

C’est la solution ou nous avons créé toutes les activités custom utilisable dans notre Workflow dynamique etpour l’outil de modélisation custom.

Répertoire « Recrutement.ActivitesDesigner»

C’est la solution ou sont entreposés tous les designers custom de nos activités.

Répertoire « RecrutementDBAccess »

C’est une solution pour stocker un modèle Entity Framework qui sera utilisé par les activités et le service webdistant pour le host Workflow.

Répertoire « RecrutementDBService »

C’est une solution pour exposer « RecrutementDBAccess » via WCF.

Répertoire « RecrutementWFHost »

C’est notre solution d’hébergement des Workflows générés par l’utilisateur, il expose les Workflows en créantdynamiquement des points d’accès WCF et permet la gestion de ceux-ci.

Je reste à votre disposition pour tout complément d'information concernant les techniques mises en oeuvre pour cette démo, aucun support ne sera fait sur l'installation de celle-ci ou des problèmes liés à votre environnement de développement. 


Tags: , ,
Catégories: Techdays | Workflow

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed

Gestion des contacts Surface sous XNA 3.1

Aujourd'hui je vous propose une petite librairie pour Surface que j'ai développé. Elle vous permet d'ajouter la gestion des contacts surface dans une application XNA 3.1. Pour télécharger cette librairie c'est par là : XnaTouchManager.rar (7,68 kb).

Cette librairie se compose en deux classes :

XnaTouchManager :

Classe statique qui implémente la gestion des contacts. Pour pouvoir utiliser la classe, il faut apporter deux modifications dans votre application root Surface XNA.

private void InitializeSurfaceInput()
{
  // ...
  // Placer la ligne a la fin de la fonction 

  XnaTouchManager._ContactTarget = contactTarget;
}

protected override void Update(GameTime gameTime)
{
  if (this.m_bIsApplicationActivated || this.m_bIsApplicationPreviewed)
  {
    if (this.m_bIsApplicationActivated)
    {
      XnaTouchManager.Update((float)gameTime.ElapsedGameTime.TotalMilliseconds);
    }

    // ...
    // Reste de la fonction ici
  }
}

Ensuite pour accéder aux fonctions de ce manager il existe des fonctions statiques :

- XnaTouchContact GetContact(int p_iD)
  Cette fonction récupère un contact par son identifiant, elle renvoie NULL si elle ne l'a pas trouvé.

- bool TryGetContact(int p_iD, out XnaTouchContact p_oContact)
  Cette fonction test si un contact existe, si il existe elle renvoie l'instance du contact en paramètre out, le retour de la fonction détermine si le contact a été trouvé.

Et des variables statiques rafraichis a chaque Update :

- _ContactsNew : Liste des nouveaux contacts, cela veux dire qu'ils n'étaient pas présents au dernier Update.

- _ContactsUpdate : Liste des contacts encore présent, cela veux dire qu'ils étaient présents au dernier Update

- _ContactsOld : Liste des anciens contacts, cela veux dire qu'ils étaient présents au dernier Update et que maintenant il n'existe plus.

Cela vous permet donc de gérer facilement la mise à jour de vos conctacts.

Il reste une dernière classe : XnaTouchContact

Elle permet quand vous utilisez les fonctions  GetContact et TryGetContact de vous fournir le contact rechercher et d'où il provient (liste des nouveaux contacts, des mises à jours ou des anciens).

J'espère que cela vous sera utile, je suis aussi preneur de vos retours.


Tags: , ,
Catégories: Surface | XNA

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed

Surface sous VS2010 Beta 2 et Framework 4.0 Beta 2

Si comme moi vous voulez développer vos applications Surface sous Visual Studio 2010, mais surtout tirer partie du Framework .Net 4.0 avec Surface, il existe un moyen très simple pour y arriver.

Tous d'abord vous devez installer le Surface SDK 1.0 SP1, pour ceux qui sont sous un système 64 Bit, il faut tricher sur la procédure d'installation comme je l'ai expliqué sur un ancien billet.

En effet il vous suffit de copier les templates de Visual Studio 2008 vers Visual Studio 2010, et miracle ca marche ! Pour cela suivez ces indications :

1) Copiez tous les fichiers ".zip" du répertoire "C:\Program Files (x86)\Microsoft SDKs\Surface\v1.0\Item Templates\" vers "C:\Users\{Utilisateur Surface}\Documents\Visual Studio 2010\Templates\ItemTemplates\Visual C#\".

2) Copiez tous les fichiers ".zip" du répertoire "C:\Program Files (x86)\Microsoft SDKs\Surface\v1.0\Project Templates\" vers "C:\Users\{Utilisateur Surface}\Documents\Visual Studio 2010\Templates\ProjectTemplates\Visual C#\".

Ensuite pour utiliser le template, faire "Nouveau Projet" et cherchez les templates dans la boite de recherche (en haut a droite) en mettant "Surface".

Créez votre projet puis, pour que cela fonctionne, il faut faire ces deux opérations sur le projet fraichement créé.

1) Ajoutez la référence "System.Xaml".

2) Pour ceux qui sont sous un système 64 Bit, il faut changer la target de compitalion vers "x86" pour forcer la compiltation 32bit.

Et voilà c'est magique ! Vous pouvez exécuter votre projet surface avec Visual Studio 2010 et utiliser toutes les nouveautées du Framework .Net 4.0 Beta 2.


Tags: ,
Catégories: Surface

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed

PDC : Projet "M" et Projet "Quadrant"

Aujourd’hui j’ai eu l’occasion de voir deux sessions très intéressantes sur les technologies « M » et « Quadrant ». La première session se focalise sur Quadrant et la deuxième sur M. Je ne connaissait pas ses deux technologies et j’avoue avoir été impressionné.

Langage « M »

Sous ce nom de code se cache un langage dédié à la modélisation au sens large. Le langage M est capable de modéliser des données mais peut servir aussi à modéliser des langages dynamiques. En effet il propose de définir sa propre grammaire et ainsi le coupler au moteur d’exécution de langage dynamique du Framework 4.

Ø  Modélisation de donnée

La première utilisation de M est pour la modélisation de donnée.  Il est possible de décrire un modèle objet très complexe mais générique (entendre par là pouvant se créer sur n’importe quelle base de données comme Oracle ou par défaut SQL Server) et en un click générer à la fois la base dans une instance SQL Server mais aussi les classes Entity Framework qui lui sont associés.

Là où ca devient très puissant, c’est que l’on peut par exemple écrire avec M que deux colonnes ne peuvent pas avoir la même donnée sur une même ligne. M va donc, au moment de la génération de la base, créer une procédure stockée qui va contrôler cette règle de modélisation. On a donc, avec un seul fichier de définition, la possibilité de contrôler la structure de sa base, intégrité incluse, et sa DAL via Entity Framework.

Il est aussi possible au niveau de la configuration du projet d’une assembly, de définir un fichier M (embarqué en ressource) pour que celui-ci déploie la base au moment de l’exécution de l’assembly si celle-ci n’existe pas.

Ø  Langage dynamique

La possibilité de définir avec M un langage custom, permet de créer une grammaire propre à son application. Par exemple, à l’instar des macros VBA, on peut donc proposer aux utilisateurs de son logiciel, un langage dédié entièrement à celui-ci mais totalement contrôlé.

La façon de décrire le langage est étonnamment facile et puissant, de plus l’interface Quadrant permet de voir en temps réel si notre grammaire répond à ce que l’on veut implémenter, mais possède aussi l’IntelliSense pour une plus grande facilité d’utilisation. 

Outil « Quadrant »

Ce nouvel outil peut s’apparenter à SQL Manager, une interface permettant de visionner ses données, mais aussi de gérer ses fichiers écrits en M.

Ø  Interface et navigation

La première chose qui interpelle avec Quadrant, c’est son interface, sobre et épuré. Il faut imaginer une fenêtre totalement vide ou l’on crée de petite fenêtre (des vues). Là où les choses sortent de l’ordinaire, c’est que sa zone de host des vues peut se déplacer dans tous les sens, comme si une caméra parcourait une surface infinie. Il y a aussi la possibilité de faire des zooms et l’interface sauvegarde tout après la fermeture du programme. Tout est en WPF et permet une fluidité exemplaire. Un très bel outil.

Ø  Visualisation des données

Une fois connecté à une base de données, il est possible de visualiser le contenu en un click. Mais la différence avec SQL Manager est la façon de présenter les données. Par exemple, si une table possède une référence vers une autre table (clé étrangère), Quadrant va proposer l’affichage des données en arbre afin de pouvoir avancer dans la hiérarchie.

De plus, une fois une vue sur une table faite, on peu customiser cette vue en changeant la couleur de fond, les colonnes affichées ou leurs noms. Tout ceci se fait avec … M !! En un click on extrait la définition de la vue en M et on peut la modifier et la sauvegarder pour la réutiliser plus tard. C’est simple et efficace.

Quadrant permet une multitude de présentation des données : en liste, présenté de façon plus ordonnées ou même filtrées. On sent bien à l’utilisation de l’outil que tout a été fait pour faciliter la visualisation et la recherche.

Pour ce qui est du filtrage des données dans une vue, là encore on fait appel a M qui permet d’écrire des requêtes, exit donc le SQL, M est beaucoup plus simple d’accès.

Ø  Gestion de la mise à jour des données

Quadrant fait un pas en avant en ce qui concerne la gestion concurrentielle des données dans sa base. Imaginons le cas ou vous ouvrez une vue sur une table avec Quadrant, puis que dans cette table vous modifiez une donnée. Dans Quadrant tout est transactionnel, il faut donc faire CTRL+S pour valider vos modifications. Sauf que pendant se temps une personne modifie la même donnée mais avec une valeur différente (par exemple avec SQL Manager). Au moment de la validation coté Quadrant, un conflit et détecté, il vous affiche donc une fenêtre avec la valeur d’origine, la valeur actuelle et la valeur que vous voulez affecter, a vous de choisir quoi faire.

Il en va de même pour toute action sur la base, une modification met un astérisque devant la ligne, un conflit met un point d’exclamation et un point d’interrogation si une donnée a été changée entre temps et que votre vue n’est donc plus à jour.

Et c’est là que Quadrant fait fort, chaque visualisation ou modification se fait dans un DataSet spéciale qui fait un snapshot au moment de l’ouverture d’une table ou de l’exécution d’un filtre. Cela lui permet de d’avoir une vision « déconnecté » des données et de tracer les évolutions de celle-ci.

Conclusion

Le langage « M » et l’outil « Quadrant » sont pour moi une réelle avancée, déjà car cela simplifie énormément le modeling, mais aussi la façon d’accéder aux données. Les possibilités sont énormes, surtout avec la possibilité de créer ses propres grammaires. L’outil et le langage sont actuellement en CTP, mais je vais suivre cela de très prêt.


Tags:
Catégories: Divers

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed