server side Advisor plugin, with client side Ui.. how does that happen
3 answers
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
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
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; extendProcessAspectEditor2
orOperationDetailsAspectEditor
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
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.
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.
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.
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!
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!)..
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)?