It's all about the answers!

Ask a question

Is there a method summary (and explanation) for IBM Plugins?


Jonas Studer (207817) | asked Jun 16 '14, 9:22 a.m.
edited Jun 16 '14, 9:51 a.m.
 Hy there Felllas,

I'm searching hard some for some informations about IBM Plugins.
I've found the (Java Plain) API, but this wasn't what I searched for.
Let me explain this:
If I search in the API about "ProcessClient", there's only one method shown. "getOperationAdviceManager()"
But if I console.log the "ProcessClient", there are a lot more methods.
The other problem there is: how could I ever assume what "args" for a parameter should be?

Is there a way to get more specific informations about the whole thing?
(Dojo made it very good! I need something like that: http://dojotoolkit.org/api/)

Greetings and thanks in advance

Studer Jonas

Comments
sam detweiler commented Jun 16 '14, 9:25 a.m.

the server side api is not yet documented, except for the general advisor/plugin that are documented in the developer workshops.

Accepted answer


permanent link
Jonas Studer (207817) | answered Jun 30 '14, 10:43 a.m.
edited Jun 30 '14, 10:44 a.m.
Hy there fellas,

I found out, how I have to use it.
If someone need an explanation HOW I found out, how I have to do it, please feel free to ask.
But it's a bit a lumberjack technique... ;)

Greetings
Ralph Schoon selected this answer as the correct answer

Comments
Ralph Schoon commented Jun 30 '14, 11:29 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER

Would be nice if you could share if you have time (If you did not already). Finding around in the APIs is very tough for everyone. So that sounds familiar 8D


Jonas Studer commented Jul 01 '14, 4:59 a.m.

Ok, I try to explain that (English isn't my native language so don't judge my use of english :P )

1: I've installed a local RTC Server and an Eclipse with RTC

2: Now it's all about backtracking and reverse-engineering.
The best way to find what you've searching for is watching the main system.
Let me explain that:
If I wanna get some Iterations for my Widget, I best search in "Manage this ProjectArea --> Timelines" because there the server triggers his commands (Now you have to catch them.)

3: I've installed FireBug on my Mozilla (Chrome has something similar) to have a better view of the console etc.

4: Now I have to go to the "NET"-Register in Firebug to watch, whats comming in, and whats going out.
E.g. "GET projectAreaByUUIDWithLimitedMembers"
If I watch the full Link, I see its a child of process (com.ibm.team.process) so I might try the "ProcessClient" class.


Jonas Studer commented Jul 01 '14, 5:04 a.m.

5: How to proof I need the "ProcessClient" class.
Console.log it to see ALL of it's methods. But Parameters only called args.
(That's the next problem)
Go Back to the NET-Tab an watch there:Params

maxMembers 20
processAreaItemId _To2SsOv2EeO4_Z0j7f0p2A


Jonas Studer commented Jul 01 '14, 5:04 a.m.


Tadaaaa, now i can build my request.
args = {
  maxMembers: number
  processAreaItemId: UUID of PA
}
ProcessClient.projectAreaByUUIDWithLimitedMembers(args, ServiceResponseHandler)

Antoher good trick is the "Debug=true" function.
This allows you to see ALL the loaded scripts in clear-text!
And you also can set BreakPoints and step throught server-intern methods.


Ralph Schoon commented Jul 01 '14, 5:05 a.m. | edited Jul 01 '14, 5:12 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER

Thanks for the explanation.

In https://rsjazz.wordpress.com/2013/03/20/understanding-and-using-the-rtc-java-client-api/ and other blog posts, I explain how to find the API with Java and the SDK installed. This allows finding the Java code and the interfaces the service/client library classes provide. The benefit is, that you can find the client libraries for example, because they are all retrieved using the

getClientLibrary()
call, which you can easily search for.

With respect to Firefox/Chrome, I have been told, Chrome works better for developing.


Jonas Studer commented Jul 01 '14, 5:06 a.m. | edited Jul 01 '14, 5:07 a.m.

P.S.
https://localhost:7443/jazz/admin?debug=true#action=com.ibm
There you have to add the "Debug=true" that it works. (You HAVE to add the ? in front)

Hopefully I helped a bit. Feel free to ask questions


Jonas Studer commented Jul 01 '14, 5:11 a.m.

@Raplh,
Don't forget I use JAVASCRIPT and DOJO.
So the JAVA API is useless for me.

But there should be a full JavaDoc API on the net.
https://jazz.net/downloads/rational-team-concert/releases/4.0.5?p=allDownloads
Here search for: "Plain Java Client Libraries API documentation" or
"Plain Java Client Libraries"


Ralph Schoon commented Jul 01 '14, 5:19 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER

Yes, however there is a ProcessClient client library with, I expect, similar API. I would expect the service names to be the same or very similar in most of the cases. The JavaScrit API is probably a facade.

So if you look at the JavaAPI you can probably find the JavaScript API as well. This would allow you to focus searching a bit.


Jonas Studer commented Jul 01 '14, 5:30 a.m.

 uuff, I've made the same mistake and thought it would be mostly the same...
Nope its not!

If I gonna watch the ProcessClient Class there's just one Method:

getOperationAdviceManager

But if I console.log(com.ibm.team.process.web.client.internal.ProcessClient)
There are about 40-50 Methods!

showing 5 of 9 show 4 more comments

2 other answers



permanent link
Ralph Schoon (58.2k23642) | answered Jun 16 '14, 9:39 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
Jonas,

as Sam points out there is no documentation, unfortunately. If you start here: https://rsjazz.wordpress.com/2013/02/28/setting-up-rational-team-concert-for-api-development/ you can setup the SDK as well as the plain Java Client Libraries in a way that allows you to search the full source code. You can search for references in Eclipse too and that usually allows you to answer questions like what to pass as arguments well. You will find that especially in tests that are shipped with the SDK.

Comments
1
sam detweiler commented Jun 16 '14, 9:58 a.m.

this approach works, but it takes a LOT of energy and skill to navigate the large amount of code and missing design information to find something that helps you.


Lukas Steiger commented Jun 18 '14, 1:53 a.m.

I totally agree with Sam. The most challenging about this approach is that the source code documentation within the SDK is very poor. I personally have learned the most from looking at the unit/integration tests included and from Ralph's blog.

If IBM wants to push their platform, they have to put a lot of work in documentation improvements.


1
Ralph Schoon commented Jun 18 '14, 3:13 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER

There is a lot of pressure on new features. We are looking into public API's that should be available (also new API) and officially supported, but it takes time.

The only officially supported API right now is where we have JavaDoc for in the Plain Java Client Libraries.

With respect to the SDK, I am torn. On the one hand operational behavior is sometimes the only viable solution. On the other hand we have seen in the past users customizing our tools to an extend where they rendered useless. So, the SDK API so far is considered 'use at own risk'.

However, we are aware that it is sometimes essential. That is why some of us blog about the API to compensate for the lack of documentation.


permanent link
Jonas Studer (207817) | answered Jun 16 '14, 9:42 a.m.
 @Sam Detweiler,
Thanks for the information.
But in this case I'm getting in trouble. Let me explain this...
If I compare this two methods:
-ProcessClient.getProjectAreaByUUID(args, responseHandler)
-ProcessClient.getProjectAreaByUUIDWithLimitedMembers(args, responseHandler)

I do know "getProjectAreaByUUIDWithLimitedMembers" work with this args:
var args = {
processAreaItemId: this.getScopeItem().itemId,
maxMembers: 100,
};

But this (getProjectAreaByUUID) won't work (400 Bad Request):
var args = {
processAreaItemId: this.getScopeItem().itemId,
};

This makes no sense in my opinion...

Comments
Ralph Schoon commented Jun 16 '14, 9:52 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER

What do you want to achieve?


Jonas Studer commented Jun 16 '14, 10:14 a.m.

 Relatively simple...
I have to gather all "Timelines" (Especially the Main Development) from a specific Project Area.



Ralph Schoon commented Jun 18 '14, 2:57 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER

This should be:

        IDevelopmentLineHandle[] developmentLineHandles = projectArea
                .getDevelopmentLines();

It should be on my blog in the DevelopmentLineHelper, I think.


Ralph Schoon commented Jun 18 '14, 3:15 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER

This can't be what you are looking for. I think you look for the project Area. You could iterate all project areas to find the one you need. E.g. like in http://rsjazz.wordpress.com/2012/12/09/analyzing-a-aroject-areas-members-and-roles-using-the-plain-java-client-libraries/


sam detweiler commented Jun 18 '14, 7:16 a.m.

notice he is using JavaScript.


Ralph Schoon commented Jun 18 '14, 7:26 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER

Thanks Sam, I was wondering. My answers are for the Java API in the server. I can't help with JavaScript.


Jonas Studer commented Jun 26 '14, 4:08 a.m.

@Raplh,
No Problem, but thank you for trying to help me!
@Sam
Tank you too.

showing 5 of 7 show 2 more comments

Your answer


Register or to post your answer.