[kepler-dev] Regarding writing java code for a composite actor

Christopher Brooks cxh at eecs.berkeley.edu
Mon Nov 30 08:49:58 PST 2009


Hi Harini,
We are working on an automated way to generate Java code from composite actors,
we call this composite codegen.  However, this work is still in progress.

In the near term, you could look at some of the Ptolemy demo classes that extend
TypedCompositeActor.  Most of these classes were hand written quite awhile ago,
but they show how to write a top level typed Composite.

./ptolemy/domains/continuous/demo/SigmaDelta/SigmaDelta.java:public class SigmaDelta extends TypedCompositeActor {
./ptolemy/domains/continuous/demo/Thermostat/Thermostat.java:public class Thermostat extends TypedCompositeActor {
./ptolemy/domains/ct/demo/Corba/NonlinearClient.java:public class NonlinearClient extends TypedCompositeActor {
./ptolemy/domains/ct/demo/Helicopter/Helicopter.java:public class Helicopter extends TypedCompositeActor {
./ptolemy/domains/ct/demo/Lorenz/Lorenz.java:public class Lorenz extends TypedCompositeActor {
./ptolemy/domains/ct/demo/SigmaDelta/SigmaDelta.java:public class SigmaDelta extends TypedCompositeActor {
./ptolemy/domains/ct/demo/Thermostat/Thermostat.java:public class Thermostat extends TypedCompositeActor {
./ptolemy/domains/sdf/demo/Butterfly/Butterfly.java:public class Butterfly extends TypedCompositeActor {
./ptolemy/domains/sdf/demo/OrthogonalCom/OrthogonalCom.java:public class OrthogonalCom extends TypedCompositeActor {

These classes might also be of interest, they extend TypedCompositeActor and are used in libraries
./ptolemy/cg/adapter/generic/program/procedural/java/adapters/ptolemy/cg/lib/CompiledCompositeActor.java:public class CompiledCompositeActor extends TypedCompositeActor {
./ptolemy/cg/lib/CompiledCompositeActor.java:public class CompiledCompositeActor extends TypedCompositeActor {
./ptolemy/codegen/c/actor/lib/hoc/MultiCompositeActor.java:public class MultiCompositeActor extends TypedCompositeActor {
./ptolemy/codegen/c/actor/lib/hoc/MultiInstanceComposite.java:public class MultiInstanceComposite extends TypedCompositeActor {
./ptolemy/codegen/c/actor/lib/hoc/Refinement.java:public class Refinement extends TypedCompositeActor {
./ptolemy/codegen/c/actor/lib/jni/CompiledCompositeActor.java:public class CompiledCompositeActor extends TypedCompositeActor {
./ptolemy/codegen/java/actor/lib/embeddedJava/CompiledCompositeActor.java:public class CompiledCompositeActor extends TypedCompositeActor {
./ptolemy/codegen/java/actor/lib/hoc/MultiCompositeActor.java:public class MultiCompositeActor extends TypedCompositeActor {
./ptolemy/codegen/java/actor/lib/hoc/Refinement.java:public class Refinement extends TypedCompositeActor {
./ptolemy/domains/continuous/lib/ContinuousTransferFunction.java: This actor extends TypedCompositeActor and works as a higher-order function.
./ptolemy/domains/continuous/lib/ContinuousTransferFunction.java:public class ContinuousTransferFunction extends TypedCompositeActor {
./ptolemy/domains/continuous/lib/DifferentialSystem.java:public class DifferentialSystem extends TypedCompositeActor {
./ptolemy/domains/ct/lib/ContinuousTransferFunction.java: This actor extends TypedCompositeActor and works as a higher-order function.
./ptolemy/domains/ct/lib/ContinuousTransferFunction.java:public class ContinuousTransferFunction extends TypedCompositeActor {
./ptolemy/domains/ct/lib/DifferentialSystem.java:public class DifferentialSystem extends TypedCompositeActor {
./ptolemy/domains/ct/lib/LinearStateSpace.java:public class LinearStateSpace extends TypedCompositeActor {
./ptolemy/domains/ddf/lib/ActorRecursion.java:public class ActorRecursion extends TypedCompositeActor {
./ptolemy/domains/sr/lib/EnabledComposite.java:public class EnabledComposite extends TypedCompositeActor {
./ptolemy/domains/tm/lib/TMCompositeFacade.java:public class TMCompositeFacade extends TypedCompositeActor implements TMActor {
./ptolemy/verification/lib/SMVLegacyCodeActor.java:public class SMVLegacyCodeActor extends TypedCompositeActor {

Of the above try looking at the domains/*/lib files first.

We have an older and un-maintained code generator called Copernicus that
can generate java code for certain models (the shallow code generator).  See
http://ptolemy.eecs.berkeley.edu/ptolemyII/ptIIfaq.htm#CodeGen

Once you have your Java TypedCompositeActor written and compiled,
http://ptolemy.eecs.berkeley.edu/ptolemyII/ptIIfaq.htm#kepler
says:

"Concerning using Ptolemy actors within Kepler, Norbert Podhorszki writes:

     If you find a Ptolemy actor useful, just remember its class name
(e.g. ptolemy.actor.lib.Ramp). In Kepler, "Tools/Instantiate Component"
menu allows you to type in the class name, which will put an actor instance
  on your canvas just as dragging one from the actor tree. "


_Christopher

harini iyer wrote:
> Hi,
> 
> I am trying to write a java code instead of using different actors and 
> forming a composite actor. Is there a way to do it? That is, I am trying 
> to use different actors and write my own actor (my actor would be a 
> connection of 2-3 actors, as good as a composite actor). I want to add 
> this composite actor in my local library and use it in different 
> workflows. Is there a better way to do it?
> 
> Thank You,
> Harini
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Kepler-dev mailing list
> Kepler-dev at kepler-project.org
> http://mercury.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev

-- 
Christopher Brooks, PMP                       University of California
CHESS Executive Director                      US Mail: 337 Cory Hall
Programmer/Analyst CHESS/Ptolemy/Trust        Berkeley, CA 94720-1774
ph: 510.643.9841 fax:510.642.2718	      (Office: 545Q Cory)
home: (F-Tu) 707.665.0131 cell: 707.332.0670


More information about the Kepler-dev mailing list