[kepler-dev] Handling shared-resources
cxh at eecs.berkeley.edu
Wed Mar 7 09:56:29 PST 2007
Ptolemy has ptolemy/moml/SharedParameter.java
This parameter is shared throughout a model. Changing the expression of
any one instance of the parameter will result in all instances that
are shared being changed to the same expression. An instance elsewhere
in the model (within the same top level) is shared if it has the
same name and its container is of the class specified in the
constructor (or of the container class, if no class is specified
in the constructor). Note that two parameters with the same
expression do not necessarily have the same value, since the
expression may reference other parameters that are in scope.
One exception is that if this parameter is (deeply) within an
instance of EntityLibrary, then the parameter is not shared.
Were this not the case, then opening a library containing this
parameter would force expansion of all the sublibraries of
EntityLibrary, which would defeat the lazy instantiation
When this parameter is constructed, the specified container
will be used to infer the parameter value from the container.
That is, if the container is within a model that has any
parameters shared with this one, then the value will be
set to the last of those encountered.
If the container is subsequently changed, it is up to the
code implementing the change to use the inferValueFromContext()
method to reset the value to match the new context.
Note that this really needs to be done if the container
of the container, or its container, or any container
above this parameter is changed. It is recommended to use
the four-argument constructor, so you can specify a default
value to use if there are no shared parameters.
Note that it might be tempting to use a static parameter field
to achieve this effect, but this would be problematic for two
reasons. First, the parameter would only be able to have one
container. Second, the parameter would be shared across all
models in the same Java virtual machine, not just within a
Also, there is ptolemy/actor/lib/Publisher.java
Does anyone handle a "resource" in a workflow "shared" among actors?
I mean like org.kepler.actor.Logger that opens a file once but many
instances of that actor in the workflow can write into the same file. So
there is no need to drag channels from many actors to one single Logger
actor. The file is then (supposed to be) closed at the end of the workflow
Or, the org.kepler.actor.ssh.* actors that share an established ssh
session to perform remote operations. The session should be closed at the
very end of the execution.
I have learnt from the recent thread "Wrapup sequence question" that I was
wrong about that actors can be aware of the finalization stage of the
model/workflow, I have put the finalization of shared resources into the
wrapup() method. However, under PN, individual actors can wrap-up
surprisingly early, even before another actors start working.
My question is to those who handle shared resources: When and how do you
I am not sure that actor-oriented modelling allows shared resources at
all, or they are just examples of violating it.
University of California, Davis
Department of Computer Science
1 Shields Ave, 2236 Kemper Hall
Davis, CA 95616
pnorbert at cs.ucdavis.edu
Kepler-dev mailing list
Kepler-dev at ecoinformatics.org
More information about the Kepler-dev