Title: Visual DCT for IRMIS and pvData (Version 3)
 1Visual DCT for IRMIS and pvData(Version 3)
Janez Golob, Jernej Kamenik, Rok Šabjan, Matej 
Šekoranja rok.sabjan_at_cosylab.com EPICS Meeting, 
Aix-en-Provence, 2010-06-02 
 2VDCT  a complete rewrite
- Motivation and Goals 
- Architecture 
- Technology Choices 
- Current Status
3Motivation
- Dramatic changes in EPICS 
- More options for persistence (IRMIS) 
- Different data model (pvData)
4Nobody wants to edit this!
ltstructure structureName  "pulseScheduleType"gt 
ltscalar name  "ID" scalarType  "string"/gt 
ltscalar name  "formatVersion" scalarType  
"string"/gt ltscalar name  "packageType" 
scalarType  "string"/gt ltstructure name  
"pulseFeature" extends  "pulseFeatureType"/gt 
ltstructure name  "generalParameters" extends  
"generalParametersType"/gt ltstructure name  
"plantSystemConfigurationParameters" 
extends  "plantSystemConfigurationParametersType"
/gt lt!-- TODO structure name  
"segmentsSequence" extends  "segmentsSequenceType
"/--gt lt/structuregt   ltstructure structureName  
"pulseFeatureType"gt ltstructure name  
"scheduleStatus" extends  "pulseScheduleStatusTyp
e"/gt ltstructure name  "authors" extends  
"signatoryType"/gt lt!-- TODO not an array - 
authorsType --gt ltstructure name  "approvers" 
extends  "signatoryType"/gt lt!-- TODO not an 
array - approversType --gt ltstructure name  
"executionRecords" extends  "executionRecordType"
/gt lt/structuregt 
 5Why re-write?
- 9-year old architecture does not allow big 
 changes
- Spaghetti code to be avoided 
- Future extensions or integrations possible 
- IRMIS 
- CSS? 
- SDD (ITER)? 
6Goals of VDCT rewrite
- Immediate (visible) 
- Visual database configuration tool with full 
 EPICS v4 compliance (pvData)
- Allow for/support other related IRMIS control 
 system views (cabling, etc..)
- Retain if not enhance the existing functionality 
 of VDCT for EPICS v3.
- CapFast styles and symbols 
- Behind the stage 
- Clean architecture (model and GUI more separated) 
- Flexible graphics based on proven technologies 
7Modular Architecture
- Engineer drawing style tool 
- Spreadsheet editing tool 
- Hierarchical Tree view 
- Model (EPICS v3, pvData) 
- defines editing, selection, structure rules, 
 Actions
- contains Nodes, Edges, Primitives, Properties 
- Persistence tool convertis the edited and created 
 model designs into (and from) well defined
 formats (EPICS v3,4, IRMIS) and storing (reading)
 them into (from) local files or remote databases.
- Finally, the Application framework is responsible 
 for interfacing the various aspects around the
 possibly multiple model designs (or aspects of
 one) together into a coherent stand-alone
 application.
8Technology choices
- Programming language Java 1.6. 
- Drawing tool framework Netbeans Visual library 
- (decided after a thorough comparison with Eclipse 
 Graphical Editing Framework)
9Footnote VL vs. GEF
- If present, features are marked as 
- Outstanding support is marked with 
10Status of VDCT3 EPICS 3 Model 
 11Spreadsheet Editor for EPICS 3 
 12Status of VDCT3 EPICS 4 Model 
 13EPICS 4 Hierarchical View 
 14Status of VDCT3 (1/3)
- Editing 
- Copy/Cut/Paste 
- Mutliple Undo/Redo 
- Drag  Drop moving of (multiple) nodes 
- Property inspector (grouping/editing by type) 
- naming convention specification  validation 
- Keyboard accelerator key shortcuts 
- General features 
- Drawing view 
- Spreadsheet view 
- Hieararchy view 
- Local configuration support 
- Rendering 
- Custom widgets per module, customize widget 
 colors
- drawing of graphic primitives 
- bird view magnification on cursor 
- zoom all, select all 
- auto de-cluttering of widgets on canvas 
- snap-to-grid 
- print canvas
15Status of VDCT3 (2/3)
- pvData support 
- I/O 
- open file 
- import file into existing model 
- save/save as file 
- Editing 
- static includes (edit, inspect) 
- new record (by type) 
- add/remove/set fields (scalar, structure) 
- add/remove links 
- view/edit substructures (hierarchy support) 
- edit/inspect includes
16Status of VDCT3 (3/3)
- EPICSv3 and IRMIS support 
- I/O 
- open file 
- import file into existing model 
- save/save as file 
- Rendering 
- integration of CapFast epics symbol library 
- Editing 
- handling of dbd includes 
- new record (by type) 
- set/unset fields 
- add/remove links 
- record morphing support 
- IRMIS integration 
- open single IOC from remote db location
17VDCT3 future?
- Complete VDCT 2.6 feature set 
- command-line capabilities 
- plugin support 
- DB template support still rudimentary 
- Complete IRMIS integration 
- browse available IOCs 
- write modifications to remote PVs 
- interface to other IRMIS layers (cabling, etc.) 
- Support for editing pvData structure definitions 
- Integration into CSS? 
- Interface to other configuration data
18Conclusions
- VisualDCT (3.0-beta) is available for download on 
 sourceforge
- Be careful how to start VisualDCT with 
 appropriate model (see examples)
- Use it and send feedback! 
- Use cases and best practices are yet to be 
 defined (pvData)
- Thanks to Bob Dalesio and his NSLS2 team!
https//sourceforge.net/projects/visualdct/ 
 19Page intentionally left blank 
 20Model Design (1/2)
- Model (EPICS v3, pvData) 
- defines editing, selection, structure rules, 
 Actions
- contains Nodes, Edges, Primitives, Properties 
- Node (Record, Structure) 
- contains Pins, Properties 
- Pin (Field) 
- source/sink of Edges 
- contains Properties 
- Edge (Link) 
- connects Pins 
- contains Properties
Model
Node
Pin
Pin
Edge
Node
Pin
Pin 
 21Model Design (2/2)
- Primitive (text (html), geom. object) 
- visual object with Properties 
- Property 
- container of meta information 
- linked by type to editing rules, visual editors
22Visual Design
- ModelScene 
- Synchronizes model and visualization 
 (event-driven)
- Pin/NodeWidget 
-  specifies rendering rules of Node/Pin in Scene 
 depending on state
- Widget Factory 
- creates Widgets for Nodes/Pins/Edges 
- specifies global rendering rules for Scene
23Application Design
- Module 
- specifies Model Widget Factory Persistence 
 layer
- determined by configuration 
- 3rd party Module implementations can be 
 seamlessly interfaced and included into the
 application at startup
- Model (Structure, Rules, Actions) 
- Rendering (Widgets, Connection routing) 
- Persistence (Filesystem, Remote, Database)
24Application Design  Implementation Details
- Swing GUI support for applets, webstart, custom 
 LF
- Java2D printing 
- java.awt.datatransfer system-wide Copy/Paste 
- Properties persistence of user configuration and 
 settings
- Action chains unlimited Undo/Redo 
- java.util.concurrent model/GUI concurrency
25Big Changes in EPICS DB Design
- Visual database creating and editing tool for 
 EPICS v4 (pvData)
- Support for arbitrary hierarchies in both 
 templates and primitive types
- Capability to interact with IRMIS RDB 
- The information on encapsulation, cabling, 
 housing is contained in a single descriptive
 database
- Enables linking of various control system aspects 
 of the same component
26VisualDCT Today
- visual configuration tool for EPICS 
- written in Java (platform independent) 
- open source product 
- designed for EPICS version 3 
- simple electronic drawing style application
27Existing Features (VDCT 2.6)
- Hierarchies support 
- Templates support 
- Debug plugins (JCA/JIOC) 
- CapFast conversion tool 
- Channel Archiver /Alarm Handler configuration 
 plugins
- Spreadsheet view (for large databases)