It's all about the answers!

Ask a question

server side Advisor plugin, with client side Ui.. how does that happen


sam detweiler (12.5k6195201) | asked Jun 21 '12, 5:56 p.m.
I have a plugin that runs on the server.. no problem..
I want to pass it some configuration data, like the dynamic attributes, or required attributes,,

how do you create that UI part? where does it get installed?

anyone have any samples?

Thx


3 answers



permanent link
sam detweiler (12.5k6195201) | answered Jun 22 '12, 9:24 a.m.
Thanks, but, I think I'm sorry I asked.  Those links yield such a barrage of unclear technical text.

and gosh I HATE creating UI in code..  and it looks like I have to do the whole user search, select, add/manage the list.. ugh..

We call them Advisors and Participants now, I never think pre/post so the text is.. tough..  In one case, it shows three classes to extend, but then says don't use one.. why bother showing it then.. 

"Implement the aspect editor class
 The aspect editor class must extend one of the following classes:
  • com.ibm.team.process.ide.ui.ProcessAspectEditor: although this is the return type for the factory's create method, it is actually deprecated and should no longer be used directly; extend ProcessAspectEditor2 or OperationDetailsAspectEditor instead

I have a working Advisor, and its hard to tell what in those links is delta to what I have vs required for an AspectEditor.

Also not discussed is how the plugin gets access to this data.  I don't see it in any of the properties passed to the Advisor or Participant. I guess I will have to go read the source of the supplied code.. hope it uses the data, altho I didn't see it on first glimpse.  The editor appears to use the IMemento, and the plugin uses the IConfigurationElement.

also, the text says "Both the advisor implementing this precondition and its aspect editor are defined in the com.ibm.team.process.definitions.ide.ui plug-in. "

in that plugin(on 4.0), all I see is the AspectEditor.. not the actual Advisor that would USE the properties managed by the AspectEditor.

there are two classes in the plugin

com.ibm.team.process.internal.definitions.ide.ui
and
com.ibm.team.process.internal.definitions.ide.ui.deliver.editors

but I don't see a single class method with the parameters like my Advisor gets

public void run(AdvisableOperation operation, IProcessConfigurationElement advisorConfiguration, IAdvisorInfoCollector collector, IProgressMonitor monitor)    throws TeamRepositoryException

so, I don't see how to package this UI component with the actual Advisor component which is installed at the server.
(here's hoping you don't have to installed it in both eclipse client and server).


Comments
Ralph Schoon commented Jun 22 '12, 9:34 a.m. | edited Jul 18 '12, 4:34 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER

Hi Sam,

I feel with you, with respect to code UI code.

I am sorry the workshop seems to be too complicated for you. Workshops either only touch complex issues and are (too) simple or they try to show more details and then they are perceived as too complex. Sigh.

The workshop talks about deploying. It makes clear you have to deploy the code where it belongs. The aspect editor is Eclipse client code...... so you have to deploy in the Eclipse client.

The configuration information gathered is stored in the Process configuration XML, based on the schema, as far as I remember. You can see in one of the labs, that you can get away without the Aspect Editor, if you are willing to edit the XML by hand.

The workshop also shows how the participant get the configuration passed in
IProcessConfigurationElement advisorConfiguration.

Hope that helps a bit.


Ralph Schoon commented Jun 22 '12, 9:38 a.m. | edited Jul 18 '12, 4:34 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER

Oh, I forgot, the Aspect editor uses the client API to retrieve the UI elements. Notifications are used to make parts of the UI aware of changes in other parts, as far as i remember.

The participant in the server parses the configuration for data in a two step process, to speed up things.


sam detweiler commented Jun 22 '12, 9:56 a.m. | edited Jul 18 '12, 4:35 p.m.

thanks.. depressing..

how do you deploy the client side to 5,000 clients? or just the clients for the users who have admin rights?

I had hoped to meet u at Innovate, but got pulled into other meetings.


Ralph Schoon commented Jun 22 '12, 10:07 a.m. | edited Jul 18 '12, 4:35 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER

The deployment.... Well.... That's why I mentioned in my Innovate talk 'The Rational Team Concert SDK: How to
Build Cool Extensions for Rational Team Concert': try to avoid client extensions.

But there is actually a nice way that might work for you if you don't need the IM install. I would try to use the zip install of the RTC client, add the extension and other extensions you might need. Then I would zip it up and provide it as zip install or as folder to copy from a shared folder.

Sorry that we missed each other at Innovate. Maybe next time!


sam detweiler commented Jun 22 '12, 11:19 a.m. | edited Jul 18 '12, 4:36 p.m.

Nice presentation.. wished I'd had it year before last!.. 

sometimes u can't avoid client side code, no matter how hard u try..
(on a prior thing I updated code to read parameters stored at the server so that I didn't have to config clients,
but I had to install new code on the client to enable reading the parameters.. doah!)

so, my initial use case here is the hard one..
when workitem of type X, with data Y,  is created.. I want these people to be ACTIVELY Notified..
(email, text message, pager, voice call..) something  NOT a refresh of a list they have to be near a system to do.
(this is NOT all users in the project, and some of the users might NOT be in the project member list, altho I MIGHT be able to get away with using this list for this use case)

So, you can't store the list IN the workitem.. or template.. or directly in the process config..
and I don't give out admin authority to project teams, so they can't admin the extensions anyhow.

So, I 'think' I have to put this somewhere else.. and access it remotely from the server extension.. ugh..

on subsequent workflow state changes, I need to actively notify again... I could at least use a field to hold the list to notify, and script it.. but I don't have access to the email service from the script..

Where do you get design help for these functional enhancements.. We can't wait for product team to do it all (even if they COULD do it all!)..


Ralph Schoon commented Jun 22 '12, 11:48 a.m. | edited Jul 18 '12, 4:36 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER

Hi Sam,

we have a team that does create extensions for a fee for customers and supports them. One they created is a Email notification enhancement. It is pending publishing. We have only limited resources and this kind of extending can get very time consuming. Jumpstart (me) tries to help as far as we can with customers and with IBM projects. Guess where the experience and the presentation comes from. I have to dig into the API myself too.

I would for your notifier

- not use a precondition
- Enhance notification based on events
- store the configuration in an XML file on the server
- avoid creating a configuration UI

I would rather take this offline, Can you e-mail me (ralph.schoon@de.ibm.com)?

showing 5 of 6 show 1 more comments

permanent link
Ralph Schoon (63.1k33646) | answered Jun 22 '12, 7:42 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
This shows how this works: https://jazz.net/library/article/784
Search for Aspect Editor.

permanent link
Don Weinand (7851) | answered Jun 21 '12, 6:31 p.m.
JAZZ DEVELOPER

There are a couple wiki topics that will should help you with this:
https://jazz.net/wiki/bin/view/Main/PreconditionFollowupCreation

https://jazz.net/wiki/bin/view/Main/ProcessAspectEditorCreation

 

Don

Jazz Process Team

Your answer


Register or to post your answer.


Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.