Title: The Themis Structural Computing Environment
1The Themis Structural Computing Environment
- Kenneth M. Anderson
- April 1, 2002 (no fooling!)
- (with William V. Lepthien and Susanne A. Sherba)
2Overview
- History of Structural Computing
- Themis Structural Computing Environment
- Structure Templates
- Structure Transformations
- InfiniTe Prototype, Take 2
- Current Status and Future Work
3History of Structural Computing
- 1988 Keynote Speech by Norman Meyrowitz The
Missing Link Why Were All Doing Hypertext
Wrong - Bemoaned incompatible hypertext systems
- 1989 Open Hypermedia Research Begins
- Amy Pearl publishes Suns Link Service
- 1990s Open Hypermedia Systems flourish
- DHM, Microcosm, HOSS, Hyperform, Chimera
- 1997 As We Should Have Thought
- call to arms for structural computing by
Nürnberg - 1999 First International Workshop on Structural
Computing - in Darmstadt, Germany
- 2000 and 2001 workshops also held
4In a Nutshell (Set-Up)
- Open hypermedia developed sophisticated
technology to manage - navigational hypermedia structures
- composite, node, anchor, link
- that made it easy for these structures to be
- persistent, distributed, scalable,
collaboratively (both asynchronously and
synchronously) accessible - in an open framework that enabled integration
into multiple applications
5In a Nutshell (Punch Line)
- Structural Computing will develop sophisticated
technology to manage - structures for domain X, domain Y, domain Z,
- that made it easy for these structures to be
- persistent, distributed, scalable,
collaboratively (both asynchronously and
synchronously) accessible - in an open framework that enables integration
into multiple applications - and also allows integration of structures across
domains - and the specification of services that are
structure aware - and advanced services for developing structures
- and
6Architectural Perspective on Structural Computing
UI
HyperTies,HyperCard, etc.
Applications
Applications
Structures/Services
HyperBase
Database
Database
1980s Monolithic Hypermedia Systems
late1980s HyperBase Systems
1990s Open Hypermedia Systems
late 1990s Component-Based Open Hypermedia Systems
7Structural Computing Research
- Understanding of Domains
- Software Engineering Anderson99, Anderson00
- Examples of Structural Computing
- Structure Servers
- Construct Component-Based OHS
- work by Nürnberg, Wiil, and Hicks
- Support for multiple hypermedia domains
- Tools to automatically generate new structure
servers -gt UML Class Diagrams as input
8Themis SC Environment
- Structural computing environment focused on
structure templates and structure transformation - will focus on services in Themis 2.0
- Extend vs. Generate
- spec. -gt structure server (Construct)
- structure server -gt customized structure server
(Themis) - start with generic structure server and make it
easy to define new structures provide basic
services help automate structure transformation
9Themis Framework
Framework consists of only 5 conceptual
entities Atoms are containers of domain-specific
data (this data is opaque to Themis) Collections
can contain zero or more Atoms Both atoms and
collections have sets of attributes attribute
values can be standard primitive types or other
Elements
10Themis Structure Server
- Provides persistence, distribution, and naming
services over Themis Framework - Implementation adds Repository, Id, and Set
classes to Framework - Repository class provides search and query API,
extension mechanism API, and ability to create
multiple repositories of Elements and Attributes
in a single Themis structure server - Id provides global identifier for each Element
- Set provides means for returning results of
queries - Find me all Atoms whose attribtue type equals
Context - Set implements find as well, so queries can be
refined
11More on Find
- Find is implemented by searching on attribute
values - query is a set of attributes
- if attribute has name, but no value, then all
elements with an attribute that matches the
specified name are returned - give me all atoms which have a size attribute
- otherwise, if attribute has name and value, then
elements with named attributes whose value
equals the query value are returned - give me all atoms whose size attribute equals
10 - if equals returns false, Java reflection
mechanism is used to determine if attribute value
supports a Themis-defined match operation - if so, then all elements with named attributes
whose value matches the query value are
returned - Themis will provide regular expression matching
of Strings and relational matching of Integers
with this mechamism
12Extension Mechanism API
- To enable an open set of extensibility mechanisms
in Themis, APIs for extensibility mechanisms are
dynamically loaded - Example
- templates tAPI (templates)Repository.getAPI(
edu.colorado.cs.serl.themis.templates) - Collection c (Collection)tAPI.newInstance(
myTemplate) - First two extensibility mechanisms
- structure templates
- structure transformation
13Structure Templates
- Template API allows common arrangements of atoms,
collections, and attributes to be named and
instantiated on demand - reduces need for data structure creation code
- simply define template once and instantiate as
needed - Template API uses template by example approach
- call beginTemplate create structure call
endTemplate - newInstance creates a new instance of the named
template with all atoms, collections, and
attributes specified in the template created with
default values - if newInstance is called within
beginTemplate/endTemplate pair, then it adds a
reference to the template in the structure being
defined allows templates to build on other
templates
14Creating a Structure without Templates
- Shipment createShipment(
- int src, int dest,
- Products prods, Date shipDate)
- Attribute sd new Attribute(shipDate,
shipDate) - Attribute ad new Attribute(arrivalDate,
null) - Attribute sn new Attribute(name,
sourceWarehouse) - Attribute dn new Attribute(name,
destinationWarehouse) - Atom sw (Atom)new AtomId() Atom dw
(Atom)new AtomId() - sw.addAttribute(sn) sw.setObject(new
Integer(src)) - dw.addAttribute(dn) dw.setObject(new
Integer(dest)) - Collection shipment (Collection)new
CollectionId() - shipment.addAttribute(sd) shipment.addAttribute(
ad) - shipment.add(sw) shipment.add(dw)
shipment.add(prods) - return (Shipment)shipment
15Define Template
- create a one shot program that
- connects to Themis structure server
- beginTemplate(shipment)
- executes code from previous slide with following
changes - substitute null for all attribute values that
depend on parameters - remove calls to set objects of each atom
- remove call to add Products collection
- end template(passing shipment Collection)
- disconnects from Themis
16Creating Structure with Templates
- Shipment createShipment(
- int src, int dest,
- Products prods, Date shipDate)
- Collection shipment (Collection)templateAPI.newI
nstance(shipment) - shipment.setAttributeValue(shipDate, sd)
- ((Atom)shipment.getMemberAtIndex(1)).setObject(new
Integer(src)) - ((Atom)shipment.getMemberAtIndex(2)).setObject(new
Integer(dest)) - shipment.add(prods)
- return (Shipment)shipment
17Structure Transformation
- Provide extensiblity mechanism that makes it
possible to convert an instance of one template
into an instance of another template - Supported via plug-in mechanism
- Plug-ins must implement ThemisTransformation
interface - String fromTemplate() returns source template
- String toTemplate() returns destination template
- Element transform(Element) - contains code to do
transformation - transformationAPI then provides the following
operation - Element transform(String from, String to, Element
root)
18Themis Architecture
Client 1
Client 2
Client 3
Client Interface
Client Interface
Client Interface
Connection to Repository C
Connection to Repository A
Connection to Repository B
Themis Server
Server Interface
Atom
Collection
Object
Repository
Database Interface
DBMS
Repository C
Repository B
Repository A
19InfiniTe Prototype, Take 2
- We are redesigning InfiniTe (our information
integration environment) to make use of Themis - abandoning the XML-based repository used in the
first InfiniTe prototype - Why?
- Code of integrators and translators too closely
tied to structure of XML documents - if structure changes, so do integrators and
translators
20Initial Results
- Structure-based approach to repository is leading
to code savings in InfiniTe - In XML-based prototype
- Keyword Integrator (146 lines of code)
- Text Translator (74 lines of code)
- In Themis-based prototype
- Keyword Integrator (97 lines of code, 34
savings) - Text Translator (54 lines of code, 27 savings)
- Examples
21Current Status / Future Work
- Current Status
- Prototype Implementation has begun
- Structure server implemented on top of relational
database (using JDBC) support for transactions
included - Themis Atom and Atom Objects implemented
- Atom objects are serialized, stored as blobs
- Collections, Attributes, Sets, and Find operation
are next - Apaches XML-RPC being used as network protocol
- Future Work
- Structure-Aware Services
- Generation of Themis servers configured for
particular types of non-functional requirements