Transcript ppt - SLAC
Stanford Linear Accelerator Center
Aida; Accelerator Integrated
Data Access
Middleware Continued
Episode 3; Verdi’s Revenge
M. Claussen, R. MacKenzie, R. Sass, H. Shoaee, K. Underwood,
G. White
May 8-10 2001
EPICS Collaboration Meeting - Paul Scherrer Institut
1
In the Last Episode…
The Un-classic not-so-thin client with a JVM & XML
CDEV
CORBA compliant ORB
Channel Access
CORBA compliant ORB
Non-IOC
Application
Cloud
CDEV CORBA compliant ORB Channel Access
CDEV
CORBA compliant ORB
Channel Access
IOC Applications
May 8-10 2001
EPICS Collaboration Meeting - Paul Scherrer Institut
2
The Current Episode
Support get/set/monitor any data from/to any source
Middleware
Application Layer
Hetrogeneous NLC Database Cloud
A
Application P
I
Configuration
Data
Enterprise
A
Application P
I
AIDA
Archive
Online Device
Data
A
EPICS
Application P
I
Attribute
Dictionary
May 8-10 2001
Name Service
EPICS Collaboration Meeting - Paul Scherrer Institut
3
Supporting Ideas
•
•
•
•
•
•
•
Name and schema mapping
Data location discovered at runtime.
CORBA middleware & services
Server resilience (auto reconfigure on server
down)
API and OPI
Language and OS independent
Collections, Aliases, Range Names
May 8-10 2001
EPICS Collaboration Meeting - Paul Scherrer Institut
4
Name and Schema Mapping
AIDA instance variable
(like and EPICS record)
Middleware
caGet(Q-04144.BACT)
QUAD:PR04144.B_actual
HIWarning
.BDES)
caGet(Q-04144
LOWarning
B_desired
B_model
B_config
Model.
Twiss.
X.
select *
fr o m T
psi
w is s w
here ...
beta
select beta fr
o
m
eta
Twiss where
plane = 'X' an
d ...
Y.
psi
beta
eta
Rmatrix.
[6][6]
Databases
EPICS
Configuratio
n Legacy db
Model
Oracle db
Each name.attribute{.attribute}0+ maps to a database query
May 8-10 2001
EPICS Collaboration Meeting - Paul Scherrer Institut
5
Salient Features
•
•
•
•
•
Given a name.attribute, AIDA finds the
source and appropriate query
Uses its own name services
Data Location and Query persist/cached
(not rediscovered)
C++ & Java Bindings
Can code as API or OPI
May 8-10 2001
EPICS Collaboration Meeting - Paul Scherrer Institut
6
Simple OO Example
Class QUAD {
private AIDA d;
QUAD( string name ) { d = new AIDA(name); }
float get( string attribute ) {
return d.get(‘’B_desired’’);
}
float[2][6] getTwiss() {
org.omg.CORBA.Any t= d.getAny(‘’Model.Twiss’’);
...
}
}
QUAD fred(‘’quad:pr04144’’);
float bfieldwanted = fred.get(‘’B_desired’’);
float twiss[2][6] = fred.getTwiss();
May 8-10 2001
EPICS Collaboration Meeting - Paul Scherrer Institut
7
Where We’re At
•
•
•
•
•
•
•
•
Have a complete set of requirements.
Accessed EPICS & old SLC data via Corba.
Java Corba -> JDBC -> Oracle
C++ Corba -> ODBC -> Oracle
Sample Name & attribute databases with query
mapping to get data
Have a Java Orb on VMS
Testing Notify Service for Monitors
Ready to implement something real
May 8-10 2001
EPICS Collaboration Meeting - Paul Scherrer Institut
8
Cosmic CUD
IOC
MANAGE
CUD
DISPLAYS
Alpha
CUD
DISPLAY
SCP
SLC DB
Aid
a
Oracle CUD
Configuration
May 8-10 2001
CUD
DISPLAY
EPICS Collaboration Meeting - Paul Scherrer Institut
9