<?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>Blog de Jérémie Bertrand &#187; Business Objects</title>
	<atom:link href="https://blog.developpez.com/laedit/pcategory/business-objects/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/laedit</link>
	<description></description>
	<lastBuildDate>Tue, 22 Mar 2011 14:30:08 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Utiliser Business Objects dans une application C#</title>
		<link>https://blog.developpez.com/laedit/p8822/c/utiliser_business_objects_dans_une_appli</link>
		<comments>https://blog.developpez.com/laedit/p8822/c/utiliser_business_objects_dans_une_appli#comments</comments>
		<pubDate>Thu, 15 Apr 2010 07:48:01 +0000</pubDate>
		<dc:creator><![CDATA[laedit]]></dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[XI R2]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Vu que je me retrouve embarquer là dedans pour des raisons professionnelles, et que j&#8217;ai galéré à trouver des infos, voilà comment faire pour utiliser Business Objects XI R2 dans une application C#. Première étape, et non des moindres, installer BO. Je ne vais pas détailler le processus ici, je préfère me concentrer sur du technique. Et puis c&#8217;est pas bien compliqué :p Une fois l&#8217;installation finie, des dlls ont été installés dans le dossier [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Vu que je me retrouve embarquer là dedans pour des raisons professionnelles, et que j&rsquo;ai galéré à trouver des infos, voilà comment faire pour utiliser Business Objects XI R2 dans une application C#.</p>
<p><span id="more-16"></span></p>
<p>
Première étape, et non des moindres, installer BO.</p>
<p>Je ne vais pas détailler le processus ici, je préfère me concentrer sur du technique. Et puis c&rsquo;est pas bien compliqué :p</p>
<p>Une fois l&rsquo;installation finie, des dlls ont été installés dans le dossier System32, d&rsquo;autres se retrouvent dans le GAC (C:\WINDOWS\assembly), tandis que d&rsquo;autres encore sont présentes dans un des dossiers du dossier d&rsquo;installation de BO, qui est par défaut &laquo;&nbsp;C:\Program Files\Business Objects\BusinessObjects Enterprise 11.5\win32_x86\&nbsp;&raquo;.<br />
[Update] D&rsquo;autres dlls (pour les types de fichiers par exemple), sont présentes dans le dossier &laquo;&nbsp;C:\Program Files\Business Objects\common\3.5\managed&nbsp;&raquo;.</p>
<p>Parmi les dlls présentes dans le GAC, trois vont nous intéresser :</p>
<ul>
<li>CrystalDecisions.Enterprise.dll</li>
<li>CrystalDecisions.Enterprise.Framework.dll</li>
<li>CrystalDecisions.Enterprise.InfoStore.dll</li>
</ul>
<p>
Ce sont celles qui vont nous permettre de faire des requêtes dans l&rsquo;InfoStore de BO et ainsi récupérer, modifier ou supprimer divers objets BO.
</p>
<p>
Pour tester tout ça, il suffit maintenant de créer une application C#. Une application console fera l&rsquo;affaire.</p>
<p>Ne pas oublier de référencer les trois dlls citées précédemment.</p>
<p>Et maintenant place au code :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; // Création d'un sessionManager, c'est lui qui va nous permettre de nous identifier <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SessionMgr boSessionMgr = new SessionMgr(); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Connexion à un serveur BO et récupération de la session &nbsp; &nbsp;[login] &nbsp; &nbsp; &nbsp;[mot de passe] &nbsp; [CMS name] &nbsp; &nbsp; [type d'authentification] <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;EnterpriseSession boEnterpriseSession = boSessionMgr.Logon(&quot;administrator&quot;, string.Empty, &quot;VMSqlServer05&quot;, &quot;Enterprise&quot;); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Récupération d'un InfoStore afin de faire des requêtes <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InfoStore boInfoStore = new InfoStore(boEnterpriseSession.GetService(SERVICE_INFOSTORE)); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Récupération d'une liste d'objets BO grâce à une requête dans l'InfoStore <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InfoObjects boObjects = boInfoStore.Query(&quot;Select * From CI_INFOOBJECTS WHERE SI_KIND != 'Inbox' AND SI_KIND != 'PersonalCategory' ORDER BY SI_ID&quot;); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Affichage des CUID et ID des objets <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;foreach (InfoObject infoObject in boObjects) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.WriteLine(infoObject.CUID + &quot; : &quot; + infoObject.ID); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.WriteLine(); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.WriteLine(&quot;Modification d'un objet&quot;); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Modification du titre du premier objet récupéré <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Attention, dans BO les listes d'objets (InfoObjects) commencent à 1 et non à 0 <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;boObjects[1].Title = newTitle; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Enregistrement des modifications dans l'InfoStore de BO <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;boInfoStore.Commit(boObjects); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.WriteLine(); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.WriteLine(&quot;Objet modifié&quot;); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; catch (COMException COMEx) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.WriteLine(&quot;ErrorCode: &quot; + COMEx.ErrorCode); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.WriteLine(&quot;Message: &quot; + COMEx.Message); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.WriteLine(&quot;StackTrace: &quot; + COMEx.StackTrace); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console.ReadLine();</div></div>
<p>Ce code détaillé permet donc de se connecter à BO, de récupérer une liste d&rsquo;objet et de modifier l&rsquo;un d&rsquo;entre eux. Histoire de connaître les bases des relations entre BO et C# <img src="https://blog.developpez.com/laedit/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" />
</p>
<p>
Si une erreur survient lors de l&rsquo;instanciation du SessionMgr, c&rsquo;est que la dll EnterpriseFramework.dll, qui est présente dans le dossier &laquo;&nbsp;win32_x86&Prime; du dossier d&rsquo;installation de BO, n&rsquo;a pas été installée. Il faut donc le faire via la ligne de commande &laquo;&nbsp;regsvr32 EnterpriseFramework.dll&nbsp;&raquo;.
</p>
<p>Et pour finir, voici quelques bons liens :</p>
<ul>
<li><a href="http://books.google.fr/books?id=UO9MHMt91dcC&amp;pg=PA193&amp;lpg=PA193&amp;dq=BusinessObjects+XI+.NET+Providers&amp;source=bl&amp;ots=rtdnB0Zy88&amp;sig=88OFW9cX5qa5Rm_6JaXHQ5bQ9LM&amp;hl=fr&amp;ei=YW_ES_3sIoePsAb9mrGkDg&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=7&amp;ved=0CDkQ6AEwBg#v=onepage&amp;q=BusinessObjects%20XI%20.NET%20Providers&amp;f=false">Pro Crystal Enterprise/Business Objects XI programming</a> Par Carl Ganz : aperçu d&rsquo;un très bon livre sur la programmation avec BO</li>
<li><a href="http://www.businessobjectstips.com/tips/server/querying-the-busines-objects-xi-cms-infostore-database-tables/">Querying the Busines Objects XI CMS InfoStore Database Tables</a> : un très bon tips sur les requêtages des tables de l&rsquo;InfoStore</li>
<li><a href="http://devlibrary.businessobjects.com/BusinessObjectsXIR2/en/devsuite.htm#en/WS_SDK/default.htm">La doc officielle de Business Objects XI R2</a></li>
<li><a href="http://www.sdn.sap.com/irj/boc/sdklibrary">La doc officielle chez SAP</a> avec deux sections intéressantes :</li>
<li><a href="http://www.sdn.sap.com/irj/boc/sdklibrary#section7">.NET SDK Developer Guides and API References</a></li>
<li><a href="http://www.sdn.sap.com/irj/boc/sdklibrary#section17">Object Model Diagrams</a></li>
</ul>
<p>
J&rsquo;espère qu&rsquo;avec ceci vous ne perdrez pas autant de temps que moi à trouver des informations sur comment utiliser BO via une application C# !</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
