<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Espace de fouille</title>
	<atom:link href="http://www.espacedefouille.org/feed" rel="self" type="application/rss+xml" />
	<link>http://www.espacedefouille.org</link>
	<description>La zone de fouille technologique java-jEE, M2M, noSQL...</description>
	<lastBuildDate>Mon, 30 Jan 2012 21:17:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Embarquer Bonita Open Solution dans Intellij IDEA</title>
		<link>http://www.espacedefouille.org/embarquer-bonita-open-solution-dans-intellij-idea</link>
		<comments>http://www.espacedefouille.org/embarquer-bonita-open-solution-dans-intellij-idea#comments</comments>
		<pubDate>Mon, 30 Jan 2012 21:15:22 +0000</pubDate>
		<dc:creator>Frédéric Bouquet</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Bonita]]></category>
		<category><![CDATA[intellij IDEA]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://www.espacedefouille.org/?p=786</guid>
		<description><![CDATA[Embarquer l&#8217;environnement d&#8217;exécution d&#8217;une application au sein de l&#8217;environnement de développement est une pratique courante et pratique. Il en est de même lorsque l&#8217;on développe une application cliente pour Bonita Open Solution. Cet article propose ainsi une procédure qui permet d&#8217;embarquer le bundle BOS tomcat 5.6.1 pour développer une application web cliente du moteur à [...]]]></description>
			<content:encoded><![CDATA[<p>Embarquer l&#8217;environnement d&#8217;exécution d&#8217;une application au sein de l&#8217;environnement de développement est une pratique courante et pratique. Il en est de même lorsque l&#8217;on développe une application cliente pour Bonita Open Solution. Cet article propose ainsi une procédure qui permet d&#8217;embarquer le bundle BOS tomcat 5.6.1 pour développer une application web cliente du moteur à partir d&#8217;intellij IDEA 11 (version Ultimate) [1].</p>
<ul>
<li>La première étape consiste à télécharger et extraire le bundle tomcat [2] dans un répertoire de travail.</li>
<li>Passons à intellij IDEA. Il suffit de créer un nouveau module java avec le support &laquo;&nbsp;application server&nbsp;&raquo;. A cet écran, il suffit de créer un nouveau serveur tomcat et de pointer vers l&#8217;emplacement du bundle.</li>
<li>La dernière étape consiste à rendre la librairie cliente de bonita accessible dans la structure du projet (ctrl+alt+shift+S). Dans les Librairies, ajouter la lib bonita-client.jar que l&#8217;on retrouve dans les le répertoire lib/bonita du bundle tomcat. Il est aussi possible de spécifier la javadoc [3]</li>
<li>Il ne reste maintenant plus qu&#8217;à développer et exécuter notre application. Celle ci interagira automatiquement avec le moteur du bundle.</li>
</ul>
<ol>
<li>Site officiel d&#8217;Intellij IDEA : <a href="http://www.jetbrains.com/idea/">http://www.jetbrains.com/idea/</a>
<li>Bundle BOS tomcat : <a href="http://www.bonitasoft.com/products/BPM_downloads/all">http://www.bonitasoft.com/products/BPM_downloads/all</a></li>
<li>Java doc : <a href="http://www.bonitasoft.org/docs/javadoc/bpm_engine/5.6/">http://www.bonitasoft.org/docs/javadoc/bpm_engine/5.6/</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.espacedefouille.org/embarquer-bonita-open-solution-dans-intellij-idea/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Méthode pour concevoir son processus</title>
		<link>http://www.espacedefouille.org/methode-pour-concevoir-son-processus</link>
		<comments>http://www.espacedefouille.org/methode-pour-concevoir-son-processus#comments</comments>
		<pubDate>Thu, 12 Jan 2012 23:48:16 +0000</pubDate>
		<dc:creator>Frédéric Bouquet</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[Bonita]]></category>
		<category><![CDATA[Méthode]]></category>

		<guid isPermaLink="false">http://www.espacedefouille.org/?p=771</guid>
		<description><![CDATA[Bien des fois, le design de processus est une tâche si ardue qu&#8217;elle finit souvent par un vrai sac de noeuds bon à jeter. Cet article tente d&#8217;adresser cette problématique en viennant compléter le post du 29 novembre 2011 : &#171;&#160;où commencer son processus ?&#171;&#160; et propose une méthode de conception qui, je l&#8217;espère, vous permettra de concevoir un [...]]]></description>
			<content:encoded><![CDATA[<p>Bien des fois, le design de processus est une tâche si ardue qu&#8217;elle finit souvent par un vrai sac de noeuds bon à jeter. Cet article tente d&#8217;adresser cette problématique en viennant compléter le post du 29 novembre 2011 : &laquo;&nbsp;<a title="Où commencer son processus ?" href="http://www.espacedefouille.org/ou-commencer-son-processus">où commencer son processus ?</a>&laquo;&nbsp; et propose une méthode de conception qui, je l&#8217;espère, vous permettra de concevoir un processus avec <a title="Bonita Open Solution" href="http://www.bonitasoft.org/">Bonita Open Solution</a> aisément et rapidement.</p>
<h1>1. Formalisation du métier</h1>
<p>Un processus fait souvent intervenir différents acteurs et il peut être difficile d&#8217;extirper qui fait quoi et quand.</p>
<p>La première étape consiste donc à identifier clairement quels sont les différents profils qui interviendront dans le workflow. Une fois cette liste établie, l&#8217;étape suivante s&#8217;attaque aux processus vus par chaque acteur.Ainsi, on commence par établir le chemin le plus long de façon informelle : le &laquo;&nbsp;happy path&nbsp;&raquo;.</p>
<p>Ici, différentes tâches vont apparaître. Pour chaque tâche, il va falloir établir de façon claire et précise :</p>
<ul>
<li>Les évènements déclencheurs de l&#8217;action. Le plus souvent, ce sera la fin de l&#8217;étape précédente, mais cela peut être des évènements basés sur le temps, ou même une information envoyée par un autre processus, &#8230;</li>
<li>Le produit résultat de l&#8217;étape : quel est le livrable de l&#8217;action effectuée à cette étape ? Qu&#8217;est-ce que l&#8217;on cherche à obtenir, pourquoi est-ce que cette étape est nécessaire : en quoi est-ce qu&#8217;elle résulte ?</li>
<li>Les ressources requises en plus que le profil acteur de cette tâche : quels sont les outils dont il va avoir besoin, est-ce qu&#8217;il va devoir travailler avec quelqu&#8217;un d&#8217;autre, &#8230; En bref, tout ce qui existe avant la tâche, ce qui sera utilisé pendant la tâche, mais se retrouvera intact après son exécution.</li>
<li>Les informations et produits nécessaires à l&#8217;établissement de l&#8217;activité. Ces produits seront consommés et éventuellement modifiés en le produit résultat.</li>
<li>Identifier l&#8217;activité en tant que tel et quel est l&#8217;évènement provoqué : quel est l&#8217;objectif de la tâche et la décision qui en résulte. Une bonne convention de nommage est ici de nommer une activité par un verbe d&#8217;action à l&#8217;infinitif et un produit résultat. &laquo;&nbsp;Saisir les informations&nbsp;&raquo;, &laquo;&nbsp;Ouvrir un ticket&nbsp;&raquo;, &laquo;&nbsp;Acheter bouteille de lait&nbsp;&raquo;, &#8230;</li>
</ul>
<p>Une fois que toutes les tâches de ce happy path ont été spécifiées, il convient de traiter tous les chemins alternatifs en partant de la fin du processus. Soit, pour chaque étape depuis en partant de l&#8217;évenement de terminaison, est-ce que j&#8217;ai une décision alternative possible ? Un chemin d&#8217;exception, &#8230; Si la réponse est oui, ce chemin alternatif devient le nouveau chemin le plus long à clarifier comme défini précédemment.</p>
<p>A ce point, nous aurons pour chaque profil d&#8217;acteur une liste de micro processus qu&#8217;il va falloir agréger et dans un sens cartographier pour obtenir un design clair, précis et configurable&#8230;</p>
<h1>2. Configuration du ou des processus</h1>
<p>Plus haut, nous avons établi l&#8217;ensemble des connaissances, des informations qui étaient nécessaires à l&#8217;exécution des tâches, et les décisions en résultant.</p>
<p>Toutes ces informations ne sont pas nécessaires à l&#8217;avancée de notre processus. Il s&#8217;agit pour la plupart de données métier dont le processus et sa logique n&#8217;ont que faire. L&#8217;étape suivante consiste donc à identifier clairement les informations nécessaires au processus pour les modéliser et donner au processus cette connaissance.</p>
<p>Ainsi, il convient de créer les conteneurs pour ces données (les variables) et les éventuels connecteurs nécessaires à leur manipulation. Le processus peut, dans certains cas, nécessiter des actions sur des services externes. Il est maintenant nécessaire d&#8217;établir ces connexions et donner au processus la connaissance nécessaire à ce que ses activités automatiques soient réalisées correctement.</p>
<p>A ce moment, notre processus est prêt à être exécuté. Le problème : il n&#8217;a aucune interaction avec le métier et les utilisateurs ne peuvent pas effectivement travailler : c&#8217;est l&#8217;application métier au dessus du processus.</p>
<h1>3. Développement de l&#8217;application métier</h1>
<p>Pour chaque étape où un utilisateur doit interagir, il faut modéliser les écrans qu&#8217;il utilisera pour effectuer le travail qui lui est demandé. Il s&#8217;agit d&#8217;interfaces (web) qui serviront à saisir de l&#8217;information. Une saisie d&#8217;information doit répondre à des règles d&#8217;ergonomie et d&#8217;utilisabilité qu&#8217;il va falloir modéliser à partir des informations identifiées dans au premier point de notre méthode. Il s&#8217;agit du développement de la vue de notre application métier.</p>
<p>En parallèle, il est nécessaire de spécifier le modèle de données métier, les sources de données, et l&#8217;interaction qu&#8217;elles vont avoir entre elles. Une fois le modèle de données établi et les sources identifiées/créées, il ne reste plus qu&#8217;à connecter nos modèles de formulaires avec les données qui lui seront utiles.</p>
<p>A cette étape, notre processus est prêt à être utilisé, mais potentiellement moche et avec des temps de chargement non négligeables qui le rendent peu &laquo;&nbsp;user friendly&nbsp;&raquo;.</p>
<p>L&#8217;étape finale consiste donc à optimiser les performances là où nécessaire et à établir le look&#8217;n'feel final de notre application.</p>
<h1>Le mot de la fin</h1>
<p>Le développement d&#8217;un processus comprend trois grandes étapes consécutives : la spécification de la façon de travailler (1), la configuration du processus pour qu&#8217;il puisse s&#8217;exécuter (2) et le développement des interfaces utilisateur (3).</p>
<p>L&#8217;expérience montre que l&#8217;étape 1 semble souvent assez rapide à mettre en place mais nécessite hélas un travail de spécification non négligeable et très souvent mal évalué. L&#8217;étape 2 est souvent la plus rapide car elle est presque automatique. L&#8217;étape 3 est souvent le plus gros développement d&#8217;un projet où l&#8217;on fait face à des détails souvent négligeables et pourtant si problématiques&#8230; Comme on le dit souvent : le client est roi, alors soignons ce que nos utilisateurs voient tous les jours.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.espacedefouille.org/methode-pour-concevoir-son-processus/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Où commencer son processus ?</title>
		<link>http://www.espacedefouille.org/ou-commencer-son-processus</link>
		<comments>http://www.espacedefouille.org/ou-commencer-son-processus#comments</comments>
		<pubDate>Tue, 29 Nov 2011 21:59:37 +0000</pubDate>
		<dc:creator>Frédéric Bouquet</dc:creator>
				<category><![CDATA[BPM]]></category>
		<category><![CDATA[logistique]]></category>
		<category><![CDATA[organisation]]></category>
		<category><![CDATA[processus]]></category>
		<category><![CDATA[risque]]></category>

		<guid isPermaLink="false">http://www.espacedefouille.org/?p=745</guid>
		<description><![CDATA[Très souvent, on en vient à se demander où commencer son processus, par quel bout prendre notre projet pour avoir une modélisation aisée et rapide. Cet article tente de répertorier plusieurs idées qui peuvent permettre de débuter sans trop de heurts pour aboutir rapidement à un prototype fonctionnel. Qu&#8217;est-ce que l&#8217;on manipule ? Un processus [...]]]></description>
			<content:encoded><![CDATA[<p>Très souvent, on en vient à se demander où commencer son processus, par quel bout prendre notre projet pour avoir une modélisation aisée et rapide. Cet article tente de répertorier plusieurs idées qui peuvent permettre de débuter sans trop de heurts pour aboutir rapidement à un prototype fonctionnel.</p>
<h1>Qu&#8217;est-ce que l&#8217;on manipule ?</h1>
<p>Un processus a pour objet la manipulation d&#8217;une notion métier. Plus loin, un processus sert à traiter une action sur un objet métier. Par exemple, dans le cadre de l&#8217;organisation d&#8217;une formation, nous pourrions avoir les processus suivants :</p>
<ul>
<li>enregistrer une nouvelle formation,</li>
<li>enregistrer un nouveau participant à une session donnée,</li>
<li>suivre le payement d&#8217;un participant,</li>
<li>&#8230;</li>
</ul>
<p>Chaque cas, chaque instance de processus représente une session de formation, un stagiaire, une facture, &#8230; qui interagissent ensembles pour former un projet global : la gestion des formations.</p>
<h1>On commence où ? On obtient quoi ?</h1>
<p>A partir de l&#8217;idée qu&#8217;un processus représente une action sur une notion métier, il convient de se demander où l&#8217;on commence le design.</p>
<p>L&#8217;idée principale là derrière, c&#8217;est que le cas est créé par un évènement métier bien défini. Par exemple, le cas (l&#8217;instance de processus) d&#8217;enregistrement du stagiaire M. Dupont est créé par son enregistrement sur le site web.</p>
<p>Et qu&#8217;est-ce qui termine le processus ? Un processus a un objectif métier, un état de l&#8217;objet métier manipulé. Pour notre enregistrement par exemple, ce sera une fin de processus &laquo;&nbsp;stagiaire enregistré&nbsp;&raquo;, &laquo;&nbsp;stagiaire refusé&nbsp;&raquo;, &#8230;  Les fins de notre processus correspondent donc à ces états vers lesquels nous arrivons. Ainsi, il n&#8217;est pas rare qu&#8217;un processus puisse avoir plusieurs fins, suivant l&#8217;état obtenu.</p>
<h1>Et la gestion des risques dans tout ça ?</h1>
<p>Un processus peut être vu comme la standardisation d&#8217;un projet récurrent. En gestion de projet, nous avons plusieurs façons de gérer les risques :</p>
<ul>
<li>Tout se passe bien dans le meilleur des mondes, on ignore tout bonnement le risque : rien n&#8217;apparaît</li>
<li>On se débrouille pour ne jamais tomber dans le risque que l&#8217;on a identifié, auquel cas, la gestion de ce risque apparaîtra dans notre modèle</li>
<li>On identifie le risque et on le traite de façon exceptionnelle.</li>
</ul>
<p>Ce dernier cas est ce que l&#8217;on pourrait qualifier d&#8217;erreur métier, notion qui est disponible dans la norme BPMN2 par exemple. Une erreur métier correspond à un risque identifié qui, s&#8217;il se produit, place mon cas dans un état d&#8217;erreur. Auquel cas, cette erreur est identifiée et il convient de définir un traitement particulier.</p>
<p>Mais une erreur métier, ça représente quoi exactement ? De base, il y en a de deux types :</p>
<ul>
<li>une erreur qui survient au niveau technique et que l&#8217;on remonte au niveau métier. C&#8217;est le cas par exemple du cas où l&#8217;on doit récupérer l&#8217;information à traiter d&#8217;une base de donnée, mais que cette base de donnée est inaccessible, auquel cas, il faut définir une autre stratégie alternative de récupération de données, si elle est possible&#8230;</li>
<li>une erreur qui survient par le métier et impacte le métier. Par exemple, lors de la session de formation où le stagiaire ne se présente pas le premier jour.</li>
</ul>
<p><h1>Et comment prévoir l&#8217;imprévisible ?</h1>
<p>Avant tout, rester pragmatique. Un processus est là pour automatiser la gestion de plusieurs cas. Si l&#8217;on traite 70% des cas, c&#8217;est déjà bien. La question, que fait on des cas restants ?<br />
Est-ce pertinent de traiter ces cas d&#8217;exception alors qu&#8217;ils n&#8217;interviennent qu&#8217;une fois tous les 10 ans ? Le retour sur investissement d&#8217;un tel développement est loin d&#8217;être évident. Auquel cas, autant ne pas le modéliser et agir le moment venu.</p>
<p>Oui, mais&#8230; J&#8217;ai un processus qui automatise tout mon système. Comment est-ce que je peux agir manuellement là où tout est automatisé ? Comment faites vous avec vos systèmes existants ? En général, vous décrochez votre téléphone pour le service informatique pour qu&#8217;il traite l&#8217;information exceptionnelle. Là c&#8217;est pareil, mais cela nécessite de concevoir vos processus de telle façon qu&#8217;il vous sera toujours possible de traiter ces cas d&#8217;exception.</p>
<p>Voici quelques idées qui pourraient vous aider :</p>
<ul>
<li> Utiliser une base de donnée métier : ne pas stocker l&#8217;information dans le processus mais dans une base métier. Cela a aussi l&#8217;avantage de rendre ces données accessibles de l&#8217;extérieur</li>
<li> Utiliser des processus simples : c&#8217;est exactement ce que l&#8217;on disait en première partie, un processus par action sur un objet métier </li>
<li> Rester sur des processus le plus linéaires possibles. Après tout, la logistique nous apprend qu&#8217;un processus est une série d&#8217;actions qui débouchent sur un objectif métier précis, que si l&#8217;on traite les chemins alternatifs, on passe dans une gestion de projet, discipline beaucoup plus complexe </li>
</ul>
<p> Ces quelques principes de base pourront, je l&#8217;espère, vous permettre de concevoir rapidement des processus utilisables, simples à maintenir, mais surtout, qui n&#8217;aboutissent pas à des plat de spaghetti. Revenir sur ces principes de base lorsque l&#8217;on commence à perdre pied, c&#8217;est souvent une façon de redevenir pragmatique et trouver une issue simple et rapide à la trop forte complexité dans laquelle nous nous égarons trop souvent.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.espacedefouille.org/ou-commencer-son-processus/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les recorders dans Bonita Open Solution</title>
		<link>http://www.espacedefouille.org/les-recorders-dans-bonita-open-solution</link>
		<comments>http://www.espacedefouille.org/les-recorders-dans-bonita-open-solution#comments</comments>
		<pubDate>Tue, 22 Nov 2011 15:57:58 +0000</pubDate>
		<dc:creator>Frédéric Bouquet</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[Bonita]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[recorders]]></category>

		<guid isPermaLink="false">http://www.espacedefouille.org/?p=712</guid>
		<description><![CDATA[Les recorders sont un service du moteur de Bonita qui permettent de d&#8217;enregistrer les différents évènements du moteur. Dans les grandes lignes, il s&#8217;agit simplement d&#8217;implémenter un service bonita pour écouter ce qui nous intéresse et y réagir en conséquence. L&#8217;implémentation par défaut fournie par Bonita est de stocker l&#8217;état Bonita dans la base de [...]]]></description>
			<content:encoded><![CDATA[<p>Les recorders sont un service du moteur de Bonita qui permettent de d&#8217;enregistrer les différents évènements du moteur. Dans les grandes lignes, il s&#8217;agit simplement d&#8217;implémenter un service bonita pour écouter ce qui nous intéresse et y réagir en conséquence. L&#8217;implémentation par défaut fournie par Bonita est de stocker l&#8217;état Bonita dans la base de donnée journal. Une utilité étendue que l&#8217;on peut envisager à la première pensée est le log (savoir quand une tâche est démarrée, lorsque des acteurs sont assignés et qui ils sont, &#8230;). Ensuite, d&#8217;autres utilisations plus originales peut être envisagées comme envoyer un email aux candidats de chaque tâche créée.</p>
<p>Mettons donc les mains dans le cambouis.</p>
<h1>La configuration</h1>
<p>Les services du moteur se configurent dans le fichier <code>bonita/server/default/conf/bonita-server.xml</code>. Les recorders se chainent par leur déclaration dans la section <code>chainer</code> d&#8217;identifiant <code>recorder</code>.</p>

<div class="wp_codebox"><table><tr id="p7127"><td class="code" id="p712code7"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;chainer</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">'recorder'</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #808080; font-style: italic;">&lt;!-- Implémentation des recorders à utiliser --&gt;</span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ref</span> <span style="color: #000066;">object</span>=<span style="color: #ff0000;">'journal'</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/chainer<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Et un recorder (disons org.jaalon.MyRecorder) se déclare ainsi :</p>

<div class="wp_codebox"><table><tr id="p7128"><td class="code" id="p712code8"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;recorder</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">'org.jaalon.MyRecorder'</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;arg<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;string</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">'un parametre'</span> <span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/arg<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/recorder<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<h1>Et le code dans tout ça ?</h1>
<p>Le code, c&#8217;est pas bien compliqué. La seule dépendance requise est le bonita-server-<em>&lt;version&gt;</em>.jar</p>
<p>Un recorder implémente la classe org.ow2.bonita.services.Recorder. Chaque méthode représente un évènement qui peut survenir dans le moteur ; son corps, le traitement correspondant.</p>

<div class="wp_codebox"><table><tr id="p7129"><td class="code" id="p712code9"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MyRecorder <span style="color: #000000; font-weight: bold;">implements</span> Recorder <span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">/* code du recorder */</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Les paramètres de configuration fournis sont récupérés par le constructeur, par exemple, pour notre configuration plus haut</p>

<div class="wp_codebox"><table><tr id="p71210"><td class="code" id="p712code10"><pre class="java" style="font-family:monospace;">  <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> message<span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">public</span> MyRecorder <span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> message<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">message</span> <span style="color: #339933;">=</span> message<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Et réagir à un évènement ? Il s&#8217;agit simplement d&#8217;implémenter la méthode qui nous intéresse, par exemple, pour logger le fait qu&#8217;une instance est prête :</p>

<div class="wp_codebox"><table><tr id="p71211"><td class="code" id="p712code11"><pre class="java" style="font-family:monospace;">  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> recordTaskReady<span style="color: #009900;">&#40;</span>ActivityInstanceUUID uuid, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aset+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Set</span></a> candidates,
                              <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> userId<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    LOG.<span style="color: #006633;">log</span><span style="color: #009900;">&#40;</span>Level.<span style="color: #006633;">INFO</span>, <span style="color: #0000ff;">&quot;Activity &quot;</span><span style="color: #339933;">+</span>uuid<span style="color: #339933;">+</span><span style="color: #0000ff;">&quot; is ready&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Et l&#8217;accès au moteur me direz vous ? Ici, il n&#8217;est plus rentable d&#8217;utiliser l&#8217;API publique du moteur, mais passer par l&#8217;environnement du moteur et manipuler les objets directement depuis l&#8217;intérieur. Tout se fait en passant par l&#8217;EnvTool. Pour certains cas, les méthodes accessibles à partir de l&#8217;API publique peuvent être pratiques, alors on utiliserait ici l&#8217;accesseur renvoyé par <code lang="Java"> LocalAPIAccessorFactory.getStandardServerAPIAccessor()</code></p>
<p>Ainsi, pour récupérer la valeur d&#8217;une variable par exemple :</p>

<div class="wp_codebox"><table><tr id="p71212"><td class="code" id="p712code12"><pre class="java" style="font-family:monospace;">EnvTool.<span style="color: #006633;">getAllQueriers</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getProcessInstance</span><span style="color: #009900;">&#40;</span>processUUID<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getLastKnownVariableValues</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;myVariableName&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.espacedefouille.org/les-recorders-dans-bonita-open-solution/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Webservices REST avec Jetty et cxf</title>
		<link>http://www.espacedefouille.org/webservices-rest-avec-jetty-et-cxf</link>
		<comments>http://www.espacedefouille.org/webservices-rest-avec-jetty-et-cxf#comments</comments>
		<pubDate>Tue, 15 Nov 2011 00:38:47 +0000</pubDate>
		<dc:creator>Frédéric Bouquet</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[apache-cxf]]></category>
		<category><![CDATA[jetty]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://www.espacedefouille.org/?p=700</guid>
		<description><![CDATA[Ce document explique sommairement comment établir un serveur pour partager des ressources REST. Un webservice simple Voici le code d&#8217;un service simple qui permet d&#8217;afficher &#171;&#160;coucou&#160;&#187; via un GET en se basant sur JAX-RS. import javax.ws.rs.GET; import javax.ws.rs.Path; &#160; public class Resource &#123; @GET @Path&#40;&#34;/test&#34;&#41; public String test&#40;&#41; &#123; return &#34;coucou&#34;; &#125; &#125; Exposer une [...]]]></description>
			<content:encoded><![CDATA[<p>Ce document explique sommairement comment établir un serveur pour partager des ressources REST.</p>
<h1>Un webservice simple</h1>
<p>Voici le code d&#8217;un service simple qui permet d&#8217;afficher &laquo;&nbsp;coucou&nbsp;&raquo; via un GET en se basant sur JAX-RS.</p>

<div class="wp_codebox"><table><tr id="p70017"><td class="code" id="p700code17"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.ws.rs.GET</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.ws.rs.Path</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Resource <span style="color: #009900;">&#123;</span>
	@GET
	@Path<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/test&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> test<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;coucou&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<h1>Exposer une resource</h1>
<p>Il convient maintenant d&#8217;exposer cette ressource à l&#8217;aide de cxf. Pour cela, les étapes les plus simples sont les suivantes :</p>
<ol>
<li>Tout débute par la création d&#8217;un JAXRSServerFactoryBean : une fabrique de serveur REST</li>
<li>Il faut ensuite exposer la resource à l&#8217;aide de la resource à l&#8217;aide de  la méthode setResourceClasses</li>
<li>Il ne reste qu&#8217;à demander au serveur d&#8217;écouter avant de le créer.</li>
</ol>
<div>Cela donne le code suivant :</div>

<div class="wp_codebox"><table><tr id="p70018"><td class="code" id="p700code18"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> startJetty <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> args<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		JAXRSServerFactoryBean sf <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> JAXRSServerFactoryBean<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		sf.<span style="color: #006633;">setResourceClasses</span><span style="color: #009900;">&#40;</span>Resource.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		sf.<span style="color: #006633;">setAddress</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://localhost:9080/&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		sf.<span style="color: #006633;">create</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<h1>Compiler et lancer</h1>
<p>La seule chose à faire maintenant est de construire un pom.xml maven avec les dépendances nécessaires :</p>

<div class="wp_codebox"><table><tr id="p70019"><td class="code" id="p700code19"><pre class="xml" style="font-family:monospace;">  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.apache.cxf<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>cxf-rt-frontend-jaxrs<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2.5.0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.apache.cxf<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>cxf-rt-transports-http-jetty<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2.5.0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Le projet se lance maintenant avec la commande :</p>

<div class="wp_codebox"><table><tr id="p70020"><td class="code" id="p700code20"><pre class="bash" style="font-family:monospace;">mvn <span style="color: #7a0874; font-weight: bold;">exec</span>:java -Dexec.mainClass=<span style="color: #ff0000;">&quot;org.jaalon.simpleJettyServer.startJetty&quot;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.espacedefouille.org/webservices-rest-avec-jetty-et-cxf/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tête la première dans Drools</title>
		<link>http://www.espacedefouille.org/tete-la-premiere-dans-drools</link>
		<comments>http://www.espacedefouille.org/tete-la-premiere-dans-drools#comments</comments>
		<pubDate>Tue, 18 Oct 2011 15:19:38 +0000</pubDate>
		<dc:creator>Frédéric Bouquet</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[Drools]]></category>

		<guid isPermaLink="false">http://www.espacedefouille.org/?p=674</guid>
		<description><![CDATA[Jboss Drools est un moteur de règles métier intéressant mais l&#8217;aborder semble une tâche ardue. Plutôt que de se laisser intimider, plongeons la tête la première dans l&#8217;outil, de son téléchargement à son utilisation, jusqu&#8217;à ce qui m&#8217;intéresse en dernier lieu : le piloter avec Bonita. Où commencer ? Sur http://www.jboss.org/drools. Ici, nous avons visiblement le [...]]]></description>
			<content:encoded><![CDATA[<p>Jboss Drools est un moteur de règles métier intéressant mais l&#8217;aborder semble une tâche ardue. Plutôt que de se laisser intimider, plongeons la tête la première dans l&#8217;outil, de son téléchargement à son utilisation, jusqu&#8217;à ce qui m&#8217;intéresse en dernier lieu : le piloter avec Bonita.</p>
<h1>Où commencer ?</h1>
<p>Sur <a title="le site officiel" href="http://www.jboss.org/drools" target="_blank">http://www.jboss.org/drools</a>. Ici, nous avons visiblement le choix entre 5 projets :</p>
<ul>
<li>Drools Guvnor : pour la gestion des règles métier</li>
<li>Drools Expert : le moteur de règles</li>
<li>jBPM 5 : le BPMS de jboss</li>
<li>Dools Fusion : pour la gestion d&#8217;évènements métier. Cela semble s&#8217;apparenter à un bus d&#8217;évèments</li>
<li>Drools planner : un plannificateur automatique (recherche opérationnelle inside :))</li>
</ul>
<div>Je pense que pour commencer, Drools guvnor est la bonne solution :</div>
<blockquote>
<div>Guvnor is the web application and repository to govern Drools and jBPM assets</div>
</blockquote>
<p>Téléchargement effectué, que nous réserve le manuel de référence ?<br />
Le quickstart tour part du principe que l&#8217;installation de drools a été effectuée donc &#8230;</p>
<h1>Installation de Drools Guvnor</h1>
<p>A l&#8217;heure où j&#8217;écris ces lignes, la dernière version stable est la 5.2.0, donc c&#8217;est sur l&#8217;installation de cette version que nous allons couvrir. RDV au chapitre 13 du manuel de référence.</p>
<p>Guvnor est fourni comme un fichier .war, déployons le sous un apache tomcat. Dans les grandes lignes :</p>
<ol>
<li>Télécharger et extraire une archive de tomcat (disons la dernière version 6 stable)</li>
<li>Copier guvnot (binaries/guvnor-5.2.0.Final-tomcat-6.0.war) dans le dossier webapps de tomcat</li>
<li>Lancer le tomcat</li>
<li>Se connecter à <a title="http://localhost:8080/guvnor" href="http://localhost:8080/guvnor" target="_blank">http://localhost:8080/guvnor</a> (j&#8217;ai renommé le fichier .war en guvnor.war pour me simplifier la vie)</li>
</ol>
<p>Et installons un dépôt d&#8217;exemple en cliquant au prompt sur &laquo;&nbsp;Yes, please install samples&nbsp;&raquo;</p>
<p>L&#8217;exemple vient avec un modèle et un ensemble de règles pour nous aider à prendre en main l&#8217;outil. L&#8217;interface présente à gauche les grandes fonctionnalités, ici seule l&#8217;administration et la base de connaissance (knowledge base) nous intéressent pour l&#8217;instant.</p>
<p>Nous avons à l&#8217;heure actuelle une configuration de base sur le projet exemple, cependant, pour un cas réel, il nous faut une configuration de base et écrire des règles. Ainsi :</p>
<h1>Configuration de base</h1>
<ol>
<li>Créer une catégorie pour le projet (administration-&gt;categories)</li>
<li>Créer un package pour le projet (knowledge base-&gt;create new-&gt;package)</li>
<li>Uploader le modèle de données (une librairie java .jar)</li>
</ol>
<p>Nous sommes maintenant prêt à définir nos règles métier</p>
<h1>Ecrire des règles</h1>
<ol>
<li>Dans knowledge base : create new-&gt;new rule</li>
<li>Définir un nom pour la règle</li>
<li>Définir une catégorie (un tag)</li>
<li>Etablir une règle métier à l&#8217;aide du DSL correspondant</li>
</ol>
<p>Ces quelques lignes se sont concentrées sur les grands composants de Drools, ainsi que l&#8217;installation du moteur de règle métier et l&#8217;interface utilisateur par défaut.<br />
D&#8217;autres articles seront à venir sur le vocabulaire intrasèque à Drools et son utilité réelle, sur des exemples concrets d&#8217;utilisation et sur l&#8217;utilité d&#8217;un moteur de règle en relation avec un BPMS. Bien entendu, au fur et à mesure que l&#8217;on plongera dans l&#8217;exploration du domaine des règles métier, nous rentrerons plus en détail dans les choses techniques qui régissent l&#8217;outil.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.espacedefouille.org/tete-la-premiere-dans-drools/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Administration web de dépôts mercurial avec rhodecode</title>
		<link>http://www.espacedefouille.org/administration-web-de-depots-mercurial-avec-rhodecode</link>
		<comments>http://www.espacedefouille.org/administration-web-de-depots-mercurial-avec-rhodecode#comments</comments>
		<pubDate>Sat, 13 Aug 2011 15:35:04 +0000</pubDate>
		<dc:creator>Frédéric Bouquet</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[hg]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[rhodecode]]></category>

		<guid isPermaLink="false">http://www.espacedefouille.org/?p=649</guid>
		<description><![CDATA[Mercurial (hg pour les intimes) est un outil de gestion de sources distribué à l&#8217;instar de git, développé en python. L&#8217;avantage que l&#8217;on peut lui trouver est sa simplicité d&#8217;utilisation, son port sur les systèmes d&#8217;exploitation les plus répandus et son extensibilité aisée. Cet article a pour objet l&#8217;installation et la configuration de rhodecode, une [...]]]></description>
			<content:encoded><![CDATA[<p>Mercurial (hg pour les intimes) est un outil de gestion de sources distribué à l&#8217;instar de git, développé en python. L&#8217;avantage que l&#8217;on peut lui trouver est sa simplicité d&#8217;utilisation, son port sur les systèmes d&#8217;exploitation les plus répandus et son extensibilité aisée.</p>
<p>Cet article a pour objet l&#8217;installation et la configuration de rhodecode, une application web permettant d&#8217;administrer de multiples dépôts mercurial.</p>
<h1>Mise en place de rhodecode</h1>
<p>Les manipulations ont été effectuées sur un serveur archlinux. Pour d&#8217;autres distributions/OS, la procédure reste équivalente.</p>
<h2>Versions utilisées</h2>
<ul>
<li>mercurial mercurial 1.9.1</li>
<li>pip 1.0.2</li>
</ul>
<h2>Procédure</h2>
<div>
<ol>
<li>Installer rhodecode
<pre>pip install rhodecode</pre>
</li>
<li>Créer l&#8217;utilisateur rhodecode et se logger en tant que tel et créer le répertoire pour les dépôts
<pre>useradd -m rhodecode
su - rhodecode
mkdir repos</pre>
</li>
<li>Créer le fichier de configuration
<pre>paster make-config RhodeCode production.ini</pre>
</li>
<li>Configuration de base
<pre>paster setup-app production.ini</pre>
</li>
</ol>
<p>Il ne reste alors plus qu&#8217;à lancer le serveur :</p>
<pre>paster serve production.ini</pre>
</div>
<p>Note importante : le serveur écoute en local sur le port 5000. Pour écouter à l&#8217;extérieur ou sur un autre port, deux solutions :</p>
<ol>
<li>Editer le fichier production.ini afin de changer l&#8217;IP et le port d&#8217;écoute</li>
<li>Mettre en place un proxy http pour rediriger les requêtes</li>
</ol>
<h1>Liens utiles</h1>
<ol>
<li><a href="http://mercurial.selenic.com/">Mercurial</a></li>
<li><a href="http://rhodecode.org/">RhodeCode</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.espacedefouille.org/administration-web-de-depots-mercurial-avec-rhodecode/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retour sur l&#8217;utilisation des messages dans Bonita Open Solution</title>
		<link>http://www.espacedefouille.org/retour-sur-lutilisation-des-messages-dans-bonita-open-solution</link>
		<comments>http://www.espacedefouille.org/retour-sur-lutilisation-des-messages-dans-bonita-open-solution#comments</comments>
		<pubDate>Fri, 17 Jun 2011 16:19:12 +0000</pubDate>
		<dc:creator>Frédéric Bouquet</dc:creator>
				<category><![CDATA[BPM]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[Bonita]]></category>
		<category><![CDATA[BPMN]]></category>
		<category><![CDATA[message]]></category>

		<guid isPermaLink="false">http://www.espacedefouille.org/?p=616</guid>
		<description><![CDATA[L&#8217;utilisation et la configuration des messages est souvent quelque chose de mal compris par les utilisateurs de BOS. Le but de cet article est de reprendre ces notions pour tenter d&#8217;éclaircir les choses. Quelques rappels sur les messages Les messages permettent à deux processus de communiquer entre eux, et éventuellement faire transiter de l&#8217;information. Les [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;utilisation et la configuration des messages est souvent quelque chose de mal<br />
compris par les utilisateurs de BOS. Le but de cet article est de<br />
reprendre ces notions pour tenter d&#8217;éclaircir les choses.</p>
<h1><strong>Quelques rappels sur les messages</strong></h1>
<p>Les messages permettent à deux processus de communiquer entre eux, et<br />
éventuellement faire transiter de l&#8217;information. Les propriétés des messages<br />
sont les suivantes :</p>
<ul>
<li>Un message est unique : une fois traité, le message est détruit</li>
<li>Un message doit avoir une cible unique : un message ne peut être envoyé qu&#8217;à<br />
un processus donné</li>
<li>Un message ne peut relier deux évènements du même processus</li>
</ul>
<p>L&#8217;envoi et la réception de message se fait par l&#8217;intermédiaire d&#8217;évènements<br />
d&#8217;envoi ou de réception de messages. L&#8217;envoi de messages peut se faire en<br />
cours de processus ou en fin de processus. La réception peut intervenir en<br />
cours d&#8217;exécution ou pour débuter un processus.</p>
<p><a href="http://www.espacedefouille.org/wp-content/uploads/2011/06/Evenements_message.png"><img class="size-full wp-image-618 alignleft" title="Evènements relatifs aux messages" src="http://www.espacedefouille.org/wp-content/uploads/2011/06/Evenements_message.png" alt="Evènements relatifs aux messages" width="491" height="93" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Des tâches d&#8217;envoi et de réception de messages existent et agissent de la même façon que les évènements correspondants.</p>
<p><a href="http://www.espacedefouille.org/wp-content/uploads/2011/06/Taches_messages.png"><img class="alignleft size-full wp-image-619" title="Tâches d'envoi et de réception de messages" src="http://www.espacedefouille.org/wp-content/uploads/2011/06/Taches_messages.png" alt="Tâches d'envoi et de réception de messages" width="272" height="79" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>L&#8217;évènement d&#8217;envoi de messages peut envoyer un ou plusieurs messages alors que<br />
la réception ne peut traiter qu&#8217;un message donné. L&#8217;évènement de réception peut<br />
éventuellement filtrer le message à traiter à l&#8217;aide d&#8217;une condition. cela<br />
permet de cibler précisément le cas ciblé.</p>
<h1><strong>Configuration de l&#8217;envoi et la réception de messages</strong></h1>
<p>La première étape est de modéliser deux processus qui vont communiquer entre eux en faisant apparaître les évènements d&#8217;envoi et de réception de messages.</p>
<p><img class="size-full wp-image-620 alignnone" title="Ajout des évènements dans le diagramme" src="http://www.espacedefouille.org/wp-content/uploads/2011/06/Evenements_messages.png" alt="Ajout des évènements dans le diagramme" width="635" height="282" /></p>
<p>Il ne reste plus qu&#8217;à ajouter un message :</p>
<ul>
<li>sélectionner l&#8217;évènement d&#8217;envoi de processus et dans les détails Général-&gt;Message<br />
<a href="http://www.espacedefouille.org/wp-content/uploads/2011/06/Selection_envoi_1.png"><img class="size-full wp-image-621 alignnone" title="Sélection de l'envoi de messages" src="http://www.espacedefouille.org/wp-content/uploads/2011/06/Selection_envoi_1.png" alt="Sélection de l'envoi de messages" width="187" height="141" /></a></li>
</ul>
<ul>
<li>Ajouter le message</li>
</ul>
<ul>
<li>configurer le message en définissant son nom, le processus cible ainsi que la tâche de réception</li>
</ul>
<p style="padding-left: 60px;"><a href="http://www.espacedefouille.org/wp-content/uploads/2011/06/msg_config11.png"><img class="alignnone size-full wp-image-623" title="Configuration du message" src="http://www.espacedefouille.org/wp-content/uploads/2011/06/msg_config11.png" alt="Configuration du message" width="533" height="189" /></a></p>
<h1>Faire transiter les données</h1>
<p>Pour faire transiter des données d&#8217;un processus l&#8217;un autre, il convient de<br />
créer des variables locales au message pour copier la valeur qui nous intéresse.</p>
<p>En pratique :</p>
<p>Tout d&#8217;abord, il faut ajouter une variable locale au message en éditant le<br />
message que l&#8217;on vient de créer :</p>
<p>Et de configurer la variable locale au message en l&#8217;initialisant avec la valeur<br />
de la variable du processus émetteur</p>
<p><a href="http://www.espacedefouille.org/wp-content/uploads/2011/06/Ajout_variable.png"><img class="alignnone size-full wp-image-624" title="Ajout des données" src="http://www.espacedefouille.org/wp-content/uploads/2011/06/Ajout_variable.png" alt="Ajout des données" width="493" height="263" /></a></p>
<p>A ce stade, le message contient la donnée qui nous intéresse, mais à la</p>
<p>réception, il nous reste à transférer cette valeur au processus cible. Pour<br />
cela, il suffit d&#8217;utiliser un connecteur Bonita pour mettre à jour la ou les<br />
variables correspondantes (set variable(s)) dans le processus cible :</p>
<ul>
<li>Sélectionner l&#8217;évènement de réception du message</li>
</ul>
<p style="padding-left: 30px;"><a href="http://www.espacedefouille.org/wp-content/uploads/2011/06/Rcp_message_selectionne.png"><img class="alignnone size-full wp-image-625" title="Réception évènement réception message" src="http://www.espacedefouille.org/wp-content/uploads/2011/06/Rcp_message_selectionne.png" alt="Réception évènement réception message" width="122" height="161" /></a></p>
<ul>
<li>Ajouter un connecteur en allant dans l&#8217;onglet général-&gt;Connecteurs-&gt;Ajouter&#8230;</li>
</ul>
<p style="padding-left: 30px;"><a href="http://www.espacedefouille.org/wp-content/uploads/2011/06/Ajout_connecteur.png"><img class="alignnone size-full wp-image-626" title="Connecteur mise à jour de variables" src="http://www.espacedefouille.org/wp-content/uploads/2011/06/Ajout_connecteur.png" alt="Connecteur mise à jour de variables" width="527" height="229" /></a></p>
<ul>
<li>Puis configurer le connecteur avec le nom de la variable cible et la valeur à lui donner</li>
</ul>
<p style="padding-left: 30px;"><a href="http://www.espacedefouille.org/wp-content/uploads/2011/06/set_variables.png"><img class="alignnone size-full wp-image-627" title="Mise à jour de variables" src="http://www.espacedefouille.org/wp-content/uploads/2011/06/set_variables.png" alt="Mise à jour de variables" width="469" height="338" /></a></p>
<p><span style="font-size: 26px; font-weight: bold;">4. Corrélation cas/message</span></p>
<p>&nbsp;</p>
<p>J&#8217;en parlais en introduction, un message doit avoir un cas cible. Or, lors de<br />
sa définition, il n&#8217;est précisé que le processus et la tâche cible. Le filtrage<br />
sur le cas doit se faire dans l&#8217;évènement de réception de message avec la<br />
condition de réception.<br />
Cette condition permet de comparer une valeur contenue dans le message avec une<br />
valeur du processus cible. Cela permet par exemple de s&#8217;assurer que le dossier<br />
dont l&#8217;information est contenue dans le message est bien envoyé au cas affecté<br />
à son traitement.</p>
<p>Pour effectuer la corrélation entre un cas et un message reçu :</p>
<ul>
<li>sélectionner l&#8217;évènement de réception du message</li>
<li>paramétrer la condition de réception du message</li>
</ul>
<p style="padding-left: 30px;"><a href="http://www.espacedefouille.org/wp-content/uploads/2011/06/correlation.png"><img class="alignnone size-full wp-image-628" title="Corrélation" src="http://www.espacedefouille.org/wp-content/uploads/2011/06/correlation.png" alt="Corrélation" width="722" height="296" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.espacedefouille.org/retour-sur-lutilisation-des-messages-dans-bonita-open-solution/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Revue de presse, semaine 52</title>
		<link>http://www.espacedefouille.org/revue-de-presse-semaine-52</link>
		<comments>http://www.espacedefouille.org/revue-de-presse-semaine-52#comments</comments>
		<pubDate>Fri, 31 Dec 2010 09:58:34 +0000</pubDate>
		<dc:creator>Frédéric Bouquet</dc:creator>
				<category><![CDATA[Revue de presse]]></category>

		<guid isPermaLink="false">http://www.espacedefouille.org/?p=592</guid>
		<description><![CDATA[Dernière revue de presse de l&#8217;année. SQL + NoSQL = Yes ! Ivy resolves downloads but ignores some artifacts (though not modules) 123, go! La revue de presse d’Henri: Semaine 51 Design for developers Using JBoss Rules (Drools) in Scala Object Database Programming with JPA and NetBeans Java Interface Rules Wish List: Java Object Replacement [...]]]></description>
			<content:encoded><![CDATA[<p>Dernière revue de presse de l&#8217;année.</p>
<p><a href="http://decrypt.ysance.com/2010/11/sql-et-nosql/">SQL + NoSQL = Yes !</a></p>
<p><a href="http://java.dzone.com/articles/ivy-resolve-downloads-ignores">Ivy resolves downloads but ignores some artifacts (though not modules)</a></p>
<p><a href="http://blogs.sun.com/jrose/entry/invokedynamic_in_build_123">123, go!</a></p>
<p><a href="http://blog.octo.com/la-revue-de-presse-d%E2%80%99henri-semaine-51">La revue de presse d’Henri: Semaine 51</a></p>
<p><a href="http://thecodersbreakfast.net/index.php?post/2010/12/27/Design-for-developers">Design for developers</a></p>
<p><a href="http://gettingcirrius.blogspot.com/2010/12/using-jboss-rules-drools-in-scala.html">Using JBoss Rules (Drools) in Scala</a></p>
<p><a href="http://java.dzone.com/articles/getting-started-jpa-and">Object Database Programming with JPA and NetBeans</a></p>
<p><a href="http://java.dzone.com/news/java-interface-rules"> Java Interface Rules</a></p>
<p><a href="http://java.dzone.com/articles/wish-list-java-object"> Wish List: Java Object Replacement</a></p>
<p><a href="http://java.dzone.com/articles/j2ee-not-completely-dead-yet"> J2EE is NOT Completely Dead Yet &#8211; but You Can Save Time and Money using JRebel</a></p>
<p><a href="http://java.dzone.com/articles/10-effective-ways-become-good"> 10 Effective Ways to Become a Good Programmer</a></p>
<p><a href="http://java.dzone.com/news/understanding-tomcat"> Understanding Tomcat Configuration</a></p>
<p><a href="http://jamesshore.com/Blog/Lets-Play/Episode-71.html">Let&#8217;s Play TDD #71: Poking at Listeners</a></p>
<p><a href="http://blog.xebia.fr/2010/12/27/architecture-lean-penser-grand-agir-petit/">Architecture Lean – Penser grand, agir petit</a></p>
<p><a href="http://blog.xebia.fr/2010/12/24/retour-d-experience-scrum-applique-a-un-repas-de-noel/">Retour d’expérience Scrum appliqué à un repas de noël</a></p>
<p><a href="http://blogs.sun.com/arungupta/entry/totd_152_glassfish_installer_typical">TOTD #152: GlassFish Installer &#8211; Typical and Custom installation</a></p>
<p><a href="http://blogs.sun.com/javaspotlight/entry/java_spotlight_podcast_9_holiday">Java Spotlight Podcast 9: Holiday Greetings 2010</a></p>
<p><a href="http://blog.jayway.com/2010/12/27/rest-assured-or-how-to-easily-test-rest-services-in-java/">REST Assured – Or how to easily test REST services in Java</a></p>
<p><a href="http://testingpodcast.com/iwst-time-management-for-testers/"> IWST – Time management for testers</a></p>
<p><a href="http://www.infoq.com/presentations/spring-roo-11-intro">Introduction to Spring Roo</a></p>
<p><a href="http://www.infoq.com/news/2010/12/complete-with-low-bug-counts">How To Complete Stories Without Leaving Bugs Behind</a></p>
<p><a href="http://blog.jayway.com/2010/12/30/opengl-es-tutorial-for-android-%E2%80%93-part-vi-textures">OpenGL ES Tutorial for Android – Part VI – Textures</a></p>
<p><a href="http://blog.jayway.com/2010/12/30/review-of-crafting-rails-applications-by-jos-valim/">Review of Crafting Rails Applications, by José Valim</a></p>
<p><a href="http://blog.jayway.com/2010/12/28/using-powermock-with-spring-integration-testing/">Using PowerMock with Spring integration testing</a></p>
<p><a href="http://blogs.sun.com/geertjan/entry/netbeans_platform_runtime_inspector">NetBeans Platform Runtime Inspector </a></p>
<p><a href="http://blogs.sun.com/yamini/entry/using_glassfish_v3_1_ssh">Using GlassFish v3.1 SSH Provisioning Commands</a></p>
<p><a href="http://blogs.sun.com/javaspotlight/entry/java_spotlight_podcast_10_java">Java Spotlight Podcast 10: Java Duchess</a></p>
<p><a href="http://blogs.sun.com/malkit/entry/finding_kth_minimum_partial_ordering">Finding Kth Minimum (partial ordering) – Using Tournament Algorithm</a></p>
<p><a href="http://www.infoq.com/interviews/gil-tene-azul-zing">Azul Puts the Zing in Java</a></p>
<p><a href="http://www.infoq.com/presentations/mobile-web-50">Mobile HTML 5.0</a></p>
<p><a href="http://www.infoq.com/interviews/Linda-Rising-Customer-Interaction-Patterns">Linda Rising on Customer Interaction Patterns</a></p>
<p><a href="http://www.infoq.com/news/2010/12/gartner-systematic-soa-report">Gartner Vendor Report: Application Infrastructure For Systematic SOA-Style Application Projects</a></p>
<p><a href="http://www.infoq.com/news/2010/12/getting-the-customer-involved">Getting the Customer Involved</a></p>
<p><a href="http://www.infoq.com/presentations/deriving-agility-from-soa-bpm">Deriving Agility from SOA and BPM &#8211; Ten Things that Separate the Winners from the Losers</a></p>
<p><a href="http://www.infoq.com/articles/estimation-toolkit">Estimation Toolkit</a></p>
<p><a href="http://www.sonatype.com/people/2010/12/developing-with-eclipse-and-maven/">Developing with Eclipse and Maven</a></p>
<p><a href="http://allankelly.blogspot.com/2010/12/inbound-outbound-marketing.html">Inbound &#038; Outbound marketing</a></p>
<p><a href="http://blog.xebia.fr/2010/12/29/utiliser-guice-et-peaberry-pour-developper-un-plugin-eclipse/">Utiliser Guice et Peaberry pour développer un plugin Eclipse</a></p>
<p><a href="http://blog.xebia.fr/2010/12/28/revue-de-presse-xebia-191/">Revue de Presse Xebia</a></p>
<p><a href="http://architects.dzone.com/videos/realtime-search-lucene-twitter"> Realtime Search With Lucene at Twitter</a></p>
<p><a href="http://java.dzone.com/articles/using-default-values"> Using Default Values for Properties in Spring</a></p>
<p><a href="http://java.dzone.com/articles/creating-jax-ws-webservice">Creating JAX-WS Web Service Using Service Data Objects (SDO) Instead of JAXB-bound POJOs</a></p>
<p><a href="http://java.dzone.com/tips/how-use-wicket-jee6">How to Use Wicket With JEE6</a></p>
<p><a href="http://java.dzone.com/articles/it-time-switch-back-intellij">Is it Time to Switch Back to IntelliJ?</a></p>
<p><a href="http://css.dzone.com/articles/javascript%E2%80%99s-prototypal"> JavaScript’s Prototypal Inheritance Explained</a></p>
<p><a href="http://java.dzone.com/articles/java-web-application">Java Web Application Development Kick off – Technical Items</a></p>
<p><a href="http://java.dzone.com/articles/eight-important-books-software">Eight important books for software developers</a></p>
<p><a href="http://jamesshore.com/Blog/Lets-Play/Episode-72.html">Let&#8217;s Play TDD #72: Starting to Look Like a Real Application</a></p>
<p><a href="http://jamesshore.com/Blog/Lets-Play/Episode-73.html">Let&#8217;s Play TDD #73: Cycles</a></p>
<p><a href="http://jamesshore.com/Blog/Lets-Play/Episode-74.html">Let&#8217;s Play TDD #74: Number Formatting Spike</a></p>
<p><a href="http://insideria.com/2010/12/html5-recipes-using-modernizr.html">HTML5 Recipes: Using Modernizr</a></p>
<p><a href="http://jsfunit.blogspot.com/2010/12/jsf-on-jboss-as6-final.html"> JSF on JBoss AS6 Final</a></p>
<p><a href="http://soa.sys-con.com/node/1660235">How to Limit URI Length Without Recompiling Apache</a></p>
<p><a href="http://blog.octo.com/premiers-pas-avec-openerp/">Premiers pas avec OpenERP</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.espacedefouille.org/revue-de-presse-semaine-52/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Revue de presse, semaine 51</title>
		<link>http://www.espacedefouille.org/revue-de-presse-semaine-51</link>
		<comments>http://www.espacedefouille.org/revue-de-presse-semaine-51#comments</comments>
		<pubDate>Fri, 24 Dec 2010 00:29:11 +0000</pubDate>
		<dc:creator>Frédéric Bouquet</dc:creator>
				<category><![CDATA[Revue de presse]]></category>

		<guid isPermaLink="false">http://www.espacedefouille.org/?p=560</guid>
		<description><![CDATA[Revue de presse pour la semaine 51. Joyeuses fêtes ! Video: What is GSM? Video: Gabriel Solomon of GSM Association talks about GSM Video: Understanding GSM and CDMA Technology Video: Wireless Machine-to-Machine (M2M) Basics: IP Addressing, Choosing Between Dynamic and Fixed IP Video: Wireless M2M Basics: Data Communication Path, VPN vs Plain Internet Connections Video: [...]]]></description>
			<content:encoded><![CDATA[<p>Revue de presse pour la semaine 51. Joyeuses fêtes !</p>
<p><a href="http://m2m.com/docs/DOC-1019">Video: What is GSM?</a></p>
<p><a href="http://m2m.com/docs/DOC-1020">Video: Gabriel Solomon of GSM Association talks about GSM</a></p>
<p><a href="http://m2m.com/docs/DOC-1022">Video: Understanding GSM and CDMA Technology</a></p>
<p><a href="http://m2m.com/docs/DOC-1017">Video: Wireless Machine-to-Machine (M2M) Basics: IP Addressing, Choosing Between Dynamic and Fixed IP</a></p>
<p><a href="http://m2m.com/docs/DOC-1005">Video: Wireless M2M Basics: Data Communication Path, VPN vs Plain Internet Connections</a></p>
<p><a href="http://m2m.com/docs/DOC-1006"> Video: Wireless Machine-to-Machine (M2M) Basics: Roaming, How it Works</a></p>
<p><a href="http://www.touilleur-express.fr/2010/12/17/soiree-java-avance-avec-olivier-croisier-au-paris-jug/">Soirée Java avancé avec Olivier Croisier au Paris JUG</a> (Annotations)</p>
<p><a href="http://www.theserverlabs.com/blog/2010/12/17/smooks-processing-recipies/"> Smooks processing recipies</a></p>
<p><a href="http://blogs.sun.com/arungupta/entry/web_app_development_using_java">Web App Development using Java EE 6, GlassFish, and Eclipse &#8211; Webinar Recording</a></p>
<p><a href="http://blogs.sun.com/malkit/entry/finding_second_minimum_with_repeating">Finding Second Minimum with REPEATING elements in array</a></p>
<p><a href="http://www.infoq.com/news/2010/12/soa-risk-management">SOA and Information Risk Management</a></p>
<p><a href="http://www.infoq.com/news/2010/12/agile-scrum-retrospectives">Agile/Scrum Retrospectives–Tips and Tricks</a></p>
<p><a href="http://blog.xebia.fr/2010/12/17/application-hors-ligne-html5-le-javascript/">Application hors-ligne HTML5 le JavaScript</a></p>
<p><a href="http://www.infoq.com/presentations/Yes-SQL">Yes, SQL!</a></p>
<p><a href="http://www.infoq.com/interviews/johanna-rothman-agile-mgt">Johanna Rothman: Managing Agile Teams</a></p>
<p><a href="http://www.infoq.com/presentations/Transforming-to-Groovy">Transforming to Groovy</a></p>
<p><a href="http://www.infoq.com/interviews/josh-bloch-java-prog">Josh Bloch on Java and Programming</a></p>
<p><a href="http://linuxfr.org/2010/12/19/27689.html">PlantUML, un nouvel outil de génération UML</a></p>
<p><a href="http://www.areyouagile.com/2010/12/management-agile-le-modele-tannenbaum-schmidt/">Management agile : le modèle Tannenbaum &#038; Schmidt</a></p>
<p><a href="http://www.sonatype.com/people/2010/12/infrastructure-anti-pattern-death-by-a-thousand-passwords/">Infrastructure Anti-pattern: Death by a Thousand Passwords</a></p>
<p><a href="http://blogs.sun.com/peterreiser/entry/enterprise_2_0_use_cases">Enterprise 2.0 Use Cases for Semantic Web</a></p>
<p><a href="http://blogs.sun.com/theaquarium/entry/java_ee_7_devoxx_keynote">It&#8217;s time to start talking about Java EE 7</a></p>
<p><a href="http://blogs.sun.com/theaquarium/entry/java_ee_6_adoption_logging">GlassFish Tips and Links #15 : Java EE 6 adoption, J2EE 1.4, JavaOne Brazil, logging in embedded, &#8230;</a></p>
<p><a href="http://analytical-mind.com/2010/12/20/which-stance-should-i-take-the-4-quadrants-of-agile-managers/">Which stance should I take? The 4 quadrants of Agile Managers</a></p>
<p><a href="http://www.infoq.com/articles/hades_jpa_repositories_done_right">Hades &#8211; JPA Repositories Done Right</a></p>
<p><a href="http://soa.sys-con.com/node/1654420">SOA Design Patterns in the Cloud</a></p>
<p><a href="http://agile.dzone.com/articles/distributed-agile-other"> Distributed Agile: Other Observations</a></p>
<p><a href="http://jamesshore.com/Blog/Lets-Play/Episode-70.html">Let&#8217;s Play TDD #70: Reflections on Incremental Design</a></p>
<p><a href="http://javaposse.com/java-posse-333-roundup-10-teaching-computer-science">Roundup &#8217;10 &#8211; Teaching Computer Science</a></p>
<p><a href="http://allankelly.blogspot.com/2010/12/product-management-open-secret.html"> Product Management an open secret, a differenciator</a></p>
<p><a href="http://java.dzone.com/news/will-two-tier-market"> Will a Two Tier Market For Developers Emerge As a Result of Scala &#038; Clojure?</a></p>
<p><a href="http://java.dzone.com/articles/developing-meta"> Developing in the Meta</a></p>
<p><a href="http://java.dzone.com/articles/memory-data-grid-imdg-linear">In-Memory Data Grid (IMDG) for Linear Horizontal Scalability &#038; Extreme Transaction Processing (XTP)</a></p>
<p><a href="http://agile.dzone.com/news/freeware-generating-umls"> Freeware for generating UMLs</a></p>
<p><a href="http://in.relation.to/Bloggers/Podcast16BytemanBegins">Podcast 16 &#8211; Byteman Begins</a></p>
<p><a href="http://planet.jboss.org/post/guvnor_decision_table_progress_2">Guvnor Decision Table Progress #2</a></p>
<p><a href="http://xnopre.blogspot.com/2010/12/gwt-premiers-contacts.html">GWT : premiers contacts</a></p>
<p><a href="http://blog.octo.com/7-personnes-3-corps-de-metier-48h-la-recette-gagnante-pour-une-appli-reussie-go4out/">7 personnes, 3 corps de métier, 48h : la recette gagnante pour une appli réussie GO4OUT !</a></p>
<p><a href="http://insideria.com/2010/12/building-a-world-class-team---12.html">Building a World Class Team &#8211; Sharing Knowledge Part 2</a></p>
<p><a href="http://www.tomcatexpert.com/blog/2010/12/20/integrating-activemq-tomcat-using-global-jndi">Integrating ActiveMQ With Tomcat using Global JNDI</a></p>
<p><a href="http://jamesshore.com/In-the-News/Agile-Release-Planning-Video.html">Agile Release Planning Video</a></p>
<p><a href="http://torquebox.org/news/2010/12/20/rspec-with-arquillian/">Hooking RSpec up with Arquillian via JRuby</a></p>
<p><a href="http://java.dzone.com/articles/enjoy-hibernate-cache"> Enjoy Hibernate Cache</a></p>
<p><a href="http://java.dzone.com/articles/deployment-automation-vs-0"> Deployment Automation vs. Server Provisioning</a></p>
<p><a href="http://insideria.com/2010/12/html-recipes-browser-capabilit.html">HTML5 Recipes: Browser Capabilities Tools</a></p>
<p><a href="http://blog.neo4j.org/2010/12/neo4j-12-m06-is-out-better-rest.html">Neo4j 1.2 M06 is out &#8211; Better REST Indexing and Server Plugins!</a></p>
<p><a href="http://mobile.dzone.com/news/rooting-dream">Rooting for the dream</a></p>
<p><a href="http://agile.dzone.com/news/project-managers-enemy-within">Project Managers: The Enemy Within?</a></p>
<p><a href="http://mobile.dzone.com/news/android-%E2%80%93-multithreading-ui"> Android – Multithreading in a UI environment</a></p>
<p><a href="http://agile.dzone.com/news/what-are-you-rewarding-we-dont">What are you rewarding? &#8211; We don&#8217;t pay bonuses</a></p>
<p><a href="http://java.dzone.com/articles/what-are-next-big-things-open">What Are the Next Big Things In Open Source?</a></p>
<p><a href="http://java.dzone.com/articles/domain-objects-and-its"> Domain Objects and Their Variants</a></p>
<p><a href="http://java.dzone.com/articles/dsls-action-out"> DSLs In Action is Out</a></p>
<p><a href="http://blogs.sun.com/geertjan/entry/org_openide_explorer_propertysheet_propertypanel">org.openide.explorer.propertysheet.PropertyPanel </a> (Netbeans)</p>
<p><a href="http://blogs.sun.com/theaquarium/entry/java_ee_6_and_eclipse">Java EE 6 and Eclipse Webinar &#8211; Bits, Replay and Chat</a></p>
<p><a href="http://blog.xebia.fr/2010/12/21/livre-blanc-qualite-logicielle/">Livre blanc – Qualité logicielle</a></p>
<p><a href="http://blog.xebia.fr/2010/12/21/revue-de-presse-xebia-190/">Revue de Presse Xebia</a></p>
<p><a href="http://mkblog.exadel.com/2010/12/my-reply-to-top-10-reasons-why-i-don%E2%80%99t-like-jsf/">My reply to “Top 10 reasons why I don’t like JSF”</a></p>
<p><a href="http://blog.athico.com/2010/12/drools-migrated-to-git.html">Drools migrated to Git</a></p>
<p><a href="http://blogs.sun.com/alexismp/entry/javaone_beijing_keynote_screencast_javaee">JavaOne Beijing Keynote screencast JavaEE/GlassFish</a></p>
<p><a href="http://java.dzone.com/articles/three-common-application"> Three Common Application Performance Challenges for Developers</a></p>
<p><a href="http://java.dzone.com/articles/java-se-endpoints-and"> Java SE Endpoints and Providers</a></p>
<p><a href="http://java.dzone.com/articles/bugs-prioritising-bucket"> Bugs: Prioritising by Bucket</a></p>
<p><a href="http://java.dzone.com/articles/javaee-developer-survey"> JavaEE Developer Survey Results From ZeroTurnaround</a></p>
<p><a href="http://allankelly.blogspot.com/2010/12/dialogue-sheets-retrospectives-and.html">Dialogue sheets, retrospectives and quotes (Send me your quotes)</a></p>
<p><a href="http://seminar2.techonline.com/~telelogic/dec1306/"> Model-Driven Development for SOA: Future Proofing Loosely-Coupled Applications</a></p>
<p><a href="http://www.infoq.com/interviews/laurie-williams-agile">Laurie Williams: Getting to Comparative Agility</a></p>
<p><a href="http://www.infoq.com/presentations/nodejs">Node.js: Asynchronous Purity Leads to Faster Development</a></p>
<p><a href="http://www.infoq.com/articles/doing-kanban-wrong">Doing Kanban Wrong</a></p>
<p><a href="http://www.infoq.com/news/2010/12/HTML5-Labs">HTML5 Labs–A Website for Prototyping New Web Technologies</a></p>
<p><a href="http://www.infoq.com/presentations/Map-Reduce-Quantcast">Large Scale Map-Reduce Data Processing at Quantcast</a></p>
<p><a href="http://www.infoq.com/presentations/Netflix-in-the-Cloud">Netflix in the Cloud</a></p>
<p><a href="http://www.sonatype.com/people/2010/12/whats-in-maven-3-0-for-users/">What’s in Maven 3.0 for users?</a></p>
<p><a href="http://blogs.sun.com/geertjan/entry/loosely_coupled_coffee_maker_on">Loosely Coupled Coffee Maker on the NetBeans Platform</a></p>
<p><a href="http://testingpodcast.com/spamcast-110-scott-price-load-testing/">SPaMCAST 110 – Scott Price, Load Testing</a></p>
<p><a href="http://insideria.com/2010/12/software-lessons-from-the-food.html">Software lessons from The Food Network</a></p>
<p><a href="http://www.infoq.com/presentations/Big-Balls-of-Mud">Big Balls of Mud in Agile Development: Can We Avoid Them?</a></p>
<p><a href="http://www.infoq.com/presentations/Lean-Groovy">Slimmed Down Software &#8211; A Lean, Groovy Approach</a></p>
<p><a href="http://www.infoq.com/articles/agile-team-spaces">Breaking Down Walls, Building Bridges, and Takin’ Out the Trash</a></p>
<p><a href="http://jim-mcbeath.blogspot.com/2010/12/scala-pros-and-cons.html">Scala Pros and Cons</a></p>
<p><a href="http://blogs.sun.com/glassfishpodcast/entry/episode_071_java_ee_7">Episode #071 &#8211; Java EE 7 discussion with Roberto Chinnici</a></p>
<p><a href="http://blogs.sun.com/arungupta/entry/totd_152_glassfish_installer_typical">TOTD #152: GlassFish Installer &#8211; Typical and Custom installation</a></p>
<p><a href="http://java.dzone.com/articles/understanding-tomcat"> Understanding Tomcat Configuration</a></p>
<p><a href="http://java.dzone.com/articles/communication-when-its-not">Communication When It&#8217;s Not Going Your Way</a></p>
<p><a href="http://java.dzone.com/articles/problem-open-source"> Open Source: Not Everyone Is A Winner</a></p>
<p><a href="http://css.dzone.com/articles/what-cooking-can-teach"> What cooking can teach to a software developer</a></p>
<p><a href="http://www.drdobbs.com/architecture-and-design/228900132">An Answer To Agile Development Overload?</a></p>
<p><a href="http://www.infoq.com/interviews/adrian-cole-jclouds">What’s Next for jclouds?</a></p>
<p><a href="http://www.infoq.com/presentations/Continuous-Delivery">Continuous Delivery</a></p>
<p><a href="http://www.infoq.com/presentations/NoSQL-at-Twitter">NoSQL at Twitter</a></p>
<p><a href="http://www.infoq.com/news/2010/12/agile-limits-financial-rewards">Does Agile Limit Financial Rewards for an Individual?</a></p>
<p><a href="http://javaposse.com/java-posse-334-newscast-for-dec-22nd-2010-listener-feedback">Java Posse #334 &#8211; Newscast for Dec 22nd 2010 + Listener Feedback</a></p>
<p><a href="http://blog.xebia.fr/2010/12/23/animez-vos-retrospectives-partie-1/">Animez vos rétrospectives – Première partie</a></p>
<p><a href="http://www.touilleur-express.fr/2010/12/23/desintox/">Le temps de la désintoxication et de la simplification</a></p>
<p><a href="http://www.touilleur-express.fr/2010/12/23/ne-prenez-pas-le-statut-auto-entrepreneur/">Ne prenez pas le statut auto-entrepreneur</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.espacedefouille.org/revue-de-presse-semaine-51/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

