SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
OpenSpaces
     An Object-Oriented Framework
    for Heterogeneous Coordination
              ESUG Summer School 2000

                 Thomas F Hofmann
                University of Berne, Switzerland

                    hofmann@iam.unibe.ch



Open Spaces        Thomas F Hofmann            August 2000   1
Heterogeneous Coordination
or: what's this framework for?

„Coordination is managing dependencies between
activities“. This means activities that are performed by
individual processes or agents which need to synchronize
to accomplish their tasks.
Heterogeneity requirements for coordinating agents in
distributed open systems are:
 • Being able to deal with several platforms
 • Being usable with multiple programming languages.
OpenSpaces has these properties and offers a set of
highly configurable coordination models.


Open Spaces       Thomas F Hofmann      August 2000     2
Communication
To cooperate, the processes need to exchange
informations. Communication paradigms like message
passing, RPC or RMI all have the disadvantage of tight
coupling:
  • The sender of a message must know the exact
    identity and address of a receiver.
  • Need for synchronization: the sender must wait for
    the receiver to be ready for communicating.
In open systems this tends to be too restrictive. One
solution is the concept of generative communication
which was introduced with the coordination language
Linda. [Carriero and Gelernter, ‘86].

Open Spaces       Thomas F Hofmann       August 2000     3
Blackboard Architecture
The blackboard is a shared repository where agents can
exchange „stuff“, which can be messages, calculation results,
tasks, etc.
                                    Agent   Agent
                   Agent
                                                             Agent



         Agent




                 The Blackboard




Open Spaces            Thomas F Hofmann        August 2000           4
Linda (I)
Tuple                        A vector of typed elements
Tuple Space                  The shared repository for tuples

Operation primitives:
  • out (aTuple)        Write aTuple to the space.
  • in (aTemplate)      Take a tuple from the space
                        that matches with aTemplate.
  • rd (aTemplate)      Read: get a copy of a matching
                        tuple, don’t remove it.
  • eval (anActiveTuple) This creates a process at the
                         space that results in a passive
                         tuple.

Open Spaces       Thomas F Hofmann           August 2000    5
Linda (II)
The retrieval of tuples is associative. A template is a
tuple with 0..n wildcards that acts as a mask to specify
the kind of tuples the caller is interested in.
A tuple matches a template if:
 • both have the same number of fields
 • the types of their corresponding fields are equal
 • every actual field of the tuple has the same value as
    the corresponding field of the template
Wildcards are denoted with a '?' followed by the variable
to which the corresponding value of a found tuple will be
bound.


Open Spaces       Thomas F Hofmann        August 2000       6
Using Linda
Examples:
out('hello', 'world', 123, 3.14);
int i; float f;
rd('hello', 'world', ?i, ?f);
          succeeds and binds 123 to i and 3.14 to f
in('hello', 'world', ?i, ?f);
          succeeds and removes tuple from Space
rd('hello', 'world', ?i, ?f);
          does NOT succeed ...



Open Spaces     Thomas F Hofmann     August 2000      7
Properties of Linda
Associative Addressing
Agents specify what data they need, not where to find it.

Non-Determinism
It is not known which tuple will be retrieved if there are
more than one at the space that would match the
template.

Uncoupling of Agents
Agents do not need to know about each other's identity or
location, only the Tuple Space must be known. They also
do not have to synchronize to communicate, not even
simultaneous existence is needed.

Open Spaces        Thomas F Hofmann         August 2000      8
Expressiveness
It has been shown that Linda is capable to express a
large class of parallel and distributed algorithms.
                                     [Carriero, Gelernter 90]
With a suitably choosen design all typical architectural
styles may be realized.
E.g. master-worker:
 • The master writes to the space a set of tuples to be
    worked on.
 • All workers repeatedly take task-tuples, do their job
    with it and put the resulting tuple back to the space.



Open Spaces        Thomas F Hofmann        August 2000       9
Design aspects
Many implementations have been developed since the
original Linda. They introduced extensions like:
f




    •   Multiple tuple spaces
    •   Tuples as objects
    •   New operations like e.g. bulk-retrieving
    •   New matching strategies
    •   Rules gouverning the spaces semantics
    •   Transactions, distributed events

OpenSpaces is designed to be most extensible and
configurable to offer every application a mass tailored
coordination language.

Open Spaces           Thomas F Hofmann       August 2000   10
A Market Place Example
A simple protocol of a typical trading situation:

              Buyer                           Seller

                          request a product



                            make an offer



                            accept the best



                            deliver product




Open Spaces        Thomas F Hofmann              August 2000   11
The Space Adaptation
       Buyer                      Space                             Seller

               make a request

                                             look for requests

                                              make an offer

               look for offers

               accept the best

                                          look for accepted deals

                                              deliver product

               pickup product




Open Spaces           Thomas F Hofmann                   August 2000         12
Analysis
  • Two kinds of actors: Buyer and Seller.
  • Space entries to represent requests, offers and
    deals.
  • Requests describe a wanted product or service.
  • Offers reference a request and specify the price.
  • Deals reference a deal.
  • Requests must be readable by anyone interested.
  • Offers must be readable (only) for the buyer who
    issued the referenced request.
  • Deals must be readable (only) for the seller.



Open Spaces       Thomas F Hofmann       August 2000    13
Stepping through a Trade
As actual participants we specialize SpaceAgent to Buyer
and Seller. Their respective protocols support the role
specific actions of their respective parts:
Buyer>>makeRequest      Append a new request form.
Seller>>collectRequests Scan for newly arrived requests.
Seller>>makeOffer       Append a new offer form
                        referencing a request by its
                        index.
Buyer>>collectOffers    Scan for offers to ownrequest(s)
                        and take them from the market.
Buyer>>acceptOffer      Append a deal form referencing
                        the offer by its index. Remove
                        the referenced request.
Seller>>collectDeals    Scan for deals accepting own
                        offers and remove them.

Open Spaces       Thomas F Hofmann        August 2000      14
Open Spaces
The core classes of the framework:

              SpaceServer                 SpaceAdministrator




                                                                        Entry


     SpaceAgent                  OpenSpace                                   <<associated>>



                                                               ConfigurationPolicy




Open Spaces                 Thomas F Hofmann                   August 2000               15
OS 1: Class Entry
Entries contain the data to be exchanged. To define
suitable attributes each application has to subclass the
(empty) root class Entry. Any single objects or
collections may be used as instance variables.

The class of a concrete Entry descendant also forms
the key to associate the entry with a policy object. This
Configuration Policy defines the Space's
semantics affecting instances of the associated entry
classes. This includes the used matching algorithm.




Open Spaces        Thomas F Hofmann        August 2000      16
OS 2: Class OpenSpace
OpenSpace is the abstraction of the blackboard medium.
It holds a collection of entries and offers several ways of
accessing it.
The standard operation primitives:
  write: anEntry                   write anEntry to the space
  read: aTemplate                  ^ a matching entry or nil
  take: aTemplate                  ^ a matching entry or nil
The blocking an bulk-retrieving variants:
  blockingRead: aTemplate blocks until success
  readAll: aTemplate               ^ all matching entries
Analogous for take


Open Spaces        Thomas F Hofmann          August 2000        17
OS 3: Class SpaceAgent
SpaceAgent is the standard abstraction for clients of the
space. Space agents hold a reference to their current
host space which they get from the globally accessible
space server.

The class SpaceAgent is often subclassed to add
application specific behavior and to hide the underlying
communication structures.




Open Spaces       Thomas F Hofmann        August 2000      18
OS 4: Getting a Space
The SpaceServer is a name server used by all space
agents to access a space. Spaces are looked up by their
name, they must be registered to become available.
If a request is made specifying an unknown space name,
the space server may act as a factory. It can create and
register a new space with the given name.

The space server delegates the actual managing of the
space references to the SpaceAdministrator and
redirects the allowed requests to it.




Open Spaces      Thomas F Hofmann       August 2000     19
Forms
In the Market Place example requests, offers and deals
are represented with the Entry subclass Form. Its sole
attribute is a dictionary, called bindings, to hold any
key-value binding. This offers flexibility since additionally
needed values can be added without subclassing.
A form matches a template if:
  • The form is an instance of the same class as the
     template or of a subclass
  • The forms bindings contain all the keys of the
     templates bindings
  • Their respective values are equal
Additional keys are not considered.

Open Spaces        Thomas F Hofmann         August 2000     20
Form Matching
FormPolicy >> does: aForm matchWith: aTemplate
  "Answer true if aForm contains all keys of aTemplate
   and all respective values are equal."
  |ok|
  ok := (aForm isKindOf: aTemplate class)
           and: [aTemplate bindings notNil].
  ok ifTrue:
       [aTemplate bindings keys
         do: [:key |
           (aForm bindings includesKey: key)
             ifFalse: [ok := false]
             ifTrue:
               [ok := (aForm bindings at: key)
                      = (aTemplate bindings at: key)]]].
  ^ ok


Open Spaces       Thomas F Hofmann       August 2000       21
OS 5: Configuration Policies
Each entry needs an associated ConfigurationPolicy
which defines the matching algorithm to be used for the
associative retrieval of such entries from the space.

Additionally the policy defines hook methods which are
called before and after each of the space operations. Like
that every access can be controlled. The hook methods
can change or refuse a used entry or template. They can
also access the space. Basically any action may be
triggered. (!)




Open Spaces       Thomas F Hofmann       August 2000    22
The Read Contract
               1. create
                                          aTemplate

anAgent
                   2.
                      rea
                         d:
             9.             aT
                ^c             em
                  he             pla
                      cke           te
                          dE
                            ntr
                               y
                                                            4. checkedTemplate :=
                                                                 preReadCheck: aTemplate
                                           aSpace                                                         aConfigurationPolicy
      3. aConfigurationPolicy :=                            7. checkedEntry :=
 configurations at: aTemplate class                              postReadCheck: foundEntry
                              te
                        h] pla




                                                                                                                  ate
                ith ed icy
                      ac m




                                                                                                            8. cre
               W ck ol
                   : e Te
           tch che ionP
       ma es: urat |
         aC ct: [ ry :=
         do nfig ach
             o :e
             te nt
         de ndE




                                                                                       te
                                                                                     ea
                                                                                   cr
          fou




                                            foundEntry
                                                                                5.
       6.




                                                                                                      checkedEntry

                entries                                     checkedTemplate




Open Spaces                              Thomas F Hofmann                                   August 2000                          23
Unique References
Each offer must reference the request it reacts to, each
deal the respective offer. Therefore each form gets a
binding #index->anIndex where anIndex should be
unique. A specialized TailEntry remembers the
highest index used so far.

To append a form the MarketAgent must:
 • take the tail entry
  • increase its index
  • write it back
  • set the forms #index-value to the new index
  • write the form

Open Spaces          Thomas F Hofmann    August 2000       24
Market Place V 2
∆      Consistency of the Market Place does require:
  •   unique indices
  •   equal indices of a to be written form and the tail
  •   correct referencing
  •   complete forms

⇒     The ConfigurationPolicy>>preWriteCheck
method can assert this: only correct forms pass, others
are rejected. Three different subclasses define the
method for the respective forms.
Form is subclassed to Request, Offer and Deal, which
can be associated with the corresponding policies
(without any changes in the implementation).
Open Spaces          Thomas F Hofmann        August 2000   25
Consistency Checks
RequestPolicy>>preWriteCheck: aForm
  • check if the forms bindings include the keys
    #section, #product and #index.
  • read the tail entry and check if the forms #index-
    value is equal to the tails index and if there is no
    other form present with this index.
  • if OK answer the form, else nil to reject it.

The pre-write checks in OfferPolicy and DealPolicy
are similar. Additionally they check the references of the
forms. The DealPolicy removes the referenced request
form if it still is present.

Open Spaces        Thomas F Hofmann        August 2000     26
Market Place V 3
∆    The index incrementing procedure is a bit awkward.
Doing this at the space would reduce the responsibility of
the market agents and also the network traffic.

⇒    In its preWriteCheck method a specialized
AutomaticIndexPolicy takes care of the tail business
and sets the index of the form that should be written.

Since the write operation returns the actually written
entry, the space agent can check it for the received
index.



Open Spaces        Thomas F Hofmann        August 2000   27
Market Place V 4
∆       After some running time it is quite probable that
forgotten entries start to clutter a space. Some garbage
collection is needed. One solution is adding a timestamp
to every entry beeing written to the space. After expiry of
its lifetime it will be discarded.

⇒    At the space this can be done with a suitable
configuration policy. On preWriteCheck a binding
#arrivalTime->(Time now) is added to the form. On
every call of a retrieving operation the preWriteCheck
discards every outdated form at the space.



Open Spaces        Thomas F Hofmann        August 2000    28
Garbage Collection
To discard the outdated forms the pre-access hook
perform a readAll. The received collection is scanned
and each expired form is removed from the space by
perfoming a take.

Since the two operations again will call the pre-access-
hooks this could cause loops! To distinguish between a
client-initiated and a policy-initiated call of the pre-access
hook a flag is set before calling the actual cleanup
method and unset after it. The pre-access-hooks check
this flag to bypass the usual checks if set.



Open Spaces        Thomas F Hofmann          August 2000     29
Reconfiguration
The space offers a method to register an entry class with
a specific configuration policy and one to cancel such an
association. Since the policy is looked up for every
access, it is easy to reconfigure the system on the fly.
The only thing to consider thereby is how to proceed with
the already present entries of the affected class. The
configuration policy has a special hook method:
updateOldEntriesOfClass: aClass, which is called
right after a new registering of the class with the new
policy. Any necessary action for a clean transition can be
done there.



Open Spaces       Thomas F Hofmann       August 2000    30
CORBA: I3
DST offers the Implicite Invocation Interface (I3) which
provides remote communication without explicit IDL
definitions. It works only between Smalltalk images with
DST loaded, but all CORBA features may be used.

However, to be interoperable with other CORBA
compilant languages, we need to declare IDL modules to
instruct the ORB how to marshall and unmarshall
requests and parameters or results.
It is straight forward to extend a system built using I3 to
support any language by adding the IDL.


Open Spaces        Thomas F Hofmann         August 2000       31
CORBA: IDL
  • Each object which will be called remotely must have
    an interface definition.
  • Each parameter and return value must be an
    instance of a declared type.
  • Every IDL type is recursively built from simple data
    types like float, short, string, etc.
  • Interfaces are transmitted as remote object
    references.
  • An IDL-struct is passed by value.
  • Both participating ORBs must have synchronized
    repositories containing the same IDL modules.


Open Spaces       Thomas F Hofmann       August 2000       32
IDL Examples (I)
interface OpenSpaceInterface {
  #pragma selector write write:
  any write(in any anEntry);
  #pragma selector read read:
  any read(in any aTemplate);
  #pragma selector take take:
  any take(in any aTemplate);

     (...)

     #pragma selector takeAll takeAll:
     OrderedCollection takeAll(in any aTemplate);
     };
};


Open Spaces       Thomas F Hofmann     August 2000   33
IDL Examples (II)
#pragma class OrderedCollection OrderedCollection
typedef sequence<any> OrderedCollection;


#pragma class Association Association
struct Association{ any key; any value; };

#pragma class Dictionary Dictionary
typedef sequence<Association> Dictionary;

#pragma class Form Form
struct Form {
   Dictionary bindings;
};


Open Spaces     Thomas F Hofmann    August 2000     34
Conclusion
OpenSpaces is configurable and extensible
 • The matching algorithm is arbitrarily definable.
 • The access hooks may perform any side-effect.
 • White-box style extensions by subclassing and black-
   box style extensions by setting up configuration
   policies are possible.

OpenSpaces works heterogeneous
Several server platforms: Visual Works runs on UNIX,
windows, mac, Linux.
Clients may be written in any language with an ORB.


Open Spaces      Thomas F Hofmann       August 2000    35
Outlook / Extensions
  • Distributed transactions
  • Authorization for reconfiguring the system
  • Remote registering new entry types through the client
    (IDL description). Needs generic configuration
    policies.




Open Spaces       Thomas F Hofmann       August 2000   36

Contenu connexe

Plus de ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsESUG
 

Plus de ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Dernier

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Dernier (20)

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 

OpenSpaces

  • 1. OpenSpaces An Object-Oriented Framework for Heterogeneous Coordination ESUG Summer School 2000 Thomas F Hofmann University of Berne, Switzerland hofmann@iam.unibe.ch Open Spaces Thomas F Hofmann August 2000 1
  • 2. Heterogeneous Coordination or: what's this framework for? „Coordination is managing dependencies between activities“. This means activities that are performed by individual processes or agents which need to synchronize to accomplish their tasks. Heterogeneity requirements for coordinating agents in distributed open systems are: • Being able to deal with several platforms • Being usable with multiple programming languages. OpenSpaces has these properties and offers a set of highly configurable coordination models. Open Spaces Thomas F Hofmann August 2000 2
  • 3. Communication To cooperate, the processes need to exchange informations. Communication paradigms like message passing, RPC or RMI all have the disadvantage of tight coupling: • The sender of a message must know the exact identity and address of a receiver. • Need for synchronization: the sender must wait for the receiver to be ready for communicating. In open systems this tends to be too restrictive. One solution is the concept of generative communication which was introduced with the coordination language Linda. [Carriero and Gelernter, ‘86]. Open Spaces Thomas F Hofmann August 2000 3
  • 4. Blackboard Architecture The blackboard is a shared repository where agents can exchange „stuff“, which can be messages, calculation results, tasks, etc. Agent Agent Agent Agent Agent The Blackboard Open Spaces Thomas F Hofmann August 2000 4
  • 5. Linda (I) Tuple A vector of typed elements Tuple Space The shared repository for tuples Operation primitives: • out (aTuple) Write aTuple to the space. • in (aTemplate) Take a tuple from the space that matches with aTemplate. • rd (aTemplate) Read: get a copy of a matching tuple, don’t remove it. • eval (anActiveTuple) This creates a process at the space that results in a passive tuple. Open Spaces Thomas F Hofmann August 2000 5
  • 6. Linda (II) The retrieval of tuples is associative. A template is a tuple with 0..n wildcards that acts as a mask to specify the kind of tuples the caller is interested in. A tuple matches a template if: • both have the same number of fields • the types of their corresponding fields are equal • every actual field of the tuple has the same value as the corresponding field of the template Wildcards are denoted with a '?' followed by the variable to which the corresponding value of a found tuple will be bound. Open Spaces Thomas F Hofmann August 2000 6
  • 7. Using Linda Examples: out('hello', 'world', 123, 3.14); int i; float f; rd('hello', 'world', ?i, ?f); succeeds and binds 123 to i and 3.14 to f in('hello', 'world', ?i, ?f); succeeds and removes tuple from Space rd('hello', 'world', ?i, ?f); does NOT succeed ... Open Spaces Thomas F Hofmann August 2000 7
  • 8. Properties of Linda Associative Addressing Agents specify what data they need, not where to find it. Non-Determinism It is not known which tuple will be retrieved if there are more than one at the space that would match the template. Uncoupling of Agents Agents do not need to know about each other's identity or location, only the Tuple Space must be known. They also do not have to synchronize to communicate, not even simultaneous existence is needed. Open Spaces Thomas F Hofmann August 2000 8
  • 9. Expressiveness It has been shown that Linda is capable to express a large class of parallel and distributed algorithms. [Carriero, Gelernter 90] With a suitably choosen design all typical architectural styles may be realized. E.g. master-worker: • The master writes to the space a set of tuples to be worked on. • All workers repeatedly take task-tuples, do their job with it and put the resulting tuple back to the space. Open Spaces Thomas F Hofmann August 2000 9
  • 10. Design aspects Many implementations have been developed since the original Linda. They introduced extensions like: f • Multiple tuple spaces • Tuples as objects • New operations like e.g. bulk-retrieving • New matching strategies • Rules gouverning the spaces semantics • Transactions, distributed events OpenSpaces is designed to be most extensible and configurable to offer every application a mass tailored coordination language. Open Spaces Thomas F Hofmann August 2000 10
  • 11. A Market Place Example A simple protocol of a typical trading situation: Buyer Seller request a product make an offer accept the best deliver product Open Spaces Thomas F Hofmann August 2000 11
  • 12. The Space Adaptation Buyer Space Seller make a request look for requests make an offer look for offers accept the best look for accepted deals deliver product pickup product Open Spaces Thomas F Hofmann August 2000 12
  • 13. Analysis • Two kinds of actors: Buyer and Seller. • Space entries to represent requests, offers and deals. • Requests describe a wanted product or service. • Offers reference a request and specify the price. • Deals reference a deal. • Requests must be readable by anyone interested. • Offers must be readable (only) for the buyer who issued the referenced request. • Deals must be readable (only) for the seller. Open Spaces Thomas F Hofmann August 2000 13
  • 14. Stepping through a Trade As actual participants we specialize SpaceAgent to Buyer and Seller. Their respective protocols support the role specific actions of their respective parts: Buyer>>makeRequest Append a new request form. Seller>>collectRequests Scan for newly arrived requests. Seller>>makeOffer Append a new offer form referencing a request by its index. Buyer>>collectOffers Scan for offers to ownrequest(s) and take them from the market. Buyer>>acceptOffer Append a deal form referencing the offer by its index. Remove the referenced request. Seller>>collectDeals Scan for deals accepting own offers and remove them. Open Spaces Thomas F Hofmann August 2000 14
  • 15. Open Spaces The core classes of the framework: SpaceServer SpaceAdministrator Entry SpaceAgent OpenSpace <<associated>> ConfigurationPolicy Open Spaces Thomas F Hofmann August 2000 15
  • 16. OS 1: Class Entry Entries contain the data to be exchanged. To define suitable attributes each application has to subclass the (empty) root class Entry. Any single objects or collections may be used as instance variables. The class of a concrete Entry descendant also forms the key to associate the entry with a policy object. This Configuration Policy defines the Space's semantics affecting instances of the associated entry classes. This includes the used matching algorithm. Open Spaces Thomas F Hofmann August 2000 16
  • 17. OS 2: Class OpenSpace OpenSpace is the abstraction of the blackboard medium. It holds a collection of entries and offers several ways of accessing it. The standard operation primitives: write: anEntry write anEntry to the space read: aTemplate ^ a matching entry or nil take: aTemplate ^ a matching entry or nil The blocking an bulk-retrieving variants: blockingRead: aTemplate blocks until success readAll: aTemplate ^ all matching entries Analogous for take Open Spaces Thomas F Hofmann August 2000 17
  • 18. OS 3: Class SpaceAgent SpaceAgent is the standard abstraction for clients of the space. Space agents hold a reference to their current host space which they get from the globally accessible space server. The class SpaceAgent is often subclassed to add application specific behavior and to hide the underlying communication structures. Open Spaces Thomas F Hofmann August 2000 18
  • 19. OS 4: Getting a Space The SpaceServer is a name server used by all space agents to access a space. Spaces are looked up by their name, they must be registered to become available. If a request is made specifying an unknown space name, the space server may act as a factory. It can create and register a new space with the given name. The space server delegates the actual managing of the space references to the SpaceAdministrator and redirects the allowed requests to it. Open Spaces Thomas F Hofmann August 2000 19
  • 20. Forms In the Market Place example requests, offers and deals are represented with the Entry subclass Form. Its sole attribute is a dictionary, called bindings, to hold any key-value binding. This offers flexibility since additionally needed values can be added without subclassing. A form matches a template if: • The form is an instance of the same class as the template or of a subclass • The forms bindings contain all the keys of the templates bindings • Their respective values are equal Additional keys are not considered. Open Spaces Thomas F Hofmann August 2000 20
  • 21. Form Matching FormPolicy >> does: aForm matchWith: aTemplate "Answer true if aForm contains all keys of aTemplate and all respective values are equal." |ok| ok := (aForm isKindOf: aTemplate class) and: [aTemplate bindings notNil]. ok ifTrue: [aTemplate bindings keys do: [:key | (aForm bindings includesKey: key) ifFalse: [ok := false] ifTrue: [ok := (aForm bindings at: key) = (aTemplate bindings at: key)]]]. ^ ok Open Spaces Thomas F Hofmann August 2000 21
  • 22. OS 5: Configuration Policies Each entry needs an associated ConfigurationPolicy which defines the matching algorithm to be used for the associative retrieval of such entries from the space. Additionally the policy defines hook methods which are called before and after each of the space operations. Like that every access can be controlled. The hook methods can change or refuse a used entry or template. They can also access the space. Basically any action may be triggered. (!) Open Spaces Thomas F Hofmann August 2000 22
  • 23. The Read Contract 1. create aTemplate anAgent 2. rea d: 9. aT ^c em he pla cke te dE ntr y 4. checkedTemplate := preReadCheck: aTemplate aSpace aConfigurationPolicy 3. aConfigurationPolicy := 7. checkedEntry := configurations at: aTemplate class postReadCheck: foundEntry te h] pla ate ith ed icy ac m 8. cre W ck ol : e Te tch che ionP ma es: urat | aC ct: [ ry := do nfig ach o :e te nt de ndE te ea cr fou foundEntry 5. 6. checkedEntry entries checkedTemplate Open Spaces Thomas F Hofmann August 2000 23
  • 24. Unique References Each offer must reference the request it reacts to, each deal the respective offer. Therefore each form gets a binding #index->anIndex where anIndex should be unique. A specialized TailEntry remembers the highest index used so far. To append a form the MarketAgent must: • take the tail entry • increase its index • write it back • set the forms #index-value to the new index • write the form Open Spaces Thomas F Hofmann August 2000 24
  • 25. Market Place V 2 ∆ Consistency of the Market Place does require: • unique indices • equal indices of a to be written form and the tail • correct referencing • complete forms ⇒ The ConfigurationPolicy>>preWriteCheck method can assert this: only correct forms pass, others are rejected. Three different subclasses define the method for the respective forms. Form is subclassed to Request, Offer and Deal, which can be associated with the corresponding policies (without any changes in the implementation). Open Spaces Thomas F Hofmann August 2000 25
  • 26. Consistency Checks RequestPolicy>>preWriteCheck: aForm • check if the forms bindings include the keys #section, #product and #index. • read the tail entry and check if the forms #index- value is equal to the tails index and if there is no other form present with this index. • if OK answer the form, else nil to reject it. The pre-write checks in OfferPolicy and DealPolicy are similar. Additionally they check the references of the forms. The DealPolicy removes the referenced request form if it still is present. Open Spaces Thomas F Hofmann August 2000 26
  • 27. Market Place V 3 ∆ The index incrementing procedure is a bit awkward. Doing this at the space would reduce the responsibility of the market agents and also the network traffic. ⇒ In its preWriteCheck method a specialized AutomaticIndexPolicy takes care of the tail business and sets the index of the form that should be written. Since the write operation returns the actually written entry, the space agent can check it for the received index. Open Spaces Thomas F Hofmann August 2000 27
  • 28. Market Place V 4 ∆ After some running time it is quite probable that forgotten entries start to clutter a space. Some garbage collection is needed. One solution is adding a timestamp to every entry beeing written to the space. After expiry of its lifetime it will be discarded. ⇒ At the space this can be done with a suitable configuration policy. On preWriteCheck a binding #arrivalTime->(Time now) is added to the form. On every call of a retrieving operation the preWriteCheck discards every outdated form at the space. Open Spaces Thomas F Hofmann August 2000 28
  • 29. Garbage Collection To discard the outdated forms the pre-access hook perform a readAll. The received collection is scanned and each expired form is removed from the space by perfoming a take. Since the two operations again will call the pre-access- hooks this could cause loops! To distinguish between a client-initiated and a policy-initiated call of the pre-access hook a flag is set before calling the actual cleanup method and unset after it. The pre-access-hooks check this flag to bypass the usual checks if set. Open Spaces Thomas F Hofmann August 2000 29
  • 30. Reconfiguration The space offers a method to register an entry class with a specific configuration policy and one to cancel such an association. Since the policy is looked up for every access, it is easy to reconfigure the system on the fly. The only thing to consider thereby is how to proceed with the already present entries of the affected class. The configuration policy has a special hook method: updateOldEntriesOfClass: aClass, which is called right after a new registering of the class with the new policy. Any necessary action for a clean transition can be done there. Open Spaces Thomas F Hofmann August 2000 30
  • 31. CORBA: I3 DST offers the Implicite Invocation Interface (I3) which provides remote communication without explicit IDL definitions. It works only between Smalltalk images with DST loaded, but all CORBA features may be used. However, to be interoperable with other CORBA compilant languages, we need to declare IDL modules to instruct the ORB how to marshall and unmarshall requests and parameters or results. It is straight forward to extend a system built using I3 to support any language by adding the IDL. Open Spaces Thomas F Hofmann August 2000 31
  • 32. CORBA: IDL • Each object which will be called remotely must have an interface definition. • Each parameter and return value must be an instance of a declared type. • Every IDL type is recursively built from simple data types like float, short, string, etc. • Interfaces are transmitted as remote object references. • An IDL-struct is passed by value. • Both participating ORBs must have synchronized repositories containing the same IDL modules. Open Spaces Thomas F Hofmann August 2000 32
  • 33. IDL Examples (I) interface OpenSpaceInterface { #pragma selector write write: any write(in any anEntry); #pragma selector read read: any read(in any aTemplate); #pragma selector take take: any take(in any aTemplate); (...) #pragma selector takeAll takeAll: OrderedCollection takeAll(in any aTemplate); }; }; Open Spaces Thomas F Hofmann August 2000 33
  • 34. IDL Examples (II) #pragma class OrderedCollection OrderedCollection typedef sequence<any> OrderedCollection; #pragma class Association Association struct Association{ any key; any value; }; #pragma class Dictionary Dictionary typedef sequence<Association> Dictionary; #pragma class Form Form struct Form { Dictionary bindings; }; Open Spaces Thomas F Hofmann August 2000 34
  • 35. Conclusion OpenSpaces is configurable and extensible • The matching algorithm is arbitrarily definable. • The access hooks may perform any side-effect. • White-box style extensions by subclassing and black- box style extensions by setting up configuration policies are possible. OpenSpaces works heterogeneous Several server platforms: Visual Works runs on UNIX, windows, mac, Linux. Clients may be written in any language with an ORB. Open Spaces Thomas F Hofmann August 2000 35
  • 36. Outlook / Extensions • Distributed transactions • Authorization for reconfiguring the system • Remote registering new entry types through the client (IDL description). Needs generic configuration policies. Open Spaces Thomas F Hofmann August 2000 36