Diirt status data integration in real time Gabriele Carcassi.

Slides:



Advertisements
Similar presentations
Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit.
Advertisements

Control System Studio (CSS)
Jenkins User Conference San Francisco, Sept #jenkinsconf Business Process Model & Notation (BPMN) Workflows in Jenkins Max Spring Cisco
CSS: where do we want to go? Gabriele Carcassi Contributions from: Gabriele Carcassi, Kunal Shroff – BNL Jan Hatje – DESY Kay Kasemir – ORNL.
CSS Developments at BNL / NSLS-II Gabriele Carcassi Feb
AccelUtils Gabriele Carcassi, Kunal Shroff – BNL Eric Berryman, Robert Gaul – MSU Ralph Lange – HZB.
Integrating SOA and the Application Development Framework Shaun O’Brien Principal Product Manager – Oracle JDeveloper / ADF.
CS CS 5150 Software Engineering Lecture 13 System Architecture and Design 1.
User Group 2015 Version 5 Features & Infrastructure Enhancements.
Windows.Net Programming Series Preview. Course Schedule CourseDate Microsoft.Net Fundamentals 01/13/2014 Microsoft Windows/Web Fundamentals 01/20/2014.
1. 2 What’s New in NetBeans IDE What is NetBeans IDE?  Ready to use out of the box  Support for latest Java specifications & standards  Other.
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
WaveMaker Visual AJAX Studio 4.0 Training Studio Overview.
Distributed Software evelopment Adrien Olivier(AO) Dominik Rojković(DR) Hassan Aziz Khan(HSK) Petar Butković(PB) Petar Dučić(PD) Rashid Khan(RK)
Apache Chemistry face-to-face meeting April 2010.
Pittsburgh Java User Group– Dec Java PureFaces: A JSF Framework Extension.
Database System Concepts and Architecture Lecture # 3 22 June 2012 National University of Computer and Emerging Sciences.
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
WorkPlace Pro Utilities.
Overview of Previous Lesson(s) Over View  ASP.NET Pages  Modular in nature and divided into the core sections  Page directives  Code Section  Page.
Tutorial 1 Getting Started with Adobe Dreamweaver CS3
Tools Strategy for BNL and MSU Gabriele Carcassi - BNL Eric Berryman - MSU.
Developments in CS-Studio, Pvmanager and Graphene Gabriele Carcassi.
COLD FUSION Deepak Sethi. What is it…. Cold fusion is a complete web application server mainly used for developing e-business applications. It allows.
Data integration in real time (pvmanager, graphene and all of that) Gabriele Carcassi.
Web Programming: Client/Server Applications Server sends the web pages to the client. –built into Visual Studio for development purposes Client displays.
Fundamentals of Database Chapter 7 Database Technologies.
LiveCycle Data Services Introduction Part 2. Part 2? This is the second in our series on LiveCycle Data Services. If you missed our first presentation,
Learning objectives By the end of this lecture you should be able to:  have a well-earned rest! Ch 24 Beyond the second semester.
Reviewing Recent ICSE Proceedings For:.  Defining and Continuous Checking of Structural Program Dependencies  Automatic Inference of Structural Changes.
National Center for Supercomputing Applications NCSA OPIE Presentation November 2000.
The Network Performance Advisor J. W. Ferguson NLANR/DAST & NCSA.
Presentation. Recap A multi layer architecture powered by Spring Framework, ExtJS, Spring Security and Hibernate. Taken advantage of Spring’s multi layer.
Data Management BIRN supports data intensive activities including: – Imaging, Microscopy, Genomics, Time Series, Analytics and more… BIRN utilities scale:
WEB BASED DATA TRANSFORMATION USING XML, JAVA Group members: Darius Balarashti & Matt Smith.
Jan Hatje, DESY CSS ITER March 2009: Technology and Interfaces XFEL The European X-Ray Laser Project X-Ray Free-Electron Laser 1 CSS – Control.
© 2006 IBM Corporation Agile Planning Web UI. © 2006 IBM Corporation Agenda  Overview of APT Web UI  Current Issues  Required Infrastructure  API.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Managed by UT-Battelle for the Department of Energy Kay Kasemir ORNL/SNS Jan Control System Studio, CSS Overview.
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 14 Database Connectivity and Web Technologies.
1 MSCS 237 Overview of web technologies (A specific type of distributed systems)
.  A multi layer architecture powered by Spring Framework, ExtJS, Spring Security and Hibernate.  Taken advantage of Spring’s multi layer injection.
CSS – Control System Studio
What's New in Kinetic Calendar 2.0 Jack Boespflug Kinetic Data.
Introduction to JavaScript CS101 Introduction to Computing.
Web Development 101 Presented by John Valance
DIIRT distribution services: Web PODS - PVA PODS Gabriele Carcassi.
ASP.NET in Definition: 1.ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites,
Preface IIntroduction Objectives I-2 Course Overview I-3 1Oracle Application Development Framework Objectives 1-2 J2EE Platform 1-3 Benefits of the J2EE.
Jan Hatje, DESY CSS GSI Feb. 2009: Technology and Interfaces XFEL The European X-Ray Laser Project X-Ray Free-Electron Laser 1 CSS – Control.
Presentation.
ASP-2-1 SERVER AND CLIENT SIDE SCRITPING Colorado Technical University IT420 Tim Peterson.
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 14 Database Connectivity and Web Technologies.
Applications Kay Kasemir ORNL/SNS Using Information and pictures from Matthias Clausen, Jan Hatje, and Helge Rickens (DESY) October 2007.
Presentation Title Subtitle DSpace UI Prototype 7 Spring, Angular.js, and the DSpace REST API.
Core Java Client Technologies Gabriele Carcassi - BNL.
1 CSC160 Chapter 1: Introduction to JavaScript Chapter 2: Placing JavaScript in an HTML File.
Introduction to ASP.NET development. Background ASP released in 1996 ASP supported for a minimum 10 years from Windows 8 release ASP.Net 1.0 released.
Excel Services Displays all or parts of interactive Excel worksheets in the browser –Excel “publish” feature with optional parameters defined in worksheet.
ChannelFinder & CSS Kunal Shroff EPICS Fall Collaboration Meeting, October 2011 PSI.
1 Using jQuery JavaScript & jQuery the missing manual (Second Edition)
AccelUtils Gabriele Carcassi, Kunal Shroff – BNL
The Share Widget Library
z/Ware 2.0 Technical Overview
…and web frameworks in general
Control System Studio (CSS)
…and web frameworks in general
Mark Quirk Head of Technology Developer & Platform Group
Plug-In Architecture Pattern
Presentation transcript:

Diirt status data integration in real time Gabriele Carcassi

diirt: data integration in real-time Connection/data processing layer for general purpose Java clients – Includes pvmanager/graphene/… Main two clients: – CS-Studio (Java based Eclipse RCP) – WebPODS (Web-socket + JSON “gateway”)

Request/response Publish/subscribe pvmanager Ch Access Processing Visualization vTypes Data Definition Aggregation formula graphene Data integration in real time (Diirt) architecture BOYWeb-pods (aka web gateway) DB (jdbc) Data serialization/conversion csv datasources supportservices support list CS-Studio (general purpose clients)Pods (Protocol Oriented Distribution Service) PV AccessWeb PodsFileLocal…PV Access Cmd line (exec) Channel Finder … JSON Probe…

Funding situation Funding at BNL was drastically cut – Closed what I could – Cleanly dropped the rest I’ll report on each area – Current state – What we wanted to do but won’t get done

Overall project General improvements – All projects in a single repository Easier to move code where it belongs Easier to make releases (Maven lesson learnt: change version in feature branches) – All elements configurable through a single configuration directory structure DIIRT_HOME – Documentation review (Wiki for user documentation, javadocs for developer documentation, documented source code examples in the repository)

VTypes Review types with Java 8 in mind – Use javax.time – Support for unsigned integers – Reorganize type hierarchy to overcome some implementation and usage issues – Reorganize utility methods within the type hierarchy (instead of utility classes) Work was started, currently unfunded Frozen in org.diirt.vtype.next package

VTypes Extract VType conversions from JCA/PVA support – Allow to use same exact type conversion for those who do not need/want the whole stack Currently unfunded

Datasources (pvmanager) Final review to the datasource spec – Generalize type conversion for writes (so that all datasources behave the same) – Use Java 8 standard classes where possible – Generalize caches from sources of external data (i.e. better support for archive data, better link between services, …) – Finalized documentation and examples for writing datasources – Performance improvements – Streamline error handling (i.e. do more work in the framework, clients are simpler, error handling more homogeneous) Currently unfunded

Archiver integration Client side temporal cache that can be filled by different archiver sources and real-time updates Under development by ITER.

Services Final review to the services spec – Uses Java 8 standard classes for callback – Defines order for arguments and results – Allows both synch and asynch execution – Allows both synch and asynch implementation – Automatically matches/wraps execution with implementation (e.g. asynch execution on synch implementation) – Finalized documentation and examples No obvious functionality missing: this part can be considered done

public static void main(String[] args) { System.out.println("Locating service method..."); ServiceMethod method = ServiceRegistry.getDefault().findServiceMethod("math/add"); System.out.println("Service method found: " + method); System.out.println("Preparing arguments..."); Map arguments = new HashMap<>(); arguments.put("arg1", ValueFactory.newVDouble(1.0)); arguments.put("arg2", ValueFactory.newVDouble(2.0)); System.out.println("Arguments: " + arguments); System.out.println("Executing service..."); Map result = method.executeSync(arguments); System.out.println("Result: " + result); } Sync execution example Output Locating service method... Service method found: add(VNumber arg1, VNumber arg2): VNumber result Preparing arguments... Arguments: {arg2=VDouble[2.0, 2015/03/25 09:35:09.243], arg1=VDouble[1.0, 2015/03/25 09:35:09.229]} Executing service... Result: {result=VDouble[3.0, 2015/03/25 09:35:09.321]}

public static void main(String[] args) { System.out.println("Locating service method..."); ServiceMethod method = ServiceRegistry.getDefault().findServiceMethod("math/add"); System.out.println("Service method found: " + method); System.out.println("Preparing arguments..."); Map arguments = new HashMap<>(); arguments.put("arg1", ValueFactory.newVDouble(1.0)); arguments.put("arg2", ValueFactory.newVDouble(2.0)); System.out.println("Arguments: " + arguments); System.out.println("Executing service..."); method.executeAsync(arguments, result -> { System.out.println("Result: " + result); }, ex -> { ex.printStackTrace(); }); } Locating service method... Service method found: add(VNumber arg1, VNumber arg2): VNumber result Preparing arguments... Arguments: {arg2=VDouble[2.0, 2015/03/25 09:35:09.243], arg1=VDouble[1.0, 2015/03/25 09:35:09.229]} Executing service... Result: {result=VDouble[3.0, 2015/03/25 09:35:09.321]} Async execution example Output

Services Supported services: – v4 PVAccess services – ChannelFinder – Database queries – Command-line execution Plenty of copy and paste examples

Formula Final review to the function spec and parser – Reorganized implementation, more consistent and reusable – Parser generates Abstract Syntax Tree (AST) AST can be manipulated and then converted to the actual function – Finalized documentation and examples Current functionality is done

Formula

Other enhancements – Writeable formulas – Passive scanning for formula (performance improvement) – User defined functions (e.g. site specific function to handle custom v4 PVStructure, naming conventions, …) Currently unfunded

Graphene Contributions from students – Improvements to intensity graph color map Import color map from Matlab Support for both relative and absolute value color maps (e.g. RED is at 10% of the range, or at value 25) – Time axis and plot Supports automatic time scale (e.g. sec -> min -> hours -> day -> week -> month -> year) Support for daylight savings time, different time zones – Preliminary JavaFX components based on the graphs Student work finished Other work needed to integrate new features

HSVRadian.XML: <!-- Varies the hue component of the HSV color model. The map is useful for displaying periodic functions, and expects the value to be in radians. --> JET.XML:

JavaFX line graph integration:

JavaFX There is a general desire to develop widgets and tools in JavaFX – Can be used within SWT/Eclipse/CS-Studio – More full featured than SWT – Can be developed/tested/used outside Eclipse – Allows testing contribution to diirt outside of CS- Studio Work was started, currently unfunded

JavaFX What is done – Almost all basic tools re-implemented and expanded in JavaFX – Determined best approach for JavaFX integration general purpose binding between channel updates and JavaFX properties

JavaFX Probe Browseable event history

JavaFX Service probe Autogenerates field based on service data Currently handles only scalar strings and numbers

JavaFX Formula Function Browser

JavaFX Service Browser

JavaFX What needs to be done – Set of general purpose JavaFX widgets that understand VTypes and channels/formula/services Can be used in standalone Java UI and in Eclipse/CS-Studio Can be used to create BOY widgets Ideally, use the same definitions for JavaFX/BOY and Web – Finalize Graphene JavaFX widgets – Finalize toolbox Work was started, currently unfunded

CS-Studio CS-Studio integration (what’s done) – Renaming packages – Jars are OSGi bundles (no extra build step) – Bridge from Java standard dependency injection (ServiceLoader) to OSGi implemented – Proof of concept for updating CS-Studio codebase to new version These items are done

CS-Studio CS-Studio integration (what’s not done) – Finish the integration – Testing – Replace old SWT application with JavaFX substitutes Items that were on my horizon – Integrate example BOY screens – BOY JavaFX widgets – Simplify error reporting for connection problems (e.g. collect pvmanager/caj/pva logs to report to developers) Work currently unfunded

WebPODS Web gateway based on WebSocket + JSON and pure HTML/CSS widgets Main benefits: – Uses web standards (any web client in any language) – Widgets can be configured through standard CSS – Data access outside of control network (possibly WAN) – Web pages do not need to live on the same server where the gateway is

WebPODS Specs available on the WIKI: – Protocol-Specification-v1 Protocol-Specification-v1 – serialization-for-vTypes-v1 serialization-for-vTypes-v1

Chrome extension: Simple Web Socket Client

WebPODS when installed

HTML Probe (Danielle Connolly, UMich)

Text monitor examples

LED examples

WebPODS Specify server location Adding text-monitor Adding led Specify color for “LOW” enum value

Using CS-Studio off site through Web Pods

Web Pods server configuration ~]# more.diirt/pods/web/mappings.xml Access security planned, not yet implemented Use wss (like https) for authentication Use username/role/unix group/host for authorization Be careful not to expose too much

Web Pods What’s done: – Version 1 specification done and implemented – Preliminary Javascript API – Finalized HTML/CSS compliant widgets (text-monitor, led, table, bubble-graph) – Being used in production at UMich for 6 months under light load. No downtime. – Client-side Java API – Client-side and server-side formulas What needs to be done: – More widgets – Client-side security (server side is implemented) – Load tests – Review Javascript API – Client-side reconnected and ping/pong What could be done: – Investigate binary protocols (for large data or pre-calculated graphs) – Make single widget spec for HTML and JavaFX widgets