Trip Report
Overview of CCS software
We started by reviewing the existing CCS software developed in Paris. Major components of the system include:
- 3 Java Message Service (JMS) buses that support transport of
- Commands
- Status/Alarm messages
- Logging
- The system is not locked to a specific JMS implementation but CCS currently favors glassfish
- An OCS Bridge which
- Accepts hight level commands from the telescope and generates sequences of low level CCS commands
- Sends aggregate monitoring/status information back to telescope
- History Database
- Uses hibernate to support any backend database
- Subsystems
- Control/Monitor specific hardware module via one of
- Communicates with other subsystems via JMS buses
- Subsystems can optionally consist of reusable modules
- Modules are wired together using an XML configuration file
- Currently implemented using Spring by generating spring XML from user-written XML
- Modules are wired together using an XML configuration file
- Aspect oriented system (currently using AspectJ) can be used to enforce security
- (e.g. to prevent certain methods from being called unless subsystem is in a particular state)
A guiding principle of the design/architecture is to define CCS specific interfaces which hide implementation details to prevent lock-in to a particular implementation. The CCS software is initially targeted at a PC 104 hardware platform running Linux and Java.
Possible SLAC Contribution to CCS
It would appear that the SCA Data Handling group's expertise in supporting Java infrastructure and distributed collaborative development, trending databases , swing GUI and web based development could be of immediate benefit to the CCS software. In addition the group is anxious to begin to try the software connected to real hardware and the SLAC effort on the LSST camera shutter seems a natural place to start.
We identified the following areas where SLAC could potentially contribute to the CCS software:
High (***), Medium (**), Low (*) priority
- Develop specification of Rest Interface (***)
- Implement rest interface -> Link to database via Hibernate (**)
- Develop GUI (Web based and/or JavaWebStart) (**)
- Trending Analysis system
- Status Display
- Generic Overview
- Console
- Subsystem specific displays (e.g. Shutter Control,Carousel Control)
- Setup Glassfish to run JMS and Web Services (**)
- "out of the box" setup
- Trending Analysis system
- Set up "real-time" database (*)
- Experiment with scalability/performance/different databases
- Caching
- Materialized views
- Partitioning
- Experiment with scalability/performance/different databases
- Interface to Shutter Control System (***)
- Develop driver interface
- Try to use with GUI/Trending
- Feedback to core CCS
- Interface to FCS
- Develop driver interface
- Try to use with GUI/Trending
- Feedback to core CCS
- Improvements to core CCS system (*)
- Directories of commands
- Ability to handle asynchronous commands (e.g. abort)
- Improve status database – how to store objects
- Improve caching (not one commit per message)
- Log message structure (meta-data?)
- ??? lower priority
- Infrastructure help
- Hudson
- Maven
- Start using bug tracking system
- Unit tests
Work during week
We worked on the following specific items during the visit:
- Obtained Subversion, Trac, DocuShare and LSST hypernews access for Max and Tony
- Set up glassfish 3 as JMS server.
- Set up example maven pom for evaluation of maven as potential build/module system. (Paris group also intends to look at Ivy)
- Set up Hudson for evaluation as a continuous integration server
- Began definition of RESTful interfaces for trending data.
- Started to work on a simple GUI for the FCS.
Action Items
We identified the following short-term followup action items:
- Find out who at SLAC is responsible shutter control (Tony)
- Add Carousel GUI classes to subversion (Tony)
- Add messages to status bus (Françoise)
- Listen for messages and add console to GUI (Tony)
- Finish first version of DataServer interfaces (Françoise)
- Add to subversion (Françoise)
- Skype session to discuss interfaces (all)
- Review maven pom file (Françoise)
- Send summary of progress to Jon (Tony)
- Find out from Jon what next steps should be