Today, Christophe, an ARCAD Software colleague of mine mentioned he had some issues when he was trying to browse our RTC from his iPhone. He also mentioned that he tested once an app on his iPad and could never make it work.
I knew it is not easy to make work RTC on an iPhone but I was not aware that a dedicated client was available on such mobile. So I decided to test it by myself. Actually, Christophe was not providing the correct URL. Once I told him to provide the same URL as the one that we use in the reach client (http://my.jazz.server:9443/ccm) immediately he could reach our server and browse our work items…
The name of this application is ClearConcert. You can download it:
- Here for iPad (and iPhone) I didn’t try the iPhone version. My daughter will not let me install it on my old iPhone 4 that I gave her few months ago ;-)
- Here for Android
Enjoy and share your feedback in comments…
I hope you enjoy my first post on the subject: CRUD RTC work items using cURL (Part 1: Read)
At this point we should have all the inputs to create a new work item using the OSLC APIs. It is time to retrieve the OSLC factory service used to create a work item. Actually, by calling the REST API answering the list of services provides by a project area:
rem Authentication ... rem Request the url using the authentication curl.exe -k -b %COOKIES% https://jazz.server.com:9443/ccm/oslc/contexts/_TN0swJPUEeOnRa9khWwR1A/workitems/services.xml
you can retrieve the Work Item creation service. Actually, you will retrieve for each of your Work Item type a corresponding “factory” service.
So, if you want to create a task, retrieve the factory title “Location for creation of Task change requests”, the associate oslc_cm:url element provides the REST API to create a Task.
<oslc_cm:factory calm:id="requirementChangeRequest"> <dc:title>Location for creation of Task change requests </dc:title> <oslc_cm:url>https://jazz.server.com:9443/ccm/oslc/contexts/_TN0swJPUEeOnRa9khWwR1A/workitems/task</oslc_cm:url> </oslc_cm:factory>
Now to create a work item you can run the following code:
rem Authentication ... curl.exe -k -b %COOKIES% -H "Content-Type: application/x-oslc-cm-change-request+xml" -H "Accept: text/xml" -X POST -d @newtask.xml https://jazz.server.com:9443/ccm/oslc/contexts/_TN0swJPUEeOnRa9khWwR1A/workitems/task
The cURL instruction references several important parameters:
- The “-H” parameters specify the format of the body request (“Content-Type: application/x-oslc-cm-change-request+xml”) as well as the answer format (“Accept: text/xml”).
- The “-X” parameter specifies the HTTP method to use: a POST method to create a new work item.
- The “-d” parameter designates the content of the request body. You can either provide a string with the XML code of your new work item or you can use the character @ and reference a file containing the XML code of your new work item.
In our case we decided to use a separate file named “newtask.xml” containing the following XML code:
<oslc_cm:ChangeRequest xmlns:oslc_cm="http://open-services.net/xmlns/cm/1.0/" xmlns:dc="http://purl.org/dc/terms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:calm="http://jazz.net/xmlns/prod/jazz/calm/1.0/" xmlns:rtc_cm="http://jazz.net/xmlns/prod/jazz/rtc/cm/1.0/" xmlns:oslc_pl="http://open-services.net/ns/pl#"> <rtc_cm:filedAgainst rdf:resource="https://jazz.server.com:9443/ccm/resource/itemOid/com.ibm.team.workitem.Category/_UFKkcJPUEeOnRa9khWwR1A"/> <oslc_cm:priority <span="" class="hiddenSpellError" pre="priority " data-mce-bogus="1">rdf:resource="https://jazz.server.com:9443/ccm/oslc/enumerations/_TN0swJPUEeOnRa9khWwR1A/priority/priority.literal.l01"/> <oslc_cm:severity <span="" class="hiddenSpellError" pre="severity " data-mce-bogus="1">rdf:resource="https://jazz.server.com:9443/ccm/oslc/enumerations/_TN0swJPUEeOnRa9khWwR1A/severity/severity.literal.l3"/> <dc:title>New PK Task</dc:title> <rtc_cm:plannedFor rdf:resource="https://jazz.server.com:9443/ccm/oslc/iterations/_TPm1c5PUEeOpAbBwyZpuzw"/> </oslc_cm:ChangeRequest></pre> <pre>
As you can see this file doesn’t mention the work-item ID, it will be provided by the JTS during the creation of the work item and it will be returned in the request answer.
The answer has the same format as the one returned when we access to a work item.
The second post was easy to write once the first one is posted.
The third one will be more complex because it will talk about ETag which is concept I’m discovering.
In mid time, I hope this one will help you…
Often I wanted to learn how to use cURL to be able to interact with the OSLC API without using Java and often I run out of time to do it. This time I could not avoid it because a colleague of mine was expecting an answer from me. So I decided to go thru all the learning process and figure it out.
First of all, you need to have a good understanding of what OSLC is all about, it will help you figure out the technology and the API we are using to interact with our Jazz Team Server (JTS). For that check out some references mentioned at the end of this article.
These days you can find more and more inputs about OSLC, RESTFul and cURL than I could find in some early days, when I started playing with OSLC. So don’t hesitate to “google” if you have any concern regarding one of the mentioned points.
This article should be split in four CRUD parts :
- Part 1: How to Read a Work Item using cURL.
- Part 2: How to Create a Work Item using cURL
- Part 3: How to Update a Work Item using cURL
- Part 4: How to Delete a Work Item using cURL
And you are reading the first one. Continue Reading »
After almost 18 years at IBM, I decided to move on and follow a new adventure.
During my”IBM life”, I had the chance to work on great projects with amazing people. Can you believe :
- I started in Nantes, France, working for 3 years on VisualAge for Smalltalk as consultant and level 3 support in Europe.
- Then I joined Raleigh team in North Carolina and worked three 3 years on VisualAge MicroEdition, the Eclipse IDE ancestor.
- Back in France, I worked 5 years as Eclipse/eRCP committer providing support on the IBM Embedded Java, alias J9.
- In 2006, during the EclipseCon event in San Franscisco, CA, I retrieved some good OTI/IBM friends of mine, Erich Gamma, Jean-Michel Lemieux and John Wiegand, who were demonstrating a new amazing development platform name Jazz, then renamed Rational Team Concert. Three month later, my friend Paul Vanderlei setup in a team named the “Jazz Jumspart team” and invited me to join 2 talented guys : Jim D’Anjou, from the West Coast, Steve Wasleski from the East Coast, as the representative of this team in Europe…
- After 6 year in this team, I was so enthusiastic about Rational Team Concert, that another good friend of mine, Philippe Bauquel, offered me the position of Development Manager to push Agile and RTC best practices inside an amazing team, the Rational Programming Patterns team. I worked in this team for more than 2 years.
Today, I decided to look for other great projects, but this time, outside of IBM. I’m joining an IBM Partner, ARCAD Software, which offered me a great position as their VP of Professional Services.
This organization is building development tools for IBMi / RPG developers. They decided to complete their tool suite with RTC (ARCAD pack for Rational) and they would like to leverage their skills in RTC when it is running on IBMi platform. This is another great challenge for me: new platform, new team, new customers but same passion: IDEs (: Integrated Development Environment).
Actually, while I was doing my master degree I already wanted to build an IDE on LOGO for kids. Since then, I worked on some major IDEs: Smalltalk, Eclipse and RTC. So, APR (Arcad Pack for Rational) is just another great IDE what I will be able to add to my career path…
So wish me good luck! ;-)
I got recently this interesting question from a friend and colleague to assist one of our customers.
To be able to handle two instances of Jazz server, we need to change the port number of one of them. Based on this first knowledge, I found this page on the CLM Doc online.
Unfortunately, it is not enough. Actually, I get this weird error when I try launching both servers.
Failed to initialize end point associated with ProtocolHandler ["http-bio-9443"]
Finally, I looked for a page explaining how to launch two Tomcats on the same machine and I found this useful page.
To summarize the result of my investigations, for the second server instance, I had to patch the following lines in the server.xml file located at /server/tomcat/conf.
Replace the Shutdown element
<Server port="9005" shutdown="SHUTDOWN">
<Server port="new_shutdown_port_number" shutdown="SHUTDOWN">
- with new_shutdown_port_number = 13005, for example
Replace the Endpoint element
<Connector port="9080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="9443" />
<Connector port="new_non_SSL_port" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="new_SSL_port" />
- with new_non_SSL_port = 13080, for example
- with new_SSL_port = 13043, for example
Replace the SSL element
<Connector port="9443" connectionTimeout="20000" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" enableLookups="false" disableUploadTimeout="true" acceptCount="100" ...>
<Connector port="new_SSL_port" connectionTimeout="20000" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" enableLookups="false" disableUploadTimeout="true" acceptCount="100" ... >
- with new_SSL_port = 13043, for example
Replace the AJP element
<Connector port="9009" protocol="AJP/1.3" redirectPort="9443" enableLookups="false" />
<Connector port="new_AJP_port" protocol="AJP/1.3" redirectPort="new_SSL_port" enableLookups="false" />
- with new_AJP_port = 13009, for example
- with new_SSL_port = 13043, for example
Save the file and you are done ! You can now launch your two Jazz/Tomcat servers on the same machine.
I hope it will help.