Where are classes needed for extensions?

Is there some documentation that can guide me as to which jar files contain the API classes, and where those jar files are?

I’m attempting to implement an effect for a relationship. I’ve added rxclient.jar to my Java project, and it has the package com.percussion.relationship. That package only has the classes
No sign of the various com.percussion.relationship classes referred to in the “Example Effect” sample code in the implementation guide:[ul]
To further confuse the hapless developer, the Javadoc that I have for the API lists only these classses in the com.percussion.relationship package:
and these interfaces:
Can someone help clarify what the story is here? I got these jars out of <RhythmyxClientRoot>/lib directory - am I using the correct versions of the jars and the documentation?



We use Apache Ivy for dependency management. When building Rhythmyx add-ins, here is the Ivy file we use. It lists the Rhythmyx JARs (the “artifacts”) and the external Jars you need (the dependencies).

If you add these to your classpath, you should be okay. You do NOT need to run Ivy. For a long time, we used Eclipse “User Libraries” for this, but with a large number of developers and multiple overlapping projects, Ivy made the management easier.

Let me know if this helps.


<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="/ivyrepo/ivy-doc.xsl"?>
<ivy-module version="1.0">
        status="release"  publication="20080216115024"/>
       <artifact name="rhythmyx" />
       <artifact name="rxclient" />
       <artifact name="rxextensions" />
       <artifact name="rxff" />
       <artifact name="rxinstall" />

       <artifact name="rxpublisher" />
       <artifact name="rxmisctools" /> 
       <artifact name="rxserver" /> 
       <artifact name="rxservices" />
       <artifact name="rxtablefactory" />
       <artifact name="rxutils" />
       <artifact name="rxworkflow" />
       <artifact name="rxwebservices" /> 
       <artifact name="percbeans" />
       <artifact name="saxon" />

       <artifact name="Tidy" />
       <dependency org="hibernate" name="hibernate" rev="3.0" /> 
       <dependency org="sun" name="persistence-api" rev="1.0" /> 
       <dependency org="sun" name="javax-servlet" rev="2.4" /> 
       <dependency org="day" name="jsr170" rev="1.0" /> 
       <dependency org="apache" name="commons-logging" rev="1.1" /> 
       <dependency org="apache" name="commons-lang" rev="2.1" />
       <dependency org="springframework" name="spring" rev="2.0" /> 
       <dependency org="apache" name="commons-beanutils" rev="1.7.0" /> 
       <dependency org="apache" name="commons-betwixt" rev="0.7" /> 


Here’s a more generic answer to your question.
As noted in Dave’s reply, rxserver.jar is also required for effects (this is where PSEffectResult resides.)
Regarding the sample - it was not properly cleaned up for public consumption. PSEffect and PSAttemptResult are not public classes and should be ignored. You should implement your effect by implementing the IPSEffect interface and use classes found in the public API. The public API defines what is available for customer use. If it is not in the API, it should not be used, even if you can find it in some jar.

Thanks, Paul and Dave for these replies.

I still need a clear answer to these questions:

-Where do I find the definitive list of what is in the API? Is it in the API Javadoc? Somewhere else? I know that a previous discussion of the Javadoc included a mention of the fact that the Javadoc was out of date.

  • Which jar files contain the API?



The Public Javadoc (which can be found in the /Rhythmyx/Docs/Rhythmyx/Javadocs folder on the server) defines the Public API.

On occasion, there are things that you may need to do that cannot be done entirely with the Public API, but we’re trying to make this complete, so you should try to use only the Public API and let us know when you cannot do something that you need to do.

The JARS are the ones listed in the “artifacts” in my previous post. Some of them may not be needed (depending on what your API program does) but the safest approach is to include all of them in your classpath.


Thanks, Dave.