tag:blogger.com,1999:blog-56931362844578323032018-02-14T00:47:44.769-05:00Boris's BlogTips, tricks and information about software development, governance, project and collaborative lifecycle management on the Jazz Platform.Boris Kuschelnoreply@blogger.comBlogger14125tag:blogger.com,1999:blog-5693136284457832303.post-72357205682196321182015-06-16T17:16:00.004-04:002015-06-16T17:17:59.384-04:00I'm Back!I'm back! Where have I been? Well, deep in Jazz Foundation development working hard on product features. You may have seen me at the previous IBM InterConnect/Innovate Conferences presenting CLM Server Monitoring.(That was my project.)<br />With IBM's new focus on Cloud, I am back in a role as an Unleash The Labs engineer. It's similar to the previous role I had when I last contributed to this blog (a Jazz Jumpstart Engineer) and I now have the opportunity to make new contributions but this time it'll be everything IBM Cloud related! In that spirit I have created a <a href="http://cloud.boriskuschel.com/" target="_blank">new blog at cloud.boriskuschel.com</a> to explore Cloud related topics.<br /><br />Welcome back Boris, Thanks!<br /><br />P.S. <a href="http://cloud.boriskuschel.com/" target="_blank">Go to cloud.boriskuschel.com</a>!Boris Kuschelhttps://plus.google.com/114130671453687648103noreply@blogger.com0tag:blogger.com,1999:blog-5693136284457832303.post-64017238832846310462012-03-26T16:07:00.000-04:002012-03-26T17:07:38.944-04:00What's the deal with the CLM Public URI?<div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Far too many times I have seen the mistake where a customer has installed one or many of the CLM applications and either failed to set the Public URI or set the Public URI to something that is not appropriate, such as a host name tied to the network infrastructure.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">It is important to give thought beforehand about how you would like your clients to access your CLM links and applications. This means, that a scalable URI design needs to be created (to allow more applications to be added) even before the first CLM application is deployed.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Why is it important? Its important because the URI is the de-facto unique identifier that customers and integrations will use when linking to CLM data. Any change to this URI (due to a host name changing for example) can have implications to not only links embedded in emails and bookmarks but other application integrations (including the CLM integrations RM, CCM and QM).</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">You generally want a URI that reflects the static business meaning of the data that is being linked to. For example: https://jazzdev.ibm.com/ccm is good, https://aix61boxonmydesk.ibm.com:7255/ccm is not because it identifies both the hardware hosting the application and the port.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Some customers have asked why we cannot have the CLM application figure it out itself (like the 2.x products did). Yes, the 2.x era products allowed this and, yes, resulted in unpredictable link behaviour. (It is not allowed any more.)</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><b>Here is the problem</b> : There is no reliable way of getting the host name of a machine because the machine itself may not know what it is (if its behind a proxy for example.)</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">If no public URI is set,&nbsp; an attempt is made by using something like:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><pre style="color: yellow;">InetAddress.getLocalHost().getHostName()</pre><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">What does this return? Well.. as Java is the CLM implementation technology. it seems that this is determined by the rules specified here</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><a href="http://docs.oracle.com/javase/6/docs/api/java/net/InetAddress.html#getHostName%28%29">http://docs.oracle.com/javase/6/docs/api/java/net/InetAddress.html#getHostName%28%29</a></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">&nbsp; </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Reverse lookup behaviour is really determined how the network and DNS is configured.&nbsp; An example sequence to determine the URL could be:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><ol style="font-family: &quot;Courier New&quot;,Courier,monospace;"><li>If Public URI is set then no reverse lookup needed the public URI setting is used. end.</li><li>If public URI is not set, the host name must be determined through getting the IP address for the primary network device then name resolution will do.</li><ul><li>look in the host file</li><li>DNS Reverse lookup</li></ul></ol><ol style="font-family: &quot;Courier New&quot;,Courier,monospace;"><ol> </ol></ol><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Some problems with this:</div><ol style="font-family: &quot;Courier New&quot;,Courier,monospace;"><li>If server IP address is not resolvable on the server itself (either in hosts file nor lookup) then an exception is thrown and IP address is used.</li><li>If DNS is misconfigured, IP address can return as host name</li><li>Some other network misconfiguration/bug is causing getLocalHost call to return 127.0.0.1/localhost</li><li>Which host name? Which network device? There could be many combinations.</li></ol><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Even if this worked, it is still not good enough!</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Why? Simple example exercise.. I want to host RTC on my work laptop, and i don't know what my public URI should be.<br /><br />Let me try to find out.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">From hostname command:</div><br /><pre style="color: yellow;">[kuschel@tpborisk7 conf]$ hostname<br />tpborisk7.ibm.com<br /></pre><br /><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Cool.. let's do an IP lookup on the host name:</div><br /><pre><span style="color: yellow;">[kuschel@tpborisk7 conf]$ nslookup tpborisk7.ibm.com<br />Server:&nbsp;&nbsp;&nbsp; &nbsp; 5.4.3.2<br />Address:&nbsp;&nbsp;&nbsp; 5.4.3.2#53<br /><br />** server can't find tpborisk7.ibm.com: NXDOMAIN</span><br /><br /></pre><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">No good. This is because i do not have a DNS entry for my laptop's host name.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Let's try my NIC IP Address?</div><br /><pre style="color: yellow;">[kuschel@tpborisk7 conf]$ ifconfig eth0<br />eth0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Link encap:Ethernet&nbsp; HWaddr F0:DE:F1:58:9B:7D&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inet addr:192.168.2.35&nbsp; Bcast:192.168.2.255&nbsp; Mask:255.255.255.0</pre><pre>&nbsp;</pre><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Do a reverse lookup on the IP:</div><br /><pre style="color: yellow;">[kuschel@tpborisk7 conf]$ nslookup 192.168.2.35<br />Server:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 5.4.3.2<br />Address:&nbsp;&nbsp;&nbsp; 5.4.3.2#53<br /><br />** server can't find 35.2.168.192.in-addr.arpa.: NXDOMAIN</pre><pre>&nbsp;</pre><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Also not good.. DNS has no entry for this IP.&nbsp; Even if it did, it would be purely local to the subnet! (192.168.x.x).</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">My Wireless NIC? Resolves locally on my home network but not publically.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Ah! Thats right, I am using VPN:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Now what is my ip address (I am using a VPN tunnel)?</div><br /><pre style="color: yellow;">[kuschel@tpborisk7 conf]$ ifconfig tun0&lt;<br />tun0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Link encap:UNSPEC&nbsp; HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inet addr:5.4.3.100&nbsp; P-t-P:5.4.3.100&nbsp; Mask:255.255.252.0</pre><pre>&nbsp;</pre><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">What is the hostname that corresponds to this IP?</div><br /><pre style="color: yellow;">[kuschel@tpborisk7 conf]$ nslookup 5.4.3.100<br />Server:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 5.4.3.2<br />Address:&nbsp;&nbsp;&nbsp; 5.4.3.2#53<br /><br />Non-authoritative answer:<br />100.3.4.5.in-addr.arpa&nbsp;&nbsp;&nbsp; name = tpborisk7.torolab.ibm.com.<br /><br />Authoritative answers can be found from:<br />5.in-addr.arpa&nbsp;&nbsp;&nbsp; nameserver = ns.ibm.com.<br />5.in-addr.arpa&nbsp;&nbsp;&nbsp; nameserver = ns2.ibm.com.<br />5.in-addr.arpa&nbsp;&nbsp;&nbsp; nameserver = ns3.ibm.com.<br />ns.ibm.com.&nbsp;&nbsp;&nbsp; internet address = 5.3.3.3<br />ns2.ibm.com&nbsp;&nbsp;&nbsp; internet address = 5.2.1.2<br />ns3.ibm.com.&nbsp;&nbsp;&nbsp; internet address = 5.1.2.3</pre><pre>&nbsp;</pre><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><b>Bingo! </b>So I should use tpborisk7.torolab.ibm.com as it seems to be publicly addressable but its simply a bad public URI (machine name plus location).</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">So how is CLM supposed to figure this out? My laptop has have 10 network devices, some with resolvable names, some not.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><i>What is also key here is that neither my NIC nor my host name is the real public address! </i></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">One cannot expect the CLM applications to figure this out as there is simply not enough information. (It could even use something like an IP address if it cannot resolve a name.)</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><b>Hence the need for a Public URI!</b></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Put the same thought behind the CLM public URI as you would for a URL you would host pages or application for the general public on the internet. It should be thought of,designed and owned by CLM!</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><b><br /></b></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><b>Luckily, For people who are in the unfortunate predicament of having a bad public URI, there is hope in 4.0 with <a href="https://jazz.net/help-dev/clm/topic/com.ibm.jazz.install.doc/topics/c_redeploy_server.html">server rename.</a></b> </div><br /><br />Boris Kuschelhttps://plus.google.com/114130671453687648103noreply@blogger.com0tag:blogger.com,1999:blog-5693136284457832303.post-86539541943656631892012-03-04T18:46:00.000-05:002012-03-09T08:05:44.588-05:00Automated builds using Visual Studio and Rational Team Concert<span style="font-family: 'Courier New',Courier,monospace;">This is the&nbsp;third&nbsp;part of a blog series on using Rational Team Concert (RTC) with Visual Studio (VS). In <a href="http://blog.boriskuschel.com/2012/01/c-with-visual-studio-and-rational-team.html" target="_blank">part 1</a>, I showed how to set up a basic solution in visual studio integrated with Rational Team Concert. In <a href="http://blog.boriskuschel.com/2012/02/c-with-visual-studio-and-rational-team.html" target="_blank">part 2</a>, I provided a working OSLC sample which we will use in an automated build. We will set up an automated Jazz Build for Visual Studio using using the Jazz Build engine.</span><br /><span style="font-family: 'Courier New',Courier,monospace;"><br /></span><br /><b><u><span style="font-family: 'Courier New',Courier,monospace;">In order to do this you will need (in addition to the those required for the previous two parts):</span></u></b><br /><span style="font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="font-family: 'Courier New',Courier,monospace;">-<a href="https://jazz.net/downloads/rational-team-concert/releases/3.0.1.2/RTC-BuildSystem-Toolkit-repo-3.0.1.2.zip" target="_blank">The Jazz Build Engine 3.0.1.2</a></span><br /><span style="font-family: 'Courier New',Courier,monospace;">-<a href="https://jazz.net/downloads/rational-team-concert/releases/3.0.1.2/RTC-Client-Win-3.0.1.2.zip" target="_blank">Rational Team Client for Eclipse 3.0.1.2</a></span><br /><span style="font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="font-family: 'Courier New',Courier,monospace;">You may wonder why you need the eclipse version of Rational Team Concert. While you can, request builds, examine build status and see build results from visual studio, you can only create build definitions with the eclipse client at this time. So you will need to unzip the client &nbsp;launch eclipse and connect to the project area to do this. To understand how to do this you can take a look at the <a href="http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0m1/index.jsp" target="_blank">CLM information center</a> (Hint: Go to Team Artifact view and create a repository connection)</span><br /><span style="font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="font-family: 'Courier New',Courier,monospace;">To keep text editing to a minimum I will provide the visual studio solution which has all the files required to perform an automated build. You can find it <a href="http://www.boriskuschel.com/code-samples/VSOSLCPart3.zip">here</a>. Unzip this over the corresponding directories in the solution created in the first two parts or if you are starting from here just unzip this and add it to the correct components (as specified in the <a href="http://blog.boriskuschel.com/2012/01/c-with-visual-studio-and-rational-team.html">first part</a>) in RTC.</span><br /><span style="font-family: 'Courier New',Courier,monospace;"><br /><b><u>This is what should be done:</u></b></span><br /><span style="font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">1. To keep things simple we will set up the automated build on the same machine as the visual studio.&nbsp; Install the Jazz Build Engine (JBE) in the default directory. In my case, this is the&nbsp;C:\Program Files (x86)\IBM\TeamConcertBuild directory. You will see that all property files are configured with the assumption that the build engine is installed here.&nbsp;</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">2.&nbsp;To, once again, keep things simple, we will use the current user (the one you used to log into visual studio) as the build engine user. The first thing we need to do is create a workspace which will be used by the build engine to do the build. Go into Visual Studio and create a new repository workspace from the "OLSC Stream". Right click on the OSLC Stream in the project area and click "New Repository Workspace..."</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-Lg3KMRG1i4Q/T1Pu-oCqXyI/AAAAAAAAAKA/aaadKFqryf8/s1600/Selection_107.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><img border="0" height="320" src="http://2.bp.blogspot.com/-Lg3KMRG1i4Q/T1Pu-oCqXyI/AAAAAAAAAKA/aaadKFqryf8/s320/Selection_107.png" width="312" /></span></a></div><div class="separator" style="clear: both; text-align: center;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">Call the workspace "OSLC Build Workspace" but do not load the workspace when asked as it will solely be used for build&nbsp;</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">purposes.</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace; margin-left: 1em; margin-right: 1em;"><a href="http://2.bp.blogspot.com/-XIgIgjPSZm0/T1P2NyFOJoI/AAAAAAAAAKI/j6665qcc55I/s1600/Selection_085.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-XIgIgjPSZm0/T1P2NyFOJoI/AAAAAAAAAKI/j6665qcc55I/s1600/Selection_085.png" /></a></span></div><div class="separator" style="clear: both; text-align: center;"><br /></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">2. At this point we will need to prepare some files in order to facilitate the build. We will be using the MSBuild process to perform our build and we will need to augment it so that it communicates with the jazz repository once it starts and finishes. &nbsp;MSBuild uses the .proj files to build and we need to modify this file to add some pre and post-build hooks. To do this we would need to change the "OSLC Consumer.proj" file. To modify this file from visual studio it needs to be unloaded and edited. This can be accomplished by right clicking the project in visual studio, click unload and then&nbsp;subsequently&nbsp;"Edit OSLC Consumer.proj".&nbsp;</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">Navigating to the end of the file you will see that the following has been added towards the end of the file:</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">&lt;Import Project="..\OSLCProperties.xml" /&gt;</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">&nbsp; &lt;Target Name="BeforeBuild" Condition="'$(fetchDestination)'!= '' "&gt;</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">&nbsp; &nbsp; &lt;Exec Command="$(AntCommand)-DactivityLabel=<b>startActivity</b> $(propertyFile) $(jazzbuildxml) <b>startActivity</b>" /&gt;</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">&nbsp; &lt;/Target&gt;</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">&nbsp; &lt;Target Name="AfterBuild" Condition="'$(fetchDestination)' !='' "&gt;</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">&nbsp; &nbsp; &lt;Exec Command="$(AntCommand) -DactivityLabel=<b>publishActivity</b> $(propertyFile) $(jazzbuildxml) <b>publishActivity</b>" /&gt;</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">&nbsp; &nbsp;&lt;/Target&gt;</span><br /><div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span></div><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">This uses an OSLCProperties.xml which contains the properties that are used here:&nbsp;$(AntCommand),&nbsp;&nbsp;$(propertyFile) and $(jazzbuildxml). The&nbsp;$(fetchDestination) will be passed into MSBuild using a command line argument defined in the build definition. (We will do this later).</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">You will find the OSLCProperties.xml in the solution directory (the root directory of the work space and contains the following. You may need to adjust the JBE root directory to reflect your environment.</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">&lt;Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"&gt;</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">&nbsp; &lt;PropertyGroup&gt; &nbsp;</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">&nbsp; &nbsp;<b> &lt;AntCommand&gt;</b>"C:\Program Files (x86)\IBM\TeamConcertBuild\jre\bin\java.exe" -cp "C:\Program Files (x86)\IBM\TeamConcertBuild\buildsystem\buildengine\eclipse\plugins\org.apache.ant_1.7.1.v20090120-1145\lib\ant-launcher.jar" org.apache.tools.ant.launch.Launcher -cp "C:\Program Files (x86)\IBM\TeamConcertBuild\jre\lib" -lib "C:\Program Files (x86)\IBM\TeamConcertBuild\buildsystem\buildtoolkit"<b>&lt;/AntCommand&gt;</b></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">&nbsp; &nbsp; <b>&lt;propertyFile&gt;</b>-propertyfile "C:\Program Files (x86)\IBM\TeamConcertBuild\buildsystem\buildengine\eclipse\OSLCBuild.properties"<b>&lt;/propertyFile&gt;</b></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">&nbsp; &nbsp; <b>&lt;jazzbuildxml&gt;</b>-f $(fetchDestination)\OSLC\jazzbuild.xml<b>&lt;/jazzbuildxml&gt;</b></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">&nbsp; &lt;/PropertyGroup&gt;</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">&lt;/Project&gt;</span><br /><div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span></div><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">The last file needed is the actual ant file that contains the tags used to communicate with the jazz repository, the jazzbuild.xml file. It contain two activities, one that is&nbsp;launched&nbsp;after the build, "startActivity" and another that is lauched after the build, "publishActivity" that is used to publish the build result. (They are launched from the msbuild tool using the hooks in the .proj above that it uses to perform the build.)</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">All of these new files should be checked in and delivered into the "OSLC Stream" so that they may be used by the Build engine.</span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-npvb8sTwjWA/T1P2mezaq6I/AAAAAAAAAKQ/wtwCrgBsNGc/s1600/Selection_108.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><img border="0" height="141" src="http://3.bp.blogspot.com/-npvb8sTwjWA/T1P2mezaq6I/AAAAAAAAAKQ/wtwCrgBsNGc/s320/Selection_108.png" width="320" /></span></a></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">3. Now lets create a build engine and build definition in Rational Team Concert for eclipse. Launch RTC for eclipse and create a "Jazz Build Engine" build definition for the OSLC project area by right clicking on "Build Engines" and give it the name "OSLC Build Engine". &nbsp;</span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-KznSuVBsc6w/T1P5cFyQkpI/AAAAAAAAAKo/pdJEvpCqMfM/s1600/New+Build+Engine+_073.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><img border="0" height="253" src="http://1.bp.blogspot.com/-KznSuVBsc6w/T1P5cFyQkpI/AAAAAAAAAKo/pdJEvpCqMfM/s320/New+Build+Engine+_073.png" width="320" /></span></a></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">You may now see a warning that the build engine is not running:</span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-p55_D1ao_hk/T1P3ceBLoEI/AAAAAAAAAKY/mdjIjlZfl2A/s1600/Selection_074.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><img border="0" height="24" src="http://3.bp.blogspot.com/-p55_D1ao_hk/T1P3ceBLoEI/AAAAAAAAAKY/mdjIjlZfl2A/s320/Selection_074.png" width="320" /></span></a></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">This is a good indication that the build engine is not running. Lets start it now.</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">4. To, once again, keep things simple, we will use the current user (the one you used to log into visual studio) as the build engine user. With that in mind execute run the build engine. You should see command prompt output as follows:</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">C:\Program Files (x86)\IBM\TeamConcertBuild\buildsystem\buildengine\eclipse&gt;</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">jbe -repository https://&lt;rtc host name&gt;:&lt;rtc port&gt;/ccm -userId &lt;rtc build username&gt; -pass &lt;rtc build user password&gt;&nbsp;-engineID "OSLC Build Engine"</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">2012-03-04 10:29:29 [Jazz build engine] Running build loop...</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace; font-size: x-small;">2012-03-04 10:29:29 [Jazz build engine] Waiting for request...</span><br /><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">Now refreshing the build engine page in RTC should eliminate the error.</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">5. Next we need to create a new build definition called "OSLC Build" for the OSLC project area of type "Jazz Build for Microsoft Visual Studio Solution - Jazz Build Engine"</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-kzjHtKJFzDk/T1P5PPON1NI/AAAAAAAAAKg/8eZucdVOWdk/s1600/New+Build+Definition+_076.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><img border="0" height="234" src="http://4.bp.blogspot.com/-kzjHtKJFzDk/T1P5PPON1NI/AAAAAAAAAKg/8eZucdVOWdk/s320/New+Build+Definition+_076.png" width="320" /></span></a></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">Ensure that you select "Jazz Source Control" as a pre-build option:</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-SQ3MdrOmU_Y/T1P5o7a0mtI/AAAAAAAAAKw/YRmvyA6CY10/s1600/New+Build+Definition+_078.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><img border="0" height="234" src="http://1.bp.blogspot.com/-SQ3MdrOmU_Y/T1P5o7a0mtI/AAAAAAAAAKw/YRmvyA6CY10/s320/New+Build+Definition+_078.png" width="320" /></span></a></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">Select MSTest Configuration as a post-build option.</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-8HCEVERu0iY/T1P5wAAtEOI/AAAAAAAAAK4/98AeoYNOCAU/s1600/New+Build+Definition+_094.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><img border="0" height="234" src="http://2.bp.blogspot.com/-8HCEVERu0iY/T1P5wAAtEOI/AAAAAAAAAK4/98AeoYNOCAU/s320/New+Build+Definition+_094.png" width="320" /></span></a></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">Once you created the build it should be opened and now you must add the build engine we created previously as a supported build engine in the Overview tab.</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-JigjZ5ukK-Q/T1P6Jgf9KhI/AAAAAAAAALA/9E0ayW-Hv5c/s1600/Selection_080.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><img border="0" height="104" src="http://3.bp.blogspot.com/-JigjZ5ukK-Q/T1P6Jgf9KhI/AAAAAAAAALA/9E0ayW-Hv5c/s320/Selection_080.png" width="320" /></span></a></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">In the "Jazz Source Control" tab we must specify the workspace we created previously for the purposes of building as the Build Workspace and also specify a directory that will be used to load this workspace during the build process called "OSLC Build Workspace". We should also specify "Delete directory before loading".</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-V5WETTB35K4/T1P62ulN5tI/AAAAAAAAALI/NSFqiwSN1l4/s1600/Selection_089.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><img border="0" height="224" src="http://3.bp.blogspot.com/-V5WETTB35K4/T1P62ulN5tI/AAAAAAAAALI/NSFqiwSN1l4/s640/Selection_089.png" width="640" /></span></a></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">Now we must specify some details about the build in the "Microsoft Build" tab. Depending on the install path of your visual studio some of these may need to be adjusted according to your environment:</span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-gwQlMjMQ8Ps/T1SoWz_uMhI/AAAAAAAAAMA/oFQwYQ0OE3E/s1600/Selection_109.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="492" src="http://4.bp.blogspot.com/-gwQlMjMQ8Ps/T1SoWz_uMhI/AAAAAAAAAMA/oFQwYQ0OE3E/s640/Selection_109.png" width="640" /></a></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-EPIUmykNRjM/T1P7Sd5oxKI/AAAAAAAAALQ/9TrXGvLd-EI/s1600/Selection_092.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"></span></a></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">Some things to note on this page. The OSLCBuild.properties file is a file generated by the JBE that contains the properties used during a build. You also see that here we are passing in the $(fetchDirectory) property that we are using above in the .proj hook. We are using MSBuild as it is more suitable for what we want to do but it is also possible to use the Visual studio "devenv.exe" to do the build. This is usually more useful if there are some visual studio&nbsp;integrations&nbsp;that the build depends on (pre compilers, etc.).</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">The next tab "MSTest Configuration" is also given here but is unused at the present time and is provided for a future lab. It must nevertheless be completed in order for the build to succeed. &nbsp; You may need to change the paths as appropriate:</span><br /><div class="separator" style="clear: both; text-align: center;"></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-w77-kcnp4pE/T1P8ou7eyCI/AAAAAAAAALg/EHkkqNG2MkU/s1600/Selection_106.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><img border="0" height="334" src="http://3.bp.blogspot.com/-w77-kcnp4pE/T1P8ou7eyCI/AAAAAAAAALg/EHkkqNG2MkU/s640/Selection_106.png" width="640" /></span></a></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">Now you should be able to save the build definition and then you are done with RTC for eclipse.</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">6. Go back to visual studio and refresh the builds area and now you should be able to request a build from here. You may do so now. Leave the default options and submit.</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-4HGnbzcSd2s/T1P84h_qwOI/AAAAAAAAALo/Nz6hV6wMpdQ/s1600/Selection_103.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><img border="0" height="320" src="http://2.bp.blogspot.com/-4HGnbzcSd2s/T1P84h_qwOI/AAAAAAAAALo/Nz6hV6wMpdQ/s320/Selection_103.png" width="264" /></span></a></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">7. After the build request has been submitted you will see it in the build queue. It may take a little while to build and return eventually with a "Completed" status and a green check mark.</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-oWW8upCV45k/T1P9WCf6OQI/AAAAAAAAALw/U5bRoNtNMbc/s1600/Selection_104.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><img border="0" height="128" src="http://1.bp.blogspot.com/-oWW8upCV45k/T1P9WCf6OQI/AAAAAAAAALw/U5bRoNtNMbc/s640/Selection_104.png" width="640" /></span></a></div><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;">8. Whether the build succeeded or not you can double click on the build to see the results, including the logs and, if successful, a link to the resulting .exe in the "Downloads" tab. If something went wrong you can examine the logs to see what the issue is.</span><br /><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-c-avoFLnXOg/T1P9rvI0iGI/AAAAAAAAAL4/X3HKv7XH9Ss/s1600/Selection_102.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow; font-family: 'Courier New',Courier,monospace;"><img border="0" height="378" src="http://3.bp.blogspot.com/-c-avoFLnXOg/T1P9rvI0iGI/AAAAAAAAAL4/X3HKv7XH9Ss/s640/Selection_102.png" width="640" /></span></a></div><span style="font-family: 'Courier New',Courier,monospace;"><br /></span><br /><span style="font-family: 'Courier New',Courier,monospace;"><br /></span><br /><b><span style="font-family: 'Courier New',Courier,monospace;">Voila! An automated build using the JBE and visual C++!</span></b><br /><br />Boris Kuschelhttps://plus.google.com/114130671453687648103noreply@blogger.com0tag:blogger.com,1999:blog-5693136284457832303.post-34875153948400821002012-02-25T12:09:00.000-05:002012-02-25T12:12:16.205-05:00Configuring slapd (LDAP) for the CLM "Money that Matters" scenario in Websphere Application Server<br /><div style="clear: right; float: right; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 1em; margin-left: 1em;"></div><br /><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Over the last few years i have found myself doing something over and over again and at the same time constantly going back into all sorts of documentation in order to figure it out: How to set up and configure a basic ldap server for a Websphere CLM configuration.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Its not difficult but many things can go wrong and there are some configuration files that are needed to get a basic LDAP server going that has enough information (users and groups) to be able to create a basic functioning system.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">In my role, I am constantly bringing up and tearing down topologies and in many cases I have to set up enterprise level systems where there are multiple instances of Websphere Application Server (WAS) servers (or WAS Network Deployment (ND) nodes) each hosting a product (CCM, RM, etc..) linked with each other.&nbsp; All of these instances should share the authentication realm so that's where LDAP comes in. </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Since the <a href="http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0m1/topic/com.ibm.rational.clm.tutorial.doc/topics/tut_alm_abstract.html" target="_blank">"Money that Matters" (MTM) CLM lifecycle sample</a> that is packaged with CLM is a good starting point for test environments, proof of concepts and demos I use it a lot for sample data.&nbsp;</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">In this blog, I will show how to set up a basic openldap server for a WAS server that will host the MTM sample. I won't go into the CLM details as those are well covered in the <a href="http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0m1/index.jsp" target="_blank">information centre</a>. </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">As I am using Red Hat Enterprise Linux (RHEL) 64-bit (in this case 6.2)&nbsp; most of the time to set up servers, these instructions pertain to that particular flavour of Linux. This should work with other Linux, Unix variants and also Windows (with some twists i am sure). </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><b><u>What you need to do</u></b></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Login in as root (or use sudo on all of the following commands, your choice).</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Use yum (our vanilla rpm) to install these rpms:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">openldap-clients-2.4.23-20.el6.x86_64<br />openldap-servers-2.4.23-20.el6.x86_64<br />openldap-2.4.23-20.el6.x86_64</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;"><br /></span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Make sure that your firewall (iptables) has port 389 open. Add the following line to your /etc/sysconfig/iptables:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">-A INPUT -p tcp -m tcp --dport 389 -j ACCEPT</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Start the slapd service, you may also want to start slapd on system boot:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;"><br /></span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">service slapd start</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">chkconfig slapd on</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">By default, the RHEL installs slapd in such a way that the cn=config slapd configuration realm is only accessible from root. You can verify that slapd is running by issueing the following command:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">This should list the configuration parameters for the ldap server. We don't need to change the defaults so lets continue to create our new ldap database for the MTM sample. I have created two ldif files for this purpose. The first one, <a href="http://www.boriskuschel.com/code-samples/jazzdb.ldif">jazzdb.ldif</a> creates the ldap database, and the second one <a href="http://www.boriskuschel.com/code-samples/jazz.ldif">jazz.ldif</a> creates the users and groups for the MTM sample.&nbsp;</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Download <a href="http://www.boriskuschel.com/code-samples/jazzdb.ldif">jazzdb.ldif</a> and <a href="http://www.boriskuschel.com/code-samples/jazz.ldif">jazz.ldif</a> into a known location. You will need to modify the jazzdb.ldif file with a known password for the administrator. You can generate the password using the following command:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">slappasswd</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">The utility will ask you for a password that you will need to confirm and generate an encrypted value that you will need to replace the current passwd with. So, replace the "olcRootPW: {SSHA}k7U/qvqrBs8T63fJnFa4+4V9S+ecp7Rg" value in the jazzdb.ldif file with the value that was generated by the slappasswd tool. Make sure not to leave any unwanted symbols after or before the line and note that there is a space after "olcRootPW:".</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">You may also want to customize the olcSuffix ( to something related to your domain) but be careful to search/replace this suffix everywhere in both the <a href="http://www.boriskuschel.com/code-samples/jazzdb.ldif">jazzdb.ldif</a> and <a href="http://www.boriskuschel.com/code-samples/jazz.ldif">jazz.ldif</a> files.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Once you have replaced this value you can go ahead create the slapd database:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">ldapadd -Y EXTERNAL -H ldapi:/// -f jazzdb.ldif</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Once this has completed successfully you can test both the new login you created for the RootDN and import the MTM users at the same time using:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">ldapadd -x -D uid=servadm,ou=Users,dc=jazz,dc=net -W -f jazz.ldif</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">The password it asks is the one you used for the slappasswd generation utility.&nbsp;</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">After this is complete, you can change the passwords of other users in the database by using the following command (for bob as an example):</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">ldappasswd -x -D uid=servadm,ou=Users,dc=jazz,dc=net -W -S "uid=bob,ou=Users,dc=jazz,dc=net" </span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">If all of this worked so far then you are basically done setting up the slapd LDAP server and can now configure WAS to use LDAP.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">I you have installed was you have either set it up to use a user name and password or with no security at all. In any case, login into the WAS administration console and go to the global security section. (We are using Websphere Application Server v8 but this is almost identical on other versions.)</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://4.bp.blogspot.com/-_PkB6Q83ag4/T0kL-hsdM_I/AAAAAAAAAJQ/i2neynudTkc/s1600/Selection_031.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="120" src="http://4.bp.blogspot.com/-_PkB6Q83ag4/T0kL-hsdM_I/AAAAAAAAAJQ/i2neynudTkc/s200/Selection_031.png" width="200" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Once the global security page comes up you should "Enable application security".</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://2.bp.blogspot.com/-iiBk0ExuiII/T0kMSs3pFfI/AAAAAAAAAJY/605Reh9tdjA/s1600/Selection_033.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-iiBk0ExuiII/T0kMSs3pFfI/AAAAAAAAAJY/605Reh9tdjA/s1600/Selection_033.png" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Then go to the "User account repository" section and choose "Standalone LDAP registry" as the realm definition and click "Configure..." (between 1 and 2 below):</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://2.bp.blogspot.com/-Uby-rWLKKXU/T0kM0A7JP-I/AAAAAAAAAJg/AlYbY2tckkg/s1600/Selection_046.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="197" src="http://2.bp.blogspot.com/-Uby-rWLKKXU/T0kM0A7JP-I/AAAAAAAAAJg/AlYbY2tckkg/s400/Selection_046.png" width="400" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Now you need to set up the LDAP settings as below. Replace the value of the distinguished names to reflect the value of the suffix, if you changed it, in the ldif files. Use the bind password of the LDAP administrator user for the database we just created.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">NOTE: I am using localhost as the server name for LDAP. If you have a Websphere Network Deployment with multiple nodes, this is not a good idea and you should use the actual host name for your final configuration.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://2.bp.blogspot.com/-Q74AZWHLOtg/T0kOOoasvOI/AAAAAAAAAJo/DmL0x0pn--U/s1600/Selection_045.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="430" src="http://2.bp.blogspot.com/-Q74AZWHLOtg/T0kOOoasvOI/AAAAAAAAAJo/DmL0x0pn--U/s640/Selection_045.png" width="640" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">&nbsp;Click Apply and Now click on:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://1.bp.blogspot.com/-mYecNObFeY0/T0kPIX7Rb0I/AAAAAAAAAJw/wTZo5nTXbmQ/s1600/Selection_042.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="58" src="http://1.bp.blogspot.com/-mYecNObFeY0/T0kPIX7Rb0I/AAAAAAAAAJw/wTZo5nTXbmQ/s400/Selection_042.png" width="400" /></a></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;">Use these values in the form:</div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><a href="http://3.bp.blogspot.com/-oYwZLai3Ftc/T0kPYX8kG9I/AAAAAAAAAJ4/m-UlORVD900/s1600/Selection_044.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="478" src="http://3.bp.blogspot.com/-oYwZLai3Ftc/T0kPYX8kG9I/AAAAAAAAAJ4/m-UlORVD900/s640/Selection_044.png" width="640" /></a> </div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Click OK on this form and the subsequent form. In the next form ensure that the realm is set to LDAP and that the "Set Current" button is click and "Apply" is clicked.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div class="separator" style="clear: both; color: yellow; text-align: center;"><a href="http://2.bp.blogspot.com/-Uby-rWLKKXU/T0kM0A7JP-I/AAAAAAAAAJg/AlYbY2tckkg/s1600/Selection_046.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="197" src="http://2.bp.blogspot.com/-Uby-rWLKKXU/T0kM0A7JP-I/AAAAAAAAAJg/AlYbY2tckkg/s400/Selection_046.png" width="400" /></a></div><div class="separator" style="clear: both; color: yellow; text-align: center;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;">WAS will not ask you to save and reboot which you should do (it may ask for your original WAS admin username and password when shutting down.). Once WAS has restarted you should be able to login with the "servadm" username and LDAP administrator password.</div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;">If the authentication fails you can try to change the&nbsp; ldap password of servadm using the ldappasswd command above (use servadm instead of bob).&nbsp;</div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;">If this still fails and you cannot log into WAS, make sure slapd is running and if all else fails take a look inside the security.xml file of WAS to ensure your settings are correct. This file can typically be found in:</div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;"><span style="font-size: x-small;"><br /></span></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;"><span style="font-size: x-small;">&lt;WAS Installation Dir&gt;/profiles/&lt;profile name&gt;/config/cells/&lt;cell name&gt;/security.xml</span></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;">If you change it, you will need to reboot WAS.</div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;"><br /></div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;">At this point, WAS is set up and has all the users and groups required for a clean installation of the CLM and creation of the <a href="http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0m1/topic/com.ibm.rational.clm.tutorial.doc/topics/tut_alm_abstract.html" target="_blank">MTM scenario</a>.</div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;"><br /></div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;">For more information on where to go from here, look at the <a href="http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0m1/topic/com.ibm.rational.clm.tutorial.doc/topics/tut_alm_abstract.html" target="_blank">information center on how to install CLM into WAS</a>.</div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;"><br /></div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;"><br /></div>Boris Kuschelhttps://plus.google.com/114130671453687648103noreply@blogger.com0tag:blogger.com,1999:blog-5693136284457832303.post-60947017096587457732012-02-05T19:16:00.000-05:002012-02-16T12:06:27.931-05:00C# with Visual Studio and Rational Team Concert (OSLC revisted) (Part 2)<div style="font-family: &quot;Courier New&quot;,Courier,monospace;">In <a href="http://blog.boriskuschel.com/2012/01/c-with-visual-studio-and-rational-team.html" target="_blank">Part 1</a>, I showed how to set up a basic visual studio environment which we will now use to create an OSLC client. The client we will create is quite rudimentary and is based on the code in the OSLC workshop (which is itself, java.)&nbsp;</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">The code does not do much more then a form-based authentication with RTC 3.0.1.2 and fetches a list of project areas using XPath.&nbsp; The .NET framework (I am using v. 4) has everything we need to create a connection with RTC, authenticate and query the content. It's just as easy to do with C# as it is in Java and the code, in fact, is quite similar. I am using Visual Studio 2010 and .NET v4 but the code should either work as is, or with some slight modifications, on other versions. </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br />You will need to get the point we finished in <a href="http://blog.boriskuschel.com/2012/01/c-with-visual-studio-and-rational-team.html" target="_blank">Part 1</a>. Once you are there, let's start fresh and close down Visual studio and unzip the following zip file into your sandbox (overwriting along the way.)&nbsp;</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">VS/RTC sandbox: <a href="http://www.boriskuschel.com/code-samples/COSLCConsumer.zip">C# OSLC Consumer.zip</a> </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Open up visual studio and immediately go to the RTC "Team Artifacts" window. Go to the sandbox list Right click and select "Set current" to activate and open the solution in Visual Studio. You can go ahead and go to the "Solution Explorer" and delete the default Program.cs and Class1.cs files that the wizard created. You can the add the new .cs files by your the project context menus and Add-&gt;Existing Item. You can then add the missing files (OSLCConsumer.cs and HttpUtils.cs) from there.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">You can also go ahead and deliver these changes by going to the "Pending Changes" Window, and check-in and deliver all the new changes.</div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://1.bp.blogspot.com/-r7eLDmU4Z1o/Ty74RaXZn1I/AAAAAAAAAI0/XncQPp9IF84/s1600/Deliver.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="145" src="http://1.bp.blogspot.com/-r7eLDmU4Z1o/Ty74RaXZn1I/AAAAAAAAAI0/XncQPp9IF84/s640/Deliver.jpg" width="640" /></a></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br />You can to build and run the project at this point by clicking on the "Play" button as per normal Visual Studio usage but you will probably need to modify a few settings namely:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">string server = "https://localhost:9443/ccm"; //&lt;-Your RTC server</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">string url = "https://localhost:9443/ccm/rootservices"; //&lt;- the rootservices URL</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">string login = "ADMIN";&nbsp;&nbsp;&nbsp; //&lt;-Your RTC username</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">string password = "yourpassword";&nbsp; //&lt;-Your RTC password</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Once you have looked over the code and perhaps run it, it demonstrates the following:</span></div><ol style="font-family: &quot;Courier New&quot;,Courier,monospace;"><li>How to do form authentication with C#</li><li>How to issue OSLC requests using C#&nbsp;</li><li>Use XPath to fetch Project area names (service providers) </li></ol><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">If everything is working file, the output window could look like this:</div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://1.bp.blogspot.com/-q3laveiK2s4/Ty75dlfEloI/AAAAAAAAAI8/-nefCZL-TsM/s1600/console.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="416" src="http://1.bp.blogspot.com/-q3laveiK2s4/Ty75dlfEloI/AAAAAAAAAI8/-nefCZL-TsM/s640/console.jpg" width="640" /></a></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">If you need to have more in depth information about how this code functionality works I suggest to take a look at the OSLC workshop as this code sample is loosely based on it. Enjoy!</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Next up (part 3)... I will expand on this example, and create an automated build environment for our new code using RTC SCM and automated builds!</span>Boris Kuschelhttps://plus.google.com/114130671453687648103noreply@blogger.com8tag:blogger.com,1999:blog-5693136284457832303.post-50562744259858053162012-01-22T18:04:00.000-05:002012-03-03T10:30:24.826-05:00C# with Visual Studio and Rational Team Concert (OSLC revisted) (Part 1)<br /><div class="separator" style="clear: both; text-align: center;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">I have had some recent customer experiences which have impelled me to write some blogs on the RTC Visual Studio integration. This topic follows the <a href="http://blog.boriskuschel.com/search/label/OSLC" target="_blank">previous series</a> well, where I wrote about RTC and CDT. In fact, I will will basically recreate the OSLC example ( this time using C# ) but using the Visual Studio 2010 development environment instead. Meaning that I will be using visual studio not only for developing but writing unit tests and doing a static analysis all while using the RTC visual studio integration.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">If you recall in the <a href="http://blog.boriskuschel.com/search/label/OSLC" target="_blank">previous blog series on OSLC</a>, I created an OSLC client in C/C++ using CDT. I could do the same in Visual Studio (OSLC client using C/C++, that is) but I will instead use C# to create the OSLC client this time to show how this can also be done.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><u><br /></u></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><u>What You Need</u></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">This exercise may work with other versions of Visual Studio as the integration supports other versions as well but I will use Visual Studio 2010 .</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">I am also assuming that these are installed as well as:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">-<a href="https://jazz.net/downloads/rational-team-concert/releases/3.0.1.2/JTS-CCM-QM-RM-repo-3.0.1.2.zip" target="_blank">CLM 3.0.1.2</a></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">-<a href="https://jazz.net/downloads/rational-team-concert/releases/3.0.1.2/RTC-VisualStudio-Client-repo-3.0.1.2.zip" target="_blank">Rational Team Concert Client for Microsoft Visual Studio 3.0.1.2</a></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">Ensure that the CLM 3.0.1.2 servers are setup correctly (at a minimum, CCM and JTS). Please refer to the <a href="http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0m1/index.jsp" target="_blank">CLM 3.0.1.2 information center</a> for how to do this. For reference my URLs and directories area as follows, you will need to replace them in this blog as appropriate for your environment:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><span style="font-size: x-small;">JTS URL: https://tpborisk7:9443/jts</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><span style="font-size: x-small;">CCM URL: https://tpborisk7:9443/ccm</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><span style="font-size: x-small;">CLM install directory: C:\IBM\CLM3012</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><span style="font-size: x-small;">Sandbox: c:\vsworkspace</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><u>Setting up (creating project areas and solutions)</u></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">1. If you have installed your visual studio environment correctly, you can launch Visual Studio now. The Visual Studio RTC integration behaves very much like the Eclipse RTC integration. There are some key differences.</div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="data:image/png;base64,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" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">2. One of the differences is that it is not possible to create a CCM project area from visual studio. This will need to be done through the CCM web UI. Go to the project area creation page: https://tpborisk7:9443/ccm/admin#action=com.ibm.team.process.editProjectArea&amp;itemId=new<br /><br />3. Create a new project area called OSLC and use the scrum template. Be sure to assign the user (in my case servadm) you will be connecting from Visual Studio as the “Scrum Master”.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br />4. Now connect to the project area using the Team Artifacts window:</div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://4.bp.blogspot.com/-XSLAxzrBYbY/TxyM2l-8lDI/AAAAAAAAAEA/--yDZwFJG_o/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-XSLAxzrBYbY/TxyM2l-8lDI/AAAAAAAAAEA/--yDZwFJG_o/s1600/1.jpg" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">5. Connect to the server:</div><div class="separator" style="clear: both; color: yellow; text-align: center;"><a href="http://3.bp.blogspot.com/-SKwuZYUiunA/TxyNFgVwEQI/AAAAAAAAAEI/heZAV8UH46A/s1600/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="325" src="http://3.bp.blogspot.com/-SKwuZYUiunA/TxyNFgVwEQI/AAAAAAAAAEI/heZAV8UH46A/s400/2.jpg" width="400" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">6. Click next and select the OSLC project area we created and click "Finish". We are now connected.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">(NOTE: You may need to "Load.." your repository workspace into your sandbox at this point in order to see the "Share solution in Jazz" option below.)<br /><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">7. Lets create a new solution that we will use to develop our c# OSLC client.In Visual Studio select</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">File-&gt;New-&gt;Project...</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">8. Select a Console application under Visual C#-&gt;Windows-&gt;Console Application</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">9. Call the project OSLC Consumer and use a solution called OSLC (as we will created more projects in the future) in a preferred location. Make sure to select the "Share solution in Jazz" option.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://2.bp.blogspot.com/-VnRSdb43hBA/TxyNqApoD3I/AAAAAAAAAEQ/nhus_6JiPSU/s1600/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://2.bp.blogspot.com/-VnRSdb43hBA/TxyNqApoD3I/AAAAAAAAAEQ/nhus_6JiPSU/s400/3.jpg" width="400" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">10. Once you confirm your solution location you will be asked to select a sandbox. You should choose the sandbox location that we chose as the solution directory above. You can think of a sandbox as a collection of visual studio solutions/components under Jazz source control. So:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://2.bp.blogspot.com/-lhkKtW353RY/TxyOCPAdrpI/AAAAAAAAAEY/bGzXItkAz6E/s1600/4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="159" src="http://2.bp.blogspot.com/-lhkKtW353RY/TxyOCPAdrpI/AAAAAAAAAEY/bGzXItkAz6E/s400/4.jpg" width="400" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">11. Lets create a new component for our Consumer called “OSLC”</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://4.bp.blogspot.com/-F9szrpWbvbI/TxyObuWYx6I/AAAAAAAAAEg/xmVN4zDmzy0/s1600/5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://4.bp.blogspot.com/-F9szrpWbvbI/TxyObuWYx6I/AAAAAAAAAEg/xmVN4zDmzy0/s320/5.jpg" width="309" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">12. Leave the defaults for the ignore files options. You should end up with the following directory structure (or similar):</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://2.bp.blogspot.com/-kXzbgJ2UV3U/TxyOqqYRUnI/AAAAAAAAAEo/CnbHsldGOLI/s1600/6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://2.bp.blogspot.com/-kXzbgJ2UV3U/TxyOqqYRUnI/AAAAAAAAAEo/CnbHsldGOLI/s200/6.jpg" width="191" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">13. In your pending changes view you should now see that we could deliver the new solutions with its project into jazz source control which we will do. Right click on the "Share Projects" and "Deliver" them into the OSLC Stream. (Click yes if it asks you if you want to deliver the component changes)</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://2.bp.blogspot.com/-TUqafAqKJNQ/TxyPB_fi0VI/AAAAAAAAAEw/_adDH4Uelrw/s1600/7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="210" src="http://2.bp.blogspot.com/-TUqafAqKJNQ/TxyPB_fi0VI/AAAAAAAAAEw/_adDH4Uelrw/s320/7.jpg" width="320" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">14. <i>(If you understand component solutions relationships in VS skip to 17) </i> </div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">In anticipation of unit test we will eventually create lets create two more project skeletons. One called "OSLC Consumer Common"(containing common code) and a unit test project, "Test OSLC Consumer". Right click on the project and Add a project of type "Class Library"</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://1.bp.blogspot.com/-jZUYdOe2h9c/TxyPRwc0LgI/AAAAAAAAAE4/WPZdRy4N_10/s1600/8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://1.bp.blogspot.com/-jZUYdOe2h9c/TxyPRwc0LgI/AAAAAAAAAE4/WPZdRy4N_10/s400/8.jpg" width="400" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">15. Let's add the test project called "Test OSLC Consumer" of type "Test Project":</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://4.bp.blogspot.com/-zLc0sviH8G0/TxyPjrSgp9I/AAAAAAAAAFA/Q5k5W2iysa8/s1600/9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://4.bp.blogspot.com/-zLc0sviH8G0/TxyPjrSgp9I/AAAAAAAAAFA/Q5k5W2iysa8/s400/9.jpg" width="400" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">16. Unlike the solution there is not default option to add a project to Jazz Source control so we will have to do it now. Select both the new projects and right click and select the “Share Project(s) in Jazz...” option <b>but do not click Finish</b>!</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://3.bp.blogspot.com/-fhecPlXjirc/TxyPxmQwbWI/AAAAAAAAAFI/1pcSpkJPqoc/s1600/10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="35" src="http://3.bp.blogspot.com/-fhecPlXjirc/TxyPxmQwbWI/AAAAAAAAAFI/1pcSpkJPqoc/s320/10.jpg" width="320" /></a></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><span style="font-size: small;"><br /></span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><span style="font-size: small;"><i><b>NOTE!!</b></i></span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><span style="font-size: small;">Notice a key difference here between the RTC eclipse and Visual studio integration. <b>The Component alignment is done at the solution level rather then at the project level!</b>&nbsp;</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><span style="font-size: small;">So in eclipse many projects are associated to a component, where in visual studio, many solutions to a component, where projects in the solution belong to the component of a solution.</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><span style="font-size: small;">In effect, if we wanted to have the unit tests, common code and consumer client in different components you would essentially need to create three solutions (one for each) in the sandbox. As this is exactly what we want this is what we will do (but you don't have to). </span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><span style="font-size: small;"><b>Just because we have three solutions does not mean we need to keep three IDE solution instances open because we can easily add the projects from different solutions to the same solution</b> (which we will do.)</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><span style="font-size: small;">As I have gone through this detour to highlight this difference, lets revert and cancel out of the “Share Projects(s) in Jazz...”.. Right click on the two projects and select Right Click-&gt;remove. Also delete the corresponding directories on the file system. You will probably also want to delete the following files out of the solution directory: Local.testsettings, OSLC.vsmdi and TraceAndTestImpact,testsettings.</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">17. In anticipation of unit test we will eventually create lets create two more solution skeletons. One called "OSLC Common" with a project called "OSLC Consumer Common" (containing common code) and one called "Test OSLC" with a unit test project, "Test OSLC Consumer". As we want these in separate components lets create two solutions for these projects. We will create these solutions in the same sandbox as the "OSLC" Solution above.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">18. First create the "OSLC Consumer Common" library which is a project of type "Class Library" in the "OSLC Common" solution:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://1.bp.blogspot.com/-ggvlGQoM_wc/TxyQufgNrLI/AAAAAAAAAFQ/169q6qF1rVM/s1600/11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://1.bp.blogspot.com/-ggvlGQoM_wc/TxyQufgNrLI/AAAAAAAAAFQ/169q6qF1rVM/s400/11.jpg" width="400" />&nbsp;</a></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">19. Put it in the "OSLC Common" Component:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://4.bp.blogspot.com/-bha7LH1dQ2o/TxyRwbiYfPI/AAAAAAAAAFw/dWAIfe960SQ/s1600/12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://4.bp.blogspot.com/-bha7LH1dQ2o/TxyRwbiYfPI/AAAAAAAAAFw/dWAIfe960SQ/s320/12.jpg" width="310" /></a></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://2.bp.blogspot.com/-g17-YFl_h5U/TxyRncZej7I/AAAAAAAAAFo/jy5s5NvMQQc/s1600/12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">20. Delver the new solution and project to the OSLC Stream.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">21. Let's repeat for "Test OSLC Consumer" library which is a project of type "Test Project" in the "Test OSLC" solution:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://1.bp.blogspot.com/-g46HXLw1nTE/TxyRODoNkUI/AAAAAAAAAFg/Tcbvr4WvhhU/s1600/13.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://1.bp.blogspot.com/-g46HXLw1nTE/TxyRODoNkUI/AAAAAAAAAFg/Tcbvr4WvhhU/s400/13.jpg" width="400" />&nbsp;</a></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">22. Now lets add it to the "Test OSLC" component:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://3.bp.blogspot.com/-zAd9ys07c9s/TxyR6I0zauI/AAAAAAAAAF4/Axvv8KSU2eQ/s1600/14.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://3.bp.blogspot.com/-zAd9ys07c9s/TxyR6I0zauI/AAAAAAAAAF4/Axvv8KSU2eQ/s320/14.jpg" width="310" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">23. Deliver the solution to the “OSLC Stream”</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">24. Go to the Solution Explorer Window (Team Concert-&gt;Windows-&gt;Sandbox Explorer).. it should looks as follows:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://1.bp.blogspot.com/-IpNZXxSPyx0/TxySOaoYwlI/AAAAAAAAAGA/dXV1uia6e-g/s1600/15.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://1.bp.blogspot.com/-IpNZXxSPyx0/TxySOaoYwlI/AAAAAAAAAGA/dXV1uia6e-g/s320/15.jpg" width="282" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">25. As i have named solutions the same as the Components we can easily see the projects in each component.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">To avoid having to keep three IDEs open lets add the "OSLC Consumer Common" and "Test OSLC Consumer" projects to the "OSLC" solution by right clicking on the solution and Add-&gt;Existing Project...</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://2.bp.blogspot.com/-Jy7eBIsnZw0/TxySYPqq9sI/AAAAAAAAAGI/Cq6-5aPa7H4/s1600/16.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="130" src="http://2.bp.blogspot.com/-Jy7eBIsnZw0/TxySYPqq9sI/AAAAAAAAAGI/Cq6-5aPa7H4/s400/16.jpg" width="400" />&nbsp;</a></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">26. Add the two projects and save the solution. You should have:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://2.bp.blogspot.com/---fZ1Fst3Jk/TxyShTPyITI/AAAAAAAAAGQ/TVi-JZPh7RY/s1600/17.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="83" src="http://2.bp.blogspot.com/---fZ1Fst3Jk/TxyShTPyITI/AAAAAAAAAGQ/TVi-JZPh7RY/s320/17.jpg" width="320" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">27. You can now deliver the OSLC.sln file to keep the changes to the solution. In the future we only need to open the OSLC solution. When you switch sandboxes Visual Studio will automatically ask you for a solution file. We will pick OSLC.sln from now on.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://4.bp.blogspot.com/-swINsOkhGts/TxySvGcpi-I/AAAAAAAAAGY/ZFT4VGbAlHU/s1600/18.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="201" src="http://4.bp.blogspot.com/-swINsOkhGts/TxySvGcpi-I/AAAAAAAAAGY/ZFT4VGbAlHU/s320/18.jpg" width="320" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">28. I have also gone ahead an deleted the default component and we might as well have the components be owned by the project level. Go to the “Team Artifacts” window and right click on the components and change ownership to the project for each component:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://3.bp.blogspot.com/-fXoTYvZnibY/TxyS58iBflI/AAAAAAAAAGg/vIn5-FhH9OI/s1600/19.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="128" src="http://3.bp.blogspot.com/-fXoTYvZnibY/TxyS58iBflI/AAAAAAAAAGg/vIn5-FhH9OI/s320/19.jpg" width="320" />&nbsp;</a></div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;">You project areas should look like this now:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://1.bp.blogspot.com/-GFh-UJh5g9Y/TxyTGl__zLI/AAAAAAAAAGo/-RvrgoI_msc/s1600/20.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://1.bp.blogspot.com/-GFh-UJh5g9Y/TxyTGl__zLI/AAAAAAAAAGo/-RvrgoI_msc/s320/20.jpg" width="187" /></a></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; margin-bottom: 0in; margin-top: 0in;"><b>This should prepare us for the next blog entry where we will start coding the OSLC client in C#.</b></div><div style="margin-bottom: 0in; margin-top: 0in;"><br /></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div><div style="margin-bottom: 0in; margin-top: 0in;"></div>Boris Kuschelhttps://plus.google.com/114130671453687648103noreply@blogger.com20tag:blogger.com,1999:blog-5693136284457832303.post-80976126861345026162011-10-30T12:12:00.001-04:002011-10-31T08:48:40.849-04:00CLM Warehouse Concepts<div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><a href="https://jazz.net/downloads/RRDI/releases/1.0.2">Rational Reporting for Development Intelligence (RRDI)</a> is a very complicated name for what is essentially a reporting engine for the <a href="https://jazz.net/projects/clm/">CLM</a> warehouse.&nbsp; Looking at the entire solution at first glance can be quite intimidating especially if one has not been exposed to warehouse concepts before. In this blog I will cover the CLM warehouse in preparation for subsequent blogs about RRDI, the schemas and reporting. So, I will cover warehousing concepts and general operation of the CLM warehouse first in preparation for creating a report in RRDI in the next blog.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><b><br /></b></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><b><u>CLM Basics for Data Warehousing</u></b></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Lets start with a very simple scenario: I have a database and I want to report off of it.&nbsp; In our case, the database is one of the CLM applications, lets say CCM. What are the possibilities?&nbsp; Previous to the release of 3.0, using BIRT was one, and it still is, though now it is being succeeded by RRDI which is probably the better choice.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">You may wonder at this point, why not point BIRT or some other report writer directly at the CCM database and be done with it? Here are some answers:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">a) Much of the extensibility of the Jazz products comes from the fact that XML is used as the underlying technology. So, in many cases, the operational data store of CCM, for example, has a lot of XML data in it that is hard to work with in a report writer.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">b) Performance. Usually you don't want to have an intensive reports running against a live repository serving operational requests (or an OLTP, online transaction processing database).</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">c) Trending. Sometimes you want to collect data for reporting on later.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">d) Reporting directly from the OLTP is not supported, probably for the three reasons above ( and perhaps others ). </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">The way to get around these issues is to create another database from which to report from that has a schema that is friendly to reporting.&nbsp;</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">This is a good point to introduce the CLM warehouse component which is a separate database for reporting that you create during CLM setup.&nbsp; Let's look at the setup.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">There are various sections ask for database details for a warehouse like below:</div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://1.bp.blogspot.com/-RR0PXu9MlL0/Tqxj5vE2fKI/AAAAAAAAADg/rlMw9nl5e80/s1600/DWDB.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="275" src="http://1.bp.blogspot.com/-RR0PXu9MlL0/Tqxj5vE2fKI/AAAAAAAAADg/rlMw9nl5e80/s320/DWDB.png" width="320" /></a></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">This is basically database configuration parameters. The last user, RPTUSER, is a database user which is used by RDDI to log in to the database when executing a report.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">At this point I should also mention the section below:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><img alt="" height="120" src="data:image/png;base64,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" width="320" /> </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">The user specified here is the user that is used by the process that transfers data from CCM (or other CLM product) into the new database we created above, the data warehouse. The process uses these user credentials to log into CCM to extract the data, so it is governed by this user's access rights.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">So in our scenario, now we have two databases: CCM and the data warehouse (and also a process, called an Extract, Transfer and Load (ETL) process)and we know that the CCM database is a proprietary database and the data warehouse is a report friendly database.&nbsp;</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Now I will cover these databases and process in a little more detail... </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><b><u>CLM Data Warehouse: A report-friendly database</u></b></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">What makes a database report friendly? Its, all in the schema. There are two primary schemas in the CLM warehouse: a <a href="http://en.wikipedia.org/wiki/Database_normalization">normalized form (NF) schema</a> (or operational data store) and a <a href="http://en.wikipedia.org/wiki/Star_schema">star schema</a> or dimensional model. I won't go into too much detail about these topic as there are several good books about the topic but i will cover them briefly here.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><u>A Normalized form (NF) database</u></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">This is a very common form database and comes in many degrees of purity. There are even standards of normal form purity, <a href="http://en.wikipedia.org/wiki/First_normal_form">1NF</a>, <a href="http://en.wikipedia.org/wiki/Second_normal_form">2NF</a>, <a href="http://en.wikipedia.org/wiki/Third_normal_form">3NF</a>, <a href="http://en.wikipedia.org/wiki/Boyce%E2%80%93Codd_normal_form">3.5NF</a>, <a href="http://en.wikipedia.org/wiki/Fourth_normal_form">4NF</a>, <a href="http://en.wikipedia.org/wiki/Fifth_normal_form">5NF</a> and <a href="http://en.wikipedia.org/wiki/Sixth_normal_form">6NF</a>. For people who are comfortable with object oriented type of paradigms, this is the database design that it closest to that. For example, the 3NF form has the following rules for tables:</div><ul style="font-family: &quot;Courier New&quot;,Courier,monospace;"><li> No columns with duplicate data</li><li>All columns must be dependent on the primary key</li><li>Columns which have data subsets that are identical across many rows are moved to a separate table and use foreign keys to establish the relationship. (An example would be a table with people, and the brand of the care they own. Since many people own the same cars, cars should be put into a separate table. )</li></ul><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">In the case where are tables in a database are 3NF then the database is considered 3NF. </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">As an example, here is an entity relationship diagram of our car/people example to give a simple example of a normalized form:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><img alt="" src="data:image/png;base64,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" /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><u>A Dimensional form database (star schema)</u></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">A star schema look like a, you guessed it, a star. The points of the star, take the form of dimension tables and the center of the star is another table, called the fact table. The dimension tables are connect through a foreign key relationship to the fact table. When you represent the foreign key relationships by lines you get an n-point stars for n dimensions. The dimension table contains an entity or objects (with keys) that are related together through the fact table with the foreign keys. The fact table qualifies this&nbsp; relationship with facts or numbers. For people who are more comfortable with functional notation, it can be described as follows:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">F(D<sub>1</sub>,D<sub>2</sub>,D<sub>x</sub>) = f<sub>1</sub>,f<sub>2</sub>,f<sub>y</sub></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">In other words, given a set of 1 to x dimensions, we will get will 1..n facts. The great thing about the dimensional form is that it is quite a familiar concept.&nbsp; If we happen only to specify a subset of all available dimensions then facts can be "rolled up" or summarized using a function. Functions can be average, summations, maximum, minimum, etc.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Here is our car/people example as a star schema, in this case we are counting the car by color:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><img alt="" src="data:image/png;base64,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" /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Using "roll ups".&nbsp; I can get the number of cars, irrespective of color using a aggregate function in a query. Our functions would be,</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">F_CAR_OWNERSHIP(Gender, Person, City, Car) = #Red, #Blue, #White, #Black, #Green</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">For example:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">F_CAR_OWNERSHIP("Male","Pat Smith","Albany","BMW") = 1,0,0,0,0</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">This tell use that John Smith has a red BMW. We could leave out Gender and aggregate and we would probably get the same result unless there is a female "Pat Smith". A better aggregate would be to get the number of BMW cars in Albany:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">F_CAR_OWNERSHIP(City, Car) = SUM(#Red+#Blue+#White+#Black+#Green)</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">F_CAR_OWNERSHIP("Albany","BMW") = 10</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">You could also model another star that would give the answer to this function without rolling up.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Dimensional modeling provides a easy and familiar concepts to calculate values efficiently using simple queries. Providing these types of activity in a report would be quite inefficient as you would need to calculate these values using inefficient and sometimes complicated queries with many joins. This is why this paradigm is popular in data warehouses. </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">The CLM Data warehouse contains both the normalized form (RIODS schema) and also contains a star schema (RIDW schema).&nbsp;&nbsp; The star schema is populated from the normalized schema using a another ETL process that performs all the required calculations and roll ups. When to use normalized vs. dimensional really depends on the report you wish to create. Generally speaking, if your report is about facts (numbers) you should use a star schema as it has data already calculated with minimal table joins and is much more efficient. If it is a list of objects of some sort then the normalized form.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Documentation about these CLM warehouse schemas can be found <a href="http://publib.boulder.ibm.com/infocenter/rentrpt/v1r0m1/index.jsp?topic=%2Fcom.ibm.rational.raer.models.doc%2Ftopics%2Fcontent%2F_PFxaMRkjEeCvlPIv3KTKYA_root.html">here.</a></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><b><u>ETL Processes</u></b></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">As mentioned above there are ETL processes that transfer data from CCM, RM and QM to the CLM data warehouse, or more specifically, the normalized form (RIODS).&nbsp; These processes are available to be run in the Report section of the respective application administrative areas in CLM 3.x. For example, for CCM it looks like this:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;">&nbsp;<img alt="" height="306" src="data:image/png;base64,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" width="320" /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Note that "Data Warehouse" is selected. The other setting is for the previous "Data Mart" that was used in previous versions. Also Note the four ETL process. You generally run all of them if you want all the CCM data to show up in reports but you can also define better fidelity if you only want work items to be transferred, for example.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">You can also run all the jobs for all the CLM applications on a scheduled basis from the report section in JTS admin. From here, there is also the job that transfers the data from the normalized form (RIODS) to the star schema (RIDW).</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><img alt="" height="320" src="data:image/png;base64,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" width="317" />&nbsp;</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;"><br />So this gives a round up of the reasoning for having three databases for reporting (actually two, but one having two schemas) and a description of the processes which transfer data between them and how to activate them in CLM. Here is a diagram of the overall CLM picture:<br /><br /><img alt="" src="data:image/png;base64,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" /> <br /><br /><b>In the next blog we will use RRDI to examine these schemas from the report designer and create a report!</b></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div>Boris Kuschelhttps://plus.google.com/114130671453687648103noreply@blogger.com1tag:blogger.com,1999:blog-5693136284457832303.post-50156802021576848402011-10-15T10:39:00.001-04:002011-10-15T10:45:10.073-04:00Extending RTC/CLM (SDK and Reporting)<span style="font-family: &quot;Courier New&quot;, Courier, monospace;">I've been thinking about what topic would be most beneficial for users of RTC and CLM in general for upcoming blogs. Two themes seem to be recurring in my interactions with users: plugin extensions and reporting.&nbsp; </span><br /><br /><span style="font-family: &quot;Courier New&quot;, Courier, monospace;">Plugin extensions allow for the creation of process "hooks" so that specific types of operations and actions can be performed. For example, on the saving of a work items information can be sent to another system with some information contained there within.&nbsp;Another example is to specify some behaviour on delivery of the work item into SCM.&nbsp; All of this is possible and there is an </span><a href="https://jazz.net/downloads/rational-team-concert/releases/3.0.1/RTC-SDK-3.0.1.zip"><span style="font-family: &quot;Courier New&quot;, Courier, monospace;">SDK</span></a><span style="font-family: &quot;Courier New&quot;, Courier, monospace;"> on </span><a href="http://jazz.net/"><span style="font-family: &quot;Courier New&quot;, Courier, monospace;">jazz.net</span></a><span style="font-family: &quot;Courier New&quot;, Courier, monospace;">&nbsp;with </span><a href="https://jazz.net/wiki/bin/view/Main/RtcSdk20"><span style="font-family: &quot;Courier New&quot;, Courier, monospace;">instructions on the wiki</span></a><span style="font-family: &quot;Courier New&quot;, Courier, monospace;"> on how to set up a development environment that allows for the creation of these extensions. One of the ideas I had was to be able to create some functional examples of these extensions. </span><br /><br /><span style="font-family: &quot;Courier New&quot;, Courier, monospace;">The other popular topic is reporting. CLM 2011 now includes </span><a href="https://jazz.net/downloads/RRDI/"><span style="font-family: &quot;Courier New&quot;, Courier, monospace;">RRDI (Rational Reporing for Development Intelligence)</span></a><span style="font-family: &quot;Courier New&quot;, Courier, monospace;">, a powerful reporting engine that allows the creation of reports that combine data across the familly of CLM products (RRC, RQM and RTC).&nbsp; It is similar to </span><a href="https://jazz.net/downloads/rational-insight/"><span style="font-family: &quot;Courier New&quot;, Courier, monospace;">Rational Insight</span></a><span style="font-family: &quot;Courier New&quot;, Courier, monospace;"> but does not allow the extraction of data from products outside of the CLM family. I can go into more detail in subsequent posts&nbsp;in what situations&nbsp;where you would use RRDI&nbsp;vs. Insight. There is a </span><a href="http://publib.boulder.ibm.com/infocenter/rentrpt/v1r0m1/index.jsp?topic=/com.ibm.rational.raer.migrating.doc/topics/t_upgrade_rrdi_to_insight.html"><span style="font-family: &quot;Courier New&quot;, Courier, monospace;">clear path</span></a><span style="font-family: &quot;Courier New&quot;, Courier, monospace;"> from RRDI to Insight, so it doesn't hurt to start with RRDI and then when your reporting requirements "outgrow" RRDI then it isn't much a problem to adopt Insight. Things people often ask about with respect to these solutions is how to create a report and in the case of Insight: how to modify the ETLs ,add new data sources, modify the meta data and customize the configurations.</span><br /><br /><span style="font-family: &quot;Courier New&quot;, Courier, monospace;">I will hopefully be able to cover both of these topics but for prioritization purposes I have&nbsp;put a vote widget at the bottom of the left column to collect the interest level for these topics. Please vote and let me know!</span>Boris Kuschelhttps://plus.google.com/114130671453687648103noreply@blogger.com1tag:blogger.com,1999:blog-5693136284457832303.post-36484421500444031882011-09-11T18:19:00.000-04:002011-09-11T18:19:05.323-04:00CPP Unit testing with Rational Team Concert<div style="font-family: &quot;Courier New&quot;,Courier,monospace;">In the spirit of the agile "just enough, just in time" principle, I had <a href="http://www.boriskuschel.com/code-samples/OSLCConsumer.zip">originally created</a> the OSLC code sample in a minimalistic way to demonstrate what I was explaining in the posting. As I mentioned in <a href="http://blog.boriskuschel.com/2011/08/oslc-development-using-cc-and-rational.html">my original post</a>, I did not use method parameters and variables were stuck in to the global variable context.&nbsp; As it turns out, this is not very unit testable code.&nbsp;</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">This is one of the good things about unit testing; it forces one to make the code testable, and by consequence, better structured.&nbsp; Hence, I have refactored my code to add function parameters and have taken some variables out of the global context. I also fixed up a few other things.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">In addition to this I have also broken the code base into three projects (or targets), one of which is the unit test executable. This is necessary as native executables typically only have one entry point, the main (WinMain, _main, etc.) function and I need two (one for the program itself and one for executing the unit tests only).&nbsp; I could of used command line arguments but this is not a good way of doing it.&nbsp; It is better practice to not mix unit test code with production code so I basically created projects that produce two executables: one with the unit tests, the other with the production executable (the "main" main function).&nbsp; The common code used by both I have but in a static library. </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">In continuation of my <a href="http://blog.boriskuschel.com/search/label/C%2FC%2B%2B">previous articles</a> related to C/C++ development on Rational Team concert, i will continue here by adding cppunit unit tests. To start we need to add some things to the MinGW sys environment that I explained in the <a href="http://blog.boriskuschel.com/2011/07/oslc-development-using-cc-on-jazz-part.html">first posting</a>.&nbsp; So, if you have not set up MinGW and Rational Team Concert to at least that point, you should do so before continuing.&nbsp;&nbsp;</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">There is no better way to understand the code then to show it so lets do some set up and get the code loaded. So lets start being installing MSYS into MinGW.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><u>You will need to do the following:</u></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /><span style="color: yellow;">1.&nbsp; From within a command prompt type and answer the questions appropriately. </span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">mingw-get intall msys</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">2. You now need to run a post install script to set up MSYS to work with MinGW.&nbsp; You now need to launch the MSYS shell and run a post install script. You will need to know where your MinGW installation is (typically C:\MinGW). First launch MSYS and then run the script from the MSYS shell.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">C:\MinGW\msys\1.0\msys.bat</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">/postinstall/pi.sh</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">3.&nbsp; We also need the MinGW developer toolkit. You can install it by running the following command from the command prompt.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">mingw-get install mingw-developer-toolkit</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">4. Last thing is to add MSYS to you system path. Do so by adding C:\MinGW\msys\1.0\bin to you system path after the C:|MinGW\bin path entry.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Next step is to install cppunit. We will need to build it as well so we will download the distribution, build it using the MinGW build toolchain. We could also build it using Rational Team Concert but there is really no point to it as we are not developing or contributing to cppunit but rather just using it.&nbsp; The best thing is to install it into the MinGW directories so that we don't need to add extra include and library paths to our C/C++ projects, we can just keep the default MinGW ones.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><u>You will need to do the following:</u></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">1. You need </span><a href="http://sourceforge.net/projects/cppunit/files/cppunit/1.12.1/cppunit-1.12.1.tar.gz/download">cppunit 1.12.1</a><span style="color: yellow;"> from sourceforge.</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">2. Extract the tar ball into a memorable place. In my case it was C: (C:\cppunit-1.12.1)</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"> </div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"> 3. Open a MSYS shell (C:\MinGW\msys\1.0\msys.bat) and change the directory to the cppunit directory and run the following commands:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">cd C:/cppunit-1.12.1</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">./configure --prefix=/mingw<br />make <br />make install</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Thats it! You should now have cppunit installed into your MinGW compiler toolchain environment. Next step is to actually get the code.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">1. Download the Rational Team Concert 3.0.1 </span><a href="http://www.boriskuschel.com/code-samples/OSLCConsumerv2.zip">OLSC sample projects</a> <span style="color: yellow;">from </span><a href="http://www.boriskuschel.com/code-samples/OSLCConsumerv2.zip">here</a><span style="color: yellow;">. As i mentioned in the opening, I have split the code base into three projects. A common library, the production executable and the unit test executable.</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">2. Extract the zip file into your Rational Team Concert workspace. (Delete the old ones if necessary)</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br />3. Import the projects into Rational Team Concert by running "File-&gt;Import-&gt;General-&gt;Import Existing Projects" into Workspace</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br />4. Do a search and replace ("Search-&gt;File") in the workspace for: servername, 9443, username, password and replace them with your corresponding rational team concert host name, port, username and password (for an JazzAdmins user preferably).</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">5. You will also need to adjust some paths in the build.xml files and make files in all the projects. If you do not remember which ones please look at the </span><a href="http://blog.boriskuschel.com/2011/08/static-analysis-with-cc-and-rational.html">blog posting about setting up static analysis</a><span style="color: yellow;"> (the CLASSPATH and JAVA variables in the Makefiles and the path to RSAR in build.xml). If you do not want static analysis as part of the build you can comment the corresponding lines out.</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">You should be able to build after doing the proper adjustments. You will notice that the builds are using the MinGW make tool and generating make files. This seems to work the best with Rational Team Concert and CDT. It also provides the added benefit of easily testing Makefiles by simply switching the "Generate Makefiles Automatically" option in the "Project Properties-&gt;C/C++ Build" section. </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">Keys things to note here is the refactoring that has been doing to the project and build environments:</div><ul style="font-family: &quot;Courier New&quot;,Courier,monospace;"><li>Three Projects:</li><ul><li>OSLC Consumer: The Production executable</li><li>OSLC Consumer Common: A static library used by the executables</li><li> Test OSLS Consumer: The unit test executable that runs the unit tests</li></ul><li>Three makefiles and build.xml files:</li><ul><li>OSLC Consumer</li><ul><li>JBEMakefile builds the production exe and runs static analysis on OSLC Consumer (OSLCConsumer.exe) and also kicks off the other project makefiles as a precondition. It is used directly by the JBE (Jazz Build Engine).</li><li>build.xml provides updates to JBE about the build and published static analysis links an artifacts. </li></ul><li>OSLC Consumer Common:</li><ul><li>Makefile builds the static libary (libOSLCConsumerCommon.a) and runs static analysis on it.</li><li>build.xml provides updates to JBE about the build and published static analysis links an artifacts.</li></ul><li>&nbsp;Test OSLC Consumer:</li><ul><li>Makefile builds the test executable (TestOSLCConsumer.exe) ,runs static analysis on it, and runs the executable (ignoring errors as the executable publishes results to xml).</li><li>&nbsp;build.xml provides updates to JBE about the build and published static analysis links an artifacts. It also publishes the xml unit test results to JBE using the cppunitLogPublisher tag.</li></ul></ul></ul><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">The build engine definition remains unchanged from previous blogs. The only thing to do is to deliver the code into the RTC SCM, accept it into the Build Stream and request a build as described in previous blogs.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">The end result you should see a build result like this:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://2.bp.blogspot.com/-ASiex6GrkP0/Tm0vmnrvzyI/AAAAAAAAADY/Hqb8PXY7VLc/s1600/testresult.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="465" src="http://2.bp.blogspot.com/-ASiex6GrkP0/Tm0vmnrvzyI/AAAAAAAAADY/Hqb8PXY7VLc/s640/testresult.jpg" width="640" /></a></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">You can see that 2 unit test were run ant they both succeeded. You can try to make the unit test fail on purpose by modifying the code to see what happens. You can also see the static analysis artifacts and links.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"> I you actually take a look at the test you can see that the results have been published:</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://3.bp.blogspot.com/-58VzfUCC0cI/Tm0wDjP0xnI/AAAAAAAAADc/UUXuq_SDtPk/s1600/unittestresult.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="313" src="http://3.bp.blogspot.com/-58VzfUCC0cI/Tm0wDjP0xnI/AAAAAAAAADc/UUXuq_SDtPk/s400/unittestresult.jpg" width="400" />&nbsp;</a></div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">So, we have no build a complete template C/C++ software development environment in Rational Team Concert 3.0.1.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><b>I am not sure what I should cover in subsequent blogs regarding this topic but I am open to suggestions! </b></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div>Boris Kuschelhttps://plus.google.com/114130671453687648103noreply@blogger.com0tag:blogger.com,1999:blog-5693136284457832303.post-22583765562523182832011-08-23T19:51:00.008-04:002012-01-22T17:13:16.872-05:00Static Analysis with C/C++ and Rational Team Concert<div style="font-family: &quot;Courier New&quot;,Courier,monospace;">To recap: As i have done with my previous posts, this one is also building upon the previous post.&nbsp; As this chain of posts is getting quite large now, I think its a good time to list them again here:</div><ol style="font-family: &quot;Courier New&quot;,Courier,monospace;"><li> <a href="http://blog.boriskuschel.com/2011/07/oslc-development-using-cc-on-jazz-part.html">OSLC Development using C/C++ and Rational Team Concert (Part 1)</a></li><li><a href="http://blog.boriskuschel.com/2011/08/open-services-for-lifecycle.html">Open Services for Lifecycle Collaboration (OSLC) (a short intro)</a></li><li><a href="http://blog.boriskuschel.com/2011/08/oslc-development-using-cc-and-rational.html">OSLC Development using C/C++ and Rational Team Concert (Part 2)</a></li><li><a href="http://blog.boriskuschel.com/2011/08/automated-builds-using-cc-and-rational.html">Automated builds using C/C++ and Rational Team Concert</a></li></ol><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">In the last post, (4), I went over how to create an automated build with the Jazz build engine and Rational Team Concert. In this post we will enhance that build to include a static analysis of the code. To be honest, the sample code is not very interesting from this perspective but we will get some reports which is the important thing for this demonstration.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">There are other static analysis tools out there that plug into eclipse including <a href="http://wiki.eclipse.org/CDT/designs/StaticAnalysis">CODAN</a> (include in CDT 8.0), <a href="http://cppcheck.sourceforge.net/">cppcheck</a> as well as commercial ones. You could actually use any of them in this scenario if you understand how to launch them from the command line and generate some interesting output. For the purposes of this exercise I will use Rational Software Analyzer (RSAR) 7.1 Enterprise Edition which is a plugin for eclipse 3.4. I am using it because it produces some nice output that I can attach to the build in two ways: 1) Through a link to the RSAR server and 2) I also have a package of results in XML format without needing to do much. 3) Comes with a 30 day trial so you can start with it right away.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">RTC 3.0.1 only works with 3.5/Galileo, 3.6/Helios (I even got it to work on 3.7/Indigo) but not 3.4/Ganymede so we will need to install RTC 2.0.0.2 client into RSAR 7.1 to be able to open RTC projects (even though you will not be able to connect to the RTC 3.0.1 server).</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><u>Ok.. first we need to set up our environment.</u></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">1. Install </span><a href="http://www.ibm.com/developerworks/downloads/r/rsar/">RSAR 7.1 Enterprise Trial</a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">-Default options are perfect</span><br /><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">2.</span> <a href="https://jazz.net/downloads/rational-team-concert/releases/2.0.0.2iFix6/RTC-Eclipse-Client-2.0.0.2iFix6-Win32-Local.zip">Download and Install RTC 2.0.0.6</a> <span style="color: yellow;">into the </span><b style="color: yellow;">SAME package group as RSAR 7.1</b></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">You may need to tweak the server.xml for RSAR 7.1 Enterprise server to change the SHUTDOWN port. For example in this file:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">C:\Program Files \IBM\RSAREE\tomcat\conf\server.xml</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Change:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">&lt;Server port="9005" shutdown="SHUTDOWN"&gt;</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">to:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">&lt;Server port="9006" shutdown="SHUTDOWN"&gt;</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">3. Start the RSAR Enterprise server.<br /><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><u>Now we need to prepare our project:</u></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">1. Let create a rule file for the static analysis. Launch RSAR </span><span style="color: yellow;">and select the same workspace you loaded the </span><b style="color: yellow;">OSLC Consumer</b><span style="color: yellow;"> project into. Mine is C:\workspace for example.Also:</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">- You may need to shutdown the RTC 3.0.1 client if it is running.&nbsp;</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">- If you have the RTC 2.0.0.2 client installed into RSAR properly you RSAR will error telling you that you cannot connect RTC 2.0.0.2 to RTC 3.0.1 server. That's ok, we dont care. Ignore it and Press "OK".</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">- If RSAR pops up large dialog complaining about workspace consistency.. also ignore it and select "Repair Later"</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">2. At this point you should see the OSLC Consumer Project.. if not switch to the C/C++ perspective.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">3. Right click on the project-&gt;Software Analyzer-&gt;Software Analyzer Configurations...</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">4. Create a new configuration call "OSLC Consumer". Make sure the OSLC Consumer Project is in Scope.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">5. Select all the C/C++ rules as below:</div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://4.bp.blogspot.com/-BlkgeHjk8eY/TlQxmeoRD1I/AAAAAAAAADE/Ro47F_BziJI/s1600/ruleset.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="246" src="http://4.bp.blogspot.com/-BlkgeHjk8eY/TlQxmeoRD1I/AAAAAAAAADE/Ro47F_BziJI/s400/ruleset.jpg" width="400" /></a></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;"><br /></div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: left;">6. Now click the "Export" button and save the project into the OSLC Consumer Project directory as "OSLC Consumer.dat"</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">7. Click Close. (You could analyze here if you want but we will do it as part of our build.)</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">8. Close RSAR 7.1.</div><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">We are done it terms of configuration RSAR to analyze our code. If we wanted to change the rules or create different rules we would follow the same procedure as above. We need to check in the .dat file into RTC and modify our build to run a static analysis after compilation. After compilation makes more sense because if the code doesn't compile, its not worth to do a static analysis on it anyway.</span><br /><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">1. Launch RTC 3.0.1 Client</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">2. You may again see the large dialog with the "Crash detected' message. This time you should click "Repair Now".</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">3.&nbsp; We will create a new makefile for the JBE build that includes the static analysis</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">-We could also include this as part of our local build as it is a subset of the build file we will use here.</span></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">4. Download the new</span> <a href="http://www.boriskuschel.com/code-samples/JBEMakefile">JBEMakefile</a>, <span style="color: yellow;">copy it into your OSLC Consumer Project directory and add it to the project and deliver it into the SCM.</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Lets review the changes we have made here. You may need to tweak the JBEMakefile including:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">CLASSPATH = C:/jazz/buildsystem/buildengine/eclipse/plugins/org.apache.ant_1.7.1.v20090120-1145/lib/ant-launcher.jar</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">JAZZ_TOOLKIT = C:/jazz/buildsystem/buildtoolkit</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">JAVA = C:\Progra~2\IBM\Java60\bin\java</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br />You should adjust these according to your environment.&nbsp; Also note that we could of made these build properties in the same way as "repositoryAddress" is but we will leave it live this for now and you can do it later.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">5. Download the</span> <a href="http://www.boriskuschel.com/code-samples/build.xml">build.xml</a> <span style="color: yellow;">file and do the same as above (save to project and deliver).</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">You will also need to adjust this particular file to your environment. In particular: </div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">&lt;property name="userId" value="ADMIN" /&gt;</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">&lt;property name="password" value="password" /&gt;</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">This should be the same as your build user name and password.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Search and replace:</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">C:\Progra~2\IBM\RSAREE</span></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br />to point to your RSAR installation. Again, it would of been better to put this as a build property. I leave this as an exercise for you.</div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">6. Go to your CDT Build definition created in the previous post and change the Command line as follows. Note the build proprieties. This is where you would set the other ones. Also note the make command is now using the JBEMakefile.</div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://2.bp.blogspot.com/-9VMrPkNkHpk/TlQ3KNYswAI/AAAAAAAAADI/bbn2mtqmcZc/s1600/JBEBuild.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="228" src="http://2.bp.blogspot.com/-9VMrPkNkHpk/TlQ3KNYswAI/AAAAAAAAADI/bbn2mtqmcZc/s640/JBEBuild.jpg" width="640" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br />7. One last thing you need to do! You need to load the build workspace and accept the changes you have delivered. First unload your current workspace to prevent confusion.</div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://4.bp.blogspot.com/-xk9oLYHn_o8/TlQ4HEwi-AI/AAAAAAAAADM/CXGYZa4kiFQ/s1600/unloadbuild.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="277" src="http://4.bp.blogspot.com/-xk9oLYHn_o8/TlQ4HEwi-AI/AAAAAAAAADM/CXGYZa4kiFQ/s400/unloadbuild.jpg" width="400" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">You can load it the build workspace by issuing a load command on the workspace.</div><div class="separator" style="clear: both; color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://3.bp.blogspot.com/-BNsFUcfld0o/TlQ4QrWCfhI/AAAAAAAAADQ/TXIDhb7gOS0/s1600/loadbuild.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="271" src="http://3.bp.blogspot.com/-BNsFUcfld0o/TlQ4QrWCfhI/AAAAAAAAADQ/TXIDhb7gOS0/s400/loadbuild.jpg" width="400" /></a></div><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">Now accept the changes in the pending changes view. That's it!</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">You can peruse the files at your will. The end result is that the Makefile will launch a static analysis using ant command to interact with the Jazz build engine so as to update the build result and notify on progress. This is done using ant tags. For information on those tags go to the <a href="http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0m1/topic/com.ibm.team.build.doc/topics/r_ant-tasks.html">CLM 3.0.1 information center</a>.</div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;">The build result should look something like this,&nbsp; with a link the RSAR server with the static analysis web pages and an attachment with the analysis results in XML format.</div><div class="separator" style="clear: both; font-family: &quot;Courier New&quot;,Courier,monospace; text-align: center;"><a href="http://2.bp.blogspot.com/-ObM2MOCa3kM/TlQ6C426lUI/AAAAAAAAADU/AlV93oo1l44/s1600/buildresult.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="417" src="http://2.bp.blogspot.com/-ObM2MOCa3kM/TlQ6C426lUI/AAAAAAAAADU/AlV93oo1l44/s640/buildresult.jpg" width="640" /></a></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"></div><div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><b>That's it for today.. Next time I will expand the build and add some unit tests!</b></div><br />Boris Kuschelhttps://plus.google.com/114130671453687648103noreply@blogger.com0tag:blogger.com,1999:blog-5693136284457832303.post-11768439962297080622011-08-12T13:58:00.008-04:002011-08-24T09:58:27.040-04:00Automated builds using C/C++ and Rational Team Concert<span style="font-family: &quot;Courier New&quot;, Courier, monospace;">In the previous two posts (<a href="http://blog.boriskuschel.com/2011/07/oslc-development-using-cc-on-jazz-part.html">Part 1</a> , <a href="http://blog.boriskuschel.com/2011/08/oslc-development-using-cc-and-rational.html">Part 2</a>),&nbsp;I went through the process of setting up the basics to get started with C/C++ in Rational Team Concert. We were building and running the code from&nbsp;RTC menus and while this is fine for a&nbsp;one person code hobbyist it isn't really enough if we want to create quality code in a team production&nbsp;environment.&nbsp; </span><span style="font-family: Courier New;">For that, we need to set up some automated tests and builds and in this post I will go through the steps on how to set up an automated C/C++ build&nbsp;in Rational Team Concert. We will&nbsp;be building&nbsp;the&nbsp;<a href="https://sites.google.com/a/boriskuschel.com/www/code-samples/OSLCConsumer.zip">OSLC code&nbsp;sample</a>&nbsp;that we imported in <a href="http://blog.boriskuschel.com/2011/08/oslc-development-using-cc-and-rational.html">Part 2</a>&nbsp;for this exercise.</span><br /><br /><span style="font-family: Courier New;"><u>What you will need:</u></span><br /><br /><span style="font-family: Courier New;"><span style="color: yellow;">1.</span> <a href="https://jazz.net/downloads/rational-team-concert/releases/3.0.1/RTC-Web-Installer-Win-3.0.1.zip">Rational Team Concert Client&nbsp;3.0.1</a></span><br /><span style="font-family: Courier New;"><span style="color: yellow;">2.</span> <a href="https://jazz.net/downloads/rational-team-concert/releases/3.0.1/RTC-Web-Installer-Win-3.0.1.zip">Jazz Team Server with Change and Configuration Management (CLM 3.0.1)</a></span><br /><span style="font-family: Courier New;"><span style="color: yellow;">3.</span> <a href="https://jazz.net/downloads/rational-team-concert/releases/3.0.1/RTC-BuildSystem-Toolkit-Win-3.0.1.zip">Build System Toolkit 3.0.1</a></span><br /><span style="font-family: Courier New;"><span style="color: yellow;">4. Ensure you have mingw32-make (see </span><a href="http://blog.boriskuschel.com/2011/07/oslc-development-using-cc-on-jazz-part.html">Part 1</a><span style="color: yellow;">) is </span><span style="color: yellow;">in your PATH and&nbsp;installed:</span></span><br /><span style="color: yellow; font-family: Courier New; font-size: x-small;">mingw-get install mingw32-make</span><br /><br /><span style="font-family: Courier New;">I am going to assume that&nbsp;the Jazz Team Server 3.0.1 is installed with the change and configuration management application&nbsp;and that you have created&nbsp;a new project area&nbsp;with the&nbsp;out-of-the-box Scrum process&nbsp;called <strong>"CDT"</strong>. If you do not know how to connect to a repository or create a project area&nbsp;I will refer you to the <a href="http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0m1/index.jsp">CLM&nbsp;3.0.1 information center</a>. Information on how to get set up, plus more, can be found there. If all went well, then your project area in the Team Artifacts View of the Work Item perspective should look like this: </span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-YwAQjlBG8dc/TkUjfOszKSI/AAAAAAAAACA/hXe6Me7Ja0o/s1600/RTCCDT.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="221" src="http://1.bp.blogspot.com/-YwAQjlBG8dc/TkUjfOszKSI/AAAAAAAAACA/hXe6Me7Ja0o/s320/RTCCDT.jpg" width="320" /></a></div><span style="font-family: &quot;Courier New&quot;, Courier, monospace; font-size: x-small;">IMPORTANT: Make sure you are assigned&nbsp;to the project as "Scrum Master"! Being project administrator is not enough.</span><br /><br /><span style="font-family: &quot;Courier New&quot;, Courier, monospace;">We have a default stream and a default component and to keep things simple we will be using those for this exercise. Go the C/C++ perspective in RTC and deliver the OSLC Consumer project into the default stream and component.</span><br /><br /><span style="font-family: Courier New;"><u>Here's how to do it:</u></span><br /><br /><span style="font-family: Courier New;"><span style="color: yellow;">1. Right Click on the <strong>OSLC Consumer-&gt;Team-&gt;Share Project-&gt;Jazz Source Control</strong></span></span><br /><br /><span style="font-family: Courier New;"><span style="color: yellow;">2. You will see that a workspace has already been created for you that is following the default stream. Select the CDT Stream Workspace's Default Component and then <strong>"Finish"</strong></span></span><br /><br /><span style="font-family: Courier New;"><span style="color: yellow;">3. Now that we've added the&nbsp;project to the&nbsp;workspace we can simply deliver it to the stream by going into the <strong>Pending Changes View</strong>&nbsp;right clicking on the&nbsp;<strong>CDT Stream Workspace</strong> and selecting <strong>"Deliver"</strong></span></span><br /><span style="color: yellow; font-family: Courier New; font-size: x-small;">NOTE:&nbsp;I will not&nbsp;associate a work item to the delivery at this point but we will do this later with another delivery.</span><br /><br /><span style="color: yellow; font-family: Courier New;">4. Now our code is in the default stream which we will now set up&nbsp;for an automated&nbsp;build.</span><br /><br /><span style="color: yellow; font-family: Courier New;">5. First thing we should do is set up a separate workspace for the build engine.&nbsp; We could use our default workspace for this but as we are working on the code it would not be buildable and we also don't want the build engine to load over our work.</span><br /><span style="color: yellow; font-family: Courier New;">Go to the Team Artifacts View of in the Work Item perspective.&nbsp;Right click on&nbsp;<strong>"My Repository Workspaces"</strong>. Select the default stream:</span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-nEILrWzTQKI/TkUt548PDrI/AAAAAAAAACE/CtkW4_RaYRA/s1600/FlowStream.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow;"><img border="0" src="http://2.bp.blogspot.com/-nEILrWzTQKI/TkUt548PDrI/AAAAAAAAACE/CtkW4_RaYRA/s1600/FlowStream.jpg" /></span></a></div><span style="color: yellow;"><span style="font-family: Courier New;">Click <strong>"Next"</strong> and call the new build workspace:</span><span style="font-family: &quot;Courier New&quot;, Courier, monospace;">&nbsp;<strong>"Build CDT Workspace"</strong>. Click Next twice to get to the page asking for Read Access Permission. Select <strong>"Public"</strong>.</span></span><br /><span style="color: yellow; font-family: Courier New; font-size: x-small;">NOTE: Usually you would want to make this private to the build engine but again for simplicity we will make it public.</span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;, Courier, monospace;">Click <strong>"Next"</strong> again and ensure that the Default Component is selected and <strong>"Load repository workspace after creation"</strong> is unchecked.</span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-VGV3aU1olX4/TkUvpZnileI/AAAAAAAAACI/ziGEsH6zW9Q/s1600/Components.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow;"><img border="0" src="http://4.bp.blogspot.com/-VGV3aU1olX4/TkUvpZnileI/AAAAAAAAACI/ziGEsH6zW9Q/s1600/Components.jpg" /></span></a></div><span style="font-family: &quot;Courier New&quot;, Courier, monospace;"><span style="color: yellow;">Click <strong>"Finish".</strong></span></span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;, Courier, monospace;">6. Next is to create a build engine and a build definition. To create a build engine we will simply right click on the build engines section of our project area:</span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-G5BxCZSMGF0/TkUwP0XifyI/AAAAAAAAACM/t71GXGi31mo/s1600/buildengine.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow;"><img border="0" src="http://1.bp.blogspot.com/-G5BxCZSMGF0/TkUwP0XifyI/AAAAAAAAACM/t71GXGi31mo/s1600/buildengine.jpg" /></span></a></div><span style="color: yellow; font-family: Courier New;">Click next and ensure we are creating a new build engine called <strong>"CDT engine"</strong> and that it is the <strong>"Jazz Build Engine"</strong> type. Click <strong>"Finish"</strong> and then click the "Save" button in the top right corner of the new build engine.</span><br /><br /><span style="color: yellow; font-family: Courier New;">7. Now that we have an engine we need to define a build. Right click on <strong>"Builds"</strong> this time.</span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-P4h0XOj_KSI/TkUxxVQ1URI/AAAAAAAAACQ/ZbtQOfIssyU/s1600/builds.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow;"><img border="0" src="http://4.bp.blogspot.com/-P4h0XOj_KSI/TkUxxVQ1URI/AAAAAAAAACQ/ZbtQOfIssyU/s1600/builds.jpg" /></span></a></div><span style="color: yellow; font-family: &quot;Courier New&quot;, Courier, monospace;">Select <strong>"New Build Definition..."</strong>. Click <strong>"Next"</strong> to create a new build using the <strong>"Command Line - Jazz Build Engine"</strong> template. Leave the ID as <strong>"CDT build"</strong>. Click Next and select <strong>"Jazz Source Control"</strong> in the Pre-Build page. Everything else will be default for now so click <strong>"Finish"</strong>.</span><br /><br /><span style="color: yellow;"><span style="font-family: Courier New;">8. In the new build definition type </span><span style="font-family: Courier New;"><strong>"mingw32-make clean all"</strong> in the <strong>"Command"</strong> field of the "Command Line" tab and also set the working directory to be the location of the Makefile (we will add it to the project):</span></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-WWlkLkJTOGQ/TkVh2L2z9TI/AAAAAAAAAC8/yVMUDBzAlAc/s1600/commandline.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow;"><img border="0" height="153" src="http://4.bp.blogspot.com/-WWlkLkJTOGQ/TkVh2L2z9TI/AAAAAAAAAC8/yVMUDBzAlAc/s320/commandline.jpg" width="320" /></span></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><span style="color: yellow; font-family: Courier New;">9. In the <strong>"Jazz Source Control"</strong> tab set the Build workspace to the one we just created for this build: <strong>"Build CDT Workspace"</strong> and select a Load directory in <strong>"Load Options"</strong> (In my case it is C:\build\CDT). Also Select <strong>"Delete directory before loading"</strong>.</span><br /><span style="color: yellow; font-family: Courier New; font-size: x-small;">NOTE: A dialog will popup regarding the build owner. Press Ok.</span><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-tMWXOjbx9Eg/TkU5Hvn05iI/AAAAAAAAACY/fB7jVdrWTtQ/s1600/BuildWkspace.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow;"><img border="0" height="225" src="http://4.bp.blogspot.com/-tMWXOjbx9Eg/TkU5Hvn05iI/AAAAAAAAACY/fB7jVdrWTtQ/s400/BuildWkspace.jpg" width="400" /></span></a><span style="color: yellow;">&nbsp;</span></div><div class="separator" style="clear: both; text-align: left;"><span style="color: yellow; font-family: &quot;Courier New&quot;, Courier, monospace;">Add the <strong>"CDT engine"</strong> in the <strong>"Supporting Build Engines"</strong> section of the <strong>"Overview"</strong> tab:</span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-nc7BNFEEEsc/TkU517itqPI/AAAAAAAAACc/SUMoBW5lq10/s1600/supbuildeng.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow;"><img border="0" src="http://4.bp.blogspot.com/-nc7BNFEEEsc/TkU517itqPI/AAAAAAAAACc/SUMoBW5lq10/s1600/supbuildeng.jpg" /></span></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><span style="color: yellow; font-family: &quot;Courier New&quot;, Courier, monospace;">Click <strong>"Save"</strong> in the top right corner.</span><br /><br /><span style="font-family: Courier New;"><span style="color: yellow;">10. Now that we have defined a build engine and a build we need to set up the <strong>Jazz Build Engine</strong> to perform the build as we chose to use it for builds. Extract the</span> <a href="https://jazz.net/downloads/rational-team-concert/releases/3.0.1/RTC-BuildSystem-Toolkit-Win-3.0.1.zip">Build System Toolkit 3.0.1</a>&nbsp;<span style="color: yellow;">in a memorable</span> <span style="color: yellow;">location. (Mine is directly in the C: drive: C:\jazz).</span></span><br /><br /><span style="color: yellow; font-family: Courier New;">11. Add the directory with the jbe comand line into the PATH environmental variable. (C:\jazz\buildsystem\buildengine\eclipse in my case).</span><br /><br /><span style="color: yellow; font-family: Courier New;">12. Open up a command prompt and start the build engine:</span><br /><span style="color: yellow;"><span style="font-family: &quot;Courier New&quot;, Courier, monospace; font-size: x-small;">jbe -repository </span><span style="font-family: &quot;Courier New&quot;, Courier, monospace; font-size: x-small;">https://&lt;server name&gt;:&lt;server port&gt;/ccm</span><span style="font-family: &quot;Courier New&quot;, Courier, monospace; font-size: x-small;"> -userId&nbsp;&lt;usermame&gt; -pass&nbsp;&lt;password&gt; -engineId "CDT engine" -sleeptime 1</span></span><br /><br /><span style="color: yellow; font-family: Courier New;">Replace the server name, port username and password with those that you use to connect to the CCM application on the Jazz server. If everything went well you should only see:</span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-Ca6kdx55KNc/TkVCcB8zYII/AAAAAAAAACg/Cycr2LCwzqM/s1600/bconsole.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="40" src="http://1.bp.blogspot.com/-Ca6kdx55KNc/TkVCcB8zYII/AAAAAAAAACg/Cycr2LCwzqM/s640/bconsole.jpg" width="640" /></a></div><br /><div align="left"><span style="font-family: &quot;Courier New&quot;, Courier, monospace;"><span style="color: yellow;">14. We are using a Makefile tool for our build so we need a Makefile in our project. We could get RTC to generate the build file for us but as we need to use it&nbsp;for our build engine we should keep it simple. For your convienience I have created one</span> <a href="https://sites.google.com/a/boriskuschel.com/www/code-samples/Makefile">here</a>. </span></div><div align="left"><span style="font-family: &quot;Courier New&quot;, Courier, monospace;"><span style="color: yellow;">Save the Makefile into the root of the&nbsp;<strong>"OSLC Consumer"</strong> project directory in your RTC workspace.&nbsp; In RTC, right click the <strong>"OSLC Consumer"</strong> project in the project explorer and select <strong>"Refresh"</strong></span></span></div><div align="left"><br /></div><div align="left"><span style="color: yellow; font-family: Courier New;">15. In order to test the make file we need to set the project builder to using mingw32-make. To do this we go to the project properties by right clicking on "OSLC Consumer". Go to C/C++ Build-&gt;Tool Chain Editor and select <strong>"Gnu Make Builder"</strong> For both the Release and Debug configuration:</span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-9j0mABRmHAU/TkVa1-_yu_I/AAAAAAAAACw/Ijb8lwWJMCc/s1600/toolchain.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-9j0mABRmHAU/TkVa1-_yu_I/AAAAAAAAACw/Ijb8lwWJMCc/s1600/toolchain.jpg" /></a></div><div align="left"><span style="color: yellow; font-family: &quot;Courier New&quot;, Courier, monospace;">Then select the "C/C++ Build"&nbsp;section and select "All Configurations" in the Configuration pull down. Use an External builder and make sure the Build command is mingw32-make and that the <strong>"Generate Makefiles automatically"</strong> option is off:</span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-SR_k3wkWOZk/TkVc8jWu7SI/AAAAAAAAAC0/UI-wXt4L-l4/s1600/changebuilder.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-SR_k3wkWOZk/TkVc8jWu7SI/AAAAAAAAAC0/UI-wXt4L-l4/s1600/changebuilder.jpg" /></a></div><div align="left" class="separator" style="clear: both; text-align: center;"></div><div align="left" class="separator" style="clear: both; text-align: center;"></div><div align="left"><br /></div><div align="left"><span style="color: yellow; font-family: Courier New;">16. Now we are using the Makefile instead of the internal builder so lets try to build it by right clicking&nbsp;on the project and&nbsp;selecting <strong>"Build Project"</strong>. It should build without errors.</span></div><div align="left"><br /></div><div align="left"><span style="color: yellow; font-family: Courier New;">17. Now lets check in the Makefile in the SCM. Right click on the Makefile and select <strong>Team-&gt;Check In and Deliver</strong>. A dialog will pop up and you can put a comment. Click <strong>"Next"</strong>. </span></div><div align="left"><br /></div><div align="left"><span style="color: yellow; font-family: Courier New;">18. We are now going to create a work item so click the <strong>"Create Work Item"</strong> option. In the next screen you can fill in a task as in the screenshot:</span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-ANlH__Bpd2k/TkVery-yrrI/AAAAAAAAAC4/ZLBD6SZENsg/s1600/newworkitem.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow;"><img border="0" height="400" src="http://3.bp.blogspot.com/-ANlH__Bpd2k/TkVery-yrrI/AAAAAAAAAC4/ZLBD6SZENsg/s400/newworkitem.jpg" width="338" /></span></a></div><div align="left"><br /></div><div align="left"><span style="color: yellow; font-family: Courier New;">Click <strong>"Finish"</strong>. If it asks you if you want to check in changes then click <strong>"Yes"</strong>.</span></div><div align="left"><br /></div><div align="left"><span style="color: yellow; font-family: &quot;Courier New&quot;, Courier, monospace;">17. That should be it! Lets request an automated&nbsp;build. Go back to RTC to the work item perspective and request a build by right clicking on the build and selecting <strong>"Request Build..."</strong>.</span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-697BJpJW4DM/TkVFaAUtFII/AAAAAAAAACk/SkPRCiI2AOc/s1600/RequestBuild.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow;"><img border="0" src="http://1.bp.blogspot.com/-697BJpJW4DM/TkVFaAUtFII/AAAAAAAAACk/SkPRCiI2AOc/s1600/RequestBuild.jpg" /></span></a></div><div align="left"><span style="color: yellow; font-family: &quot;Courier New&quot;, Courier, monospace;">If all goes well you should see a successful build in the builds view (you may need to refresh it a few times):</span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-3NHWXm6jS7E/TkViSn-khII/AAAAAAAAADA/wltS6lf4I0k/s1600/Successbuild.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: yellow;"><img border="0" height="80" src="http://2.bp.blogspot.com/-3NHWXm6jS7E/TkViSn-khII/AAAAAAAAADA/wltS6lf4I0k/s400/Successbuild.jpg" width="400" /></span></a><span style="color: yellow;">&nbsp;</span></div><div class="separator" style="clear: both; text-align: left;"><span style="color: yellow; font-family: &quot;Courier New&quot;, Courier, monospace;">You can double click on the build result and inspect the build result record. You should see:</span></div><div class="separator" style="clear: both; text-align: left;"><span style="color: yellow; font-family: Courier New;">- The code changes in the build</span></div><div class="separator" style="clear: both; text-align: left;"><span style="color: yellow; font-family: Courier New;">- The build logs</span></div><div class="separator" style="clear: both; text-align: left;"><span style="color: yellow; font-family: Courier New;">- The workspace that was built</span></div><div class="separator" style="clear: both; text-align: left;"><span style="color: yellow; font-family: &quot;Courier New&quot;, Courier, monospace;">-&nbsp;1 work item in the build (the one we created earlier.)﻿</span></div><div class="separator" style="clear: both; text-align: left;"><span style="color: yellow; font-family: Courier New;">- A snapshot</span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New;">This is quite a long blog so&nbsp;I will cut it short here.&nbsp; In any case you can go into the build definition and schedule the build to run whenever you want.</span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Courier New;"><strong>Next time I will continue enhancing the feedback from the Makefile build.</strong></span></div><div align="left"></div>Boris Kuschelhttps://plus.google.com/114130671453687648103noreply@blogger.com0tag:blogger.com,1999:blog-5693136284457832303.post-57509517748454349952011-08-07T15:40:00.006-04:002011-09-07T04:54:13.024-04:00OSLC Development using C/C++ and Rational Team Concert (Part 2)<span style="font-family: &quot;Courier New&quot;,Courier,monospace;">This is the second part in what i hope will be a series of posts on C/C++ development in Rational Team Concert (RTC).</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">In <a href="http://blog.boriskuschel.com/2011/07/oslc-development-using-cc-on-jazz-part.html">Part 1</a> I showed how to set up the CDT environment in RTC 3.0.1. If you haven't gone through the steps in Part 1 you should do so before doing this part. You should be able to build simple code now.&nbsp;</span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">In this part you will import an OSLC client written in C++ (see my <a href="http://blog.boriskuschel.com/2011/08/open-services-for-lifecycle.html">post on OSLC</a>). In order to do so we need to introduce some libraries into our environment to be able to make HTTP requests (<a href="http://curl.haxx.se/libcurl/">libcurl</a>) and parse the returning XML (<a href="http://xmlsoft.org/">libxml2</a>).</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><u>You'll need the following:</u></span><br /><br /><div style="color: yellow;"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">(Latest as of publishing)</span></span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">1. libcurl:</span> <a href="http://www.gknw.net/mirror/curl/win32/curl-7.21.7-devel-mingw32.zip">curl-7.21.7-devel-mingw32.zip</a> </span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">2. libxml2:</span> <a href="ftp://ftp.zlatkovic.com/libxml/libxml2-2.7.8.win32.zip">libxml2-2.7.8.win32.zip</a></span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">3. libiconv:</span> <a href="ftp://ftp.zlatkovic.com/libxml/iconv-1.9.2.win32.zip">iconv-1.9.2.win32.zip</a></span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">4. RTC OSLC C++ Project:</span> <a href="http://www.boriskuschel.com/code-samples/OSLCConsumer.zip">OSLC Consumer.zip</a> </span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><u>Configure and Install:</u></span><br /><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></span></div><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">1. First lets download some dependencies into prep our MinGW environment. Open up a command prompt and type the following commands:</span></div><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace; font-size: x-small;">mingw-get install zlib<br />mingw-get install libiconv</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">2. Unzip the</span> </span><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><a href="http://www.gknw.net/mirror/curl/win32/curl-7.21.7-devel-mingw32.zip">curl-7.21.7-devel-mingw32.zip</a>. <span style="color: yellow;">Ensure that the contents of bin,include,lib, etc. are extracted into the corresponding directories in the MinGW home (usually C:\MinGW)</span></span><br /><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></span></div><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">3. Now unzip the </span><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><a href="ftp://ftp.zlatkovic.com/libxml/libxml2-2.7.8.win32.zip">libxml2-2.7.8.win32.zip.</a> Again, </span><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Ensure that the contents of bin,include,lib, etc. are extracted into the corresponding directories in the MinGW home (usually C:\MinGW).&nbsp;</span></div><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">As </span><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">libxml2 is a generic win32 package, we need to prep it from MinGW.</span><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">&nbsp; Open a command prompt and type:</span></div><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">cd C:\mingw\bin (or wherever you MinGW home is)<br />pexports libxml2.dll &gt; libxml2.def<br />dlltool --dllname libxml2.dll --def libxml2.def --output-lib ../lib/libxml2.a</span></span></div><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">4. One more dependency is missing that is needed by libxml2. Open the</span> </span><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><a href="ftp://ftp.zlatkovic.com/libxml/iconv-1.9.2.win32.zip">iconv-1.9.2.win32.zip</a> <span style="color: yellow;">and extract bin\iconv.dll into C:\mingw\bin </span></span><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">(or wherever you MinGW home is)</span><br /><br /><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">5. Now we are going to import the sample project into RTC.</span></div><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">-Launch RTC Client</span></div><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">-File-&gt;Import</span></div><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">-General-&gt;Existing Projects Into Workspace</span></div><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">-Click Next</span></div><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">-Select Archive File: Browse for the </span><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><a href="http://www.boriskuschel.com/code-samples/OSLCConsumer.zip">OSLC Consumer.zip</a> file downloaded earlier</span></div><div style="color: yellow;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">-Click Finish</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">You can to build and run the project at this point by right clicking on the newly imported project and selecting "Build Project". It should build without errors or warnings. Unless you have exactly the same host,port,username and password you will get some kind of connect error if you try to run it using the run button (<img align="middle" border="0" src="http://2.bp.blogspot.com/-IkgvLig4ydg/Tj7kAL3lgdI/AAAAAAAAAB8/hsvGxa3qERg/s1600/RunButton.jpg" />).</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">If you take a look at the source code the first thing you will notice is that this is neither proper C nor C++ code. As this is just a code sample to convey the general idea, it was written up in a very simple linear fashion with no classes or many parameters.</span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">In order for the code to connect to your Jazz Server you will need to change the hostname, port and username/password in the OSLCPAFetch.h file.</span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow; font-size: x-small;">const std::string server = "https://localhost:9443/ccm"; &lt;-your Jazz server<br />const std::string login = "username"; &lt;-your user name<br />const std::string password = "password"; &lt;- your password</span></span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><u>This code demonstrates a few things:</u></span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">1. A set up build environment that has extra libraries (take a look at the project properties for the linking, C/C++ Build-&gt;Settings-&gt;MinGW C++ Linker-&gt;General)</span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">2. How to create OSLC requests (note the header parsing).</span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">3. How to do form based authentication with Jazz</span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">4. How to fetch Project areas using the xml2 XPath functionality.</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">If you need to have more in depth information about how this code functionality works I suggest to take a look at the <a href="https://jazz.net/library/article/635">OSLC workshop</a> as this code sample is loosely based on it. Enjoy!</span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><b>Next up (part 3)... creating an automated build environment for our new code using RTC SCM and automated builds!</b></span><br /><a name='more'></a><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><br /></span>Boris Kuschelhttps://plus.google.com/114130671453687648103noreply@blogger.com1tag:blogger.com,1999:blog-5693136284457832303.post-30374529596327128552011-08-06T12:28:00.003-04:002011-08-06T19:58:42.651-04:00Open Services for Lifecycle Collaboration (OSLC) (a short intro)<span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Before I post the <a href="http://open-services.net/">OSLC</a> code sample,&nbsp;I thought&nbsp;I would provide a little bit of back ground on it.</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">The technology graveyard is full of&nbsp;past, and often short lived, attempts at providing a universal inter-technology communication&nbsp;platform.&nbsp;These&nbsp;brave attempts at inter-systems "peace", attempted to provide a standard inter-system communication regardless of implementation technology, operating system or even network protocol; a kind of&nbsp;IT <a href="http://www.esperanto.ca/kurso/index.htm">Esperanto</a>.&nbsp;</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">One&nbsp;of the more popular attempts&nbsp;that actually had some degree of&nbsp;traction was&nbsp;<a href="http://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture">CORBA</a>. It allowed the creation of interfaces that were implemented by one system and called from another. Sounds good, except that this communication was facilitated by a middlemen called ORBs or "Brokers". These powerful middleman were platform specific translators&nbsp;that needed to be&nbsp;implemented on&nbsp;each technology that wanted to either call or provide interfaces. They were responsible for brokering requests in a <a href="http://www.omg.org/spec/CORBA/">standard</a> way between each other and were often developed by different vendors in different technologies.</span><br /><br /><span style="font-family: Courier New;">CORBA ultimately suffered the flaws of so&nbsp;many of its predecessors (and some successors)&nbsp;in&nbsp;their&nbsp;middlemen had&nbsp;constant interoperability problems. Even successors to CORBA that provided a toolkit or some kind of middle&nbsp;third party technology (traditional Web Services come to mind) to facilitate communication, had the same issues.</span><br /><br /><span style="font-family: Courier New;">The logical conclusion to all of this would be to eliminate the middleman.&nbsp; Like Esperanto, perhaps its better to decide on a common language that two should speak and eliminate the need for a translator who ultimately makes mistakes.&nbsp; Fortunately because of the success of the&nbsp;Internet such a language&nbsp;is&nbsp;readily available, HTML, (or rather a&nbsp;more generic&nbsp;form called XML) as well as a common medium (HTTP).&nbsp; This common paradigm of information exchange has been collectively wrapped up&nbsp;into a set of principles called&nbsp;<a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a>.&nbsp; </span><span style="font-family: Courier New;">The great thing about&nbsp;REST is that it uses an already proven&nbsp;mechanism and eliminates the need for a third party translator. </span><br /><br /><span style="font-family: Courier New;">Now that systems have a common approach (REST) to be able to "talk" to each other, they now&nbsp;need to know and understand what to "say";&nbsp;they have&nbsp;to find a common&nbsp;language.&nbsp; </span><span style="font-family: Courier New;">At its most basic form it is XML, but usually for systems to "talk" to each other they need to establish a common vocabulary, a lexical structure with common terms that are understood by both parties.&nbsp; Both systems may introduce new terms or words but a common agreement on the most basic language is usually&nbsp;required (developers who don't&nbsp;usually read the&nbsp;agreement are able&nbsp;to read the XML and and figure it, thats the great thing about it!).&nbsp; One such&nbsp;effort in the domain of software&nbsp;engineering is <a href="http://open-services.net/">Open Services for Lifecycle Collaboration (OSLC).</a></span><br /><br /><div style="text-align: right;"><a href="http://2.bp.blogspot.com/-SpJbWwaU658/Tj1pGwNChXI/AAAAAAAAABE/u-5ktWGSA30/s1600/OSLC_diagram.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="244" src="http://2.bp.blogspot.com/-SpJbWwaU658/Tj1pGwNChXI/AAAAAAAAABE/u-5ktWGSA30/s320/OSLC_diagram.png" width="320" /></a></div><br /><br /><span style="font-family: Courier New;">OSLC is a workgroup of industry leaders who are&nbsp;defining the&nbsp;vocabulary that should be&nbsp;used between&nbsp;components in an application&nbsp;product&nbsp;lifecycle: requirements management, quality management and&nbsp;change management, for example. It is also the integration technology that is adopted by the Jazz Platform for integration between its components: Requirements Composer, Quality Manager and Team Concert (as well as others!).&nbsp; It allows loose coupling between&nbsp;components and it is possible to plug and play one component for another provided by another vendor.&nbsp;By creating an OSLC consumer or provider it wholly possible to&nbsp;integrate that&nbsp;organic&nbsp;requirements solution you developed in-house in the 90's into the Quality Manager and Team Concert. </span><br /><br /><span style="font-family: Courier New;">We can take the 90's era organic legacy solution developed in C++&nbsp;as a case in point. Perhaps t</span><span style="font-family: Courier New;">he boss&nbsp;extols the&nbsp;virtues of the&nbsp;the in-house legacy requirements management solution with&nbsp;a passionate proclamation: "Legacy means it works!" . Now he wants your team to integrate it&nbsp;with Team Concert.</span><br /><br /><span style="font-family: Courier New;">With that in mind, in&nbsp;the next blog I will demonstrate a C++ OSLC client in Rational Team concert.</span><br /><br /><u><span style="font-family: Courier New;">Here are some excellent resources on OSLC:</span></u><br /><br /><span style="font-family: Courier New;"><span style="color: yellow;">OSLC Home Page:</span> <a href="http://open-services.net/">http://open-services.net/</a></span><br /><span style="font-family: Courier New;"><span style="color: yellow;">Steve Speicher's OSLC Blog:</span> <a href="http://stevespeicher.blogspot.com/">http://stevespeicher.blogspot.com/</a></span><br /><span style="font-family: Courier New;"><span style="color: yellow;">Open Services Wiki:</span> <a href="http://open-services.net/bin/view/Main/WebHome">http://open-services.net/bin/view/Main/WebHome</a></span><br /><span style="font-family: Courier New;"><span style="color: yellow;">OSLC Workshop (Java OSLC client):</span> <a href="https://jazz.net/library/article/635">https://jazz.net/library/article/635</a></span><br /><span style="font-family: Courier New;"><span style="color: yellow;">Eclipse Lyo Project:</span> <a href="http://www.eclipse.org/proposals/technology.lyo/">http://www.eclipse.org/proposals/technology.lyo/</a></span>Boris Kuschelhttps://plus.google.com/114130671453687648103noreply@blogger.com2tag:blogger.com,1999:blog-5693136284457832303.post-43310609461553912552011-07-31T22:46:00.013-04:002011-08-26T07:29:23.959-04:00OSLC Development using C/C++ and Rational Team Concert (Part 1)<span style="font-family: &quot;Courier New&quot;,Courier,monospace;">It somehow doesn't surprise me that my first blog posting is about c/c++ development. No matter how many languages I have tried in my career of software development, I can never quite match the sense of nostalgia I get when I start a C/C++ project.</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">I still remember those many late nights debugging memory corruptions and tracing through cryptic and horrendous code (often my own) trying to understand the spaghetti of pointers, templates and operator overloads. I have yet to find a language as ugly as C++, yet having the ability/affliction of being able to be&nbsp;productive in writing quality C/C++ code comes with a sense of pride and accomplishment that in my experience has never been rivaled by any other programming language. Of course, effective tooling has a lot to do with that. </span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">We have come a long way in terms of the quality of tooling that is now available for C/C++, not only the features that help with coding debugging and testing but also for collaboration with other developers on the team. The ability to share and cross reference information, whether its code, files, plans, change sets, work items, defects is essential for productivity and quality and is as important to C/C++ developers as much, and perhaps even more, as other developers using different technologies.</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">In many of the complex IT solutions that are being built today, C/C++ developers also need to collaborate with other developers and team members (no matter what technology and role) in order to plan and coordinate the complexity of a multi-component system so as to agree on interfaces and such.</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">To make a long story short, C/C++ developers need to be able to participate in this ecosystem and the best platform to do this is Jazz so my blog today is about how to start with Rational Team Concert (RTC and the C/C++ Development Tooling.</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">I will show how to integrate the MinGW GCC toolchain into Rational Team Concert on Windows. In a follow up blog posting I will show how to create an OSLC CM consumer in C/C++ that lists project areas using libcurl and libxml2.</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><u>To do this, you'll need the following:</u></span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">1. Rational Team Concert 3.0.</span><span style="color: yellow;">1 (</span><a href="https://jazz.net/downloads/rational-team-concert/releases/3.0.1">https://jazz.net/downloads/rational-team-concert/releases/3.0.1</a><span style="color: yellow;">)</span></span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">2. The latest MinGW-get</span> <span style="color: yellow;">(</span><a href="http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get/">http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get/</a><span style="color: yellow;">)</span></span><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; font-size: x-small;">NOTE: I am using MinGW over cygwin because I prefer not to have runtime dependencies on my executables. Nevertheless, RTC DOES work with the Cygwin toolchain.</span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; font-size: small;">3. You will need to download CDR but this is done in the instructions below as you will need to install RTC first</span><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; font-size: x-small;"> </span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><u>What to configure and Install:</u></span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">1. Install, at a minimum, RTC and the Jazz Team Server (I will use it in subsequent posts).</span><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; font-size: x-small;">NOTE: There is extensive information on jazz.net and in the CLM 3.0.1 information center on how to do this so I won't cover it here.</span><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">2. Unzip the mingw-get package into C:\MinGW (of D:,E:, whatever).</span><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; font-size: x-small;">NOTE: You can put it anywhere you want but the important thing is NOT TO USE SPACES IN THE PATH</span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">3. Set the MINGW_HOME environmental variable on Windows to this directory. Put MINGW_HOME\bin in the system PATH.</span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">4. Launch a command prompt in Windows. Type the following commands:</span><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; font-size: x-small;">mingw-get install gcc (should download many things)</span><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; font-size: x-small;">mingw-get install g++</span><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; font-size: x-small;">mingw-get install mingw32-make</span><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; font-size: x-small;">mingw-get install gdb</span><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; font-size: x-small;">mingw-get install pexports</span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">5. Test the environment by running gcc. It should come back with gcc: no input files.</span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">6. Launch the RTC Client, connect to your Jazz server if you have not done so already</span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">7. Go to the Help-&gt;Install New Software menu</span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">8. Install a new update site by clicking the Add button</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="color: yellow;">9. Put the Galileo update site in the name and location:</span> <a href="http://download.eclipse.org/releases/galileo">http://download.eclipse.org/releases/galileo</a></span><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace; font-size: x-small;">NOTE: You can also install RTC on Eclipse 3.6.x (Helios). If you have this configuration, use the Helios update site.</span><br /><div style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">NOTE: If you are on Windows 7 or Vista, you have not turned off user access control (UAC) and you installed RTC into "Program Files", </span><span style="font-size: x-small;">you must install as administrator by right clicking on the RTC executable and selecting "Run as administrator"</span></div><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">10. Search for and install the Eclipse C/C++ Development Tools</span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">11. Restart RTC</span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">12. Go to Window-&gt;Preferences-&gt;C/C++-&gt;New CDR Project Wizard and make sure you can see the MinGW toolchain and ensure that it is the preferred for all wizards.</span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">13. Go to Window-&gt;Preferences-&gt;C/C++-&gt;New CDR Project Wizard-&gt;Makefile Project and set PE Windows parser in the Binary Parser tab. Go to the Builder Settings Tab and put: C:\MinGW\bin\mingw32-make.exe or wherever else your MINGW_HOME is.</span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">14. Switch to the C/++ perspective and create a test project. File-&gt;New-&gt;C Test Project. Select the Hello World ANSI C Project. Click through to Finish.</span><br /><br /><span style="color: yellow; font-family: &quot;Courier New&quot;,Courier,monospace;">15. Now you should be able Build from the Project menu and Run and Debug from the Run Menu</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Pretty Simple!! Note that in the scenario above we allow RTC to manage our build environment. For some people (like myself) prefer to manage the Makefile and this is also possible in RTC and I will perhaps cover it in a future blog along with automated Makefile builds with Jazz.</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><b>Next up.... OSLC CM Client in C/C++...!</b></span>Boris Kuschelhttps://plus.google.com/114130671453687648103noreply@blogger.com12