230 likes | 335 Views
Optimizing XML and Java Workbench for eXchange. NIH eRA Bethesda, September 2005 David RR Webber webberd@od.nih.gov. XML and Java . “XML gives Java something to do!” – Jon Bosak, 1998 Sun Microsystems and original co-chair W3C XML WG. Challenge.
E N D
Optimizing XML and Java Workbench for eXchange NIH eRA Bethesda, September 2005 David RR Webber webberd@od.nih.gov
XML and Java “XML gives Java something to do!” – Jon Bosak, 1998 Sun Microsystems and original co-chair W3C XML WG
Challenge • How do we produce reduced end-to-end development time while also enhancing the quality and reliability of information exchanges with external partners? • How do we leverage the semantic capabilities of XML to optimize development of XML-based business applications for NIH? • What is the SWOT analysis for the current process – where are the bottle-necks / opportunities? • Business rules, Documentation, Development, Testing…
Contents • SWOT of what we do today • XML • Java • Oracle • Architecture of today’s validation services and framework • Future Vision • Business requirements • Available XML tools and techniques • Solution Architecture • Re-using today’s environment to get us to the new future state • Timeline and Adoption Path • Opportunities, Feasibility and Risk Avoidance
SWOT of Today’s Approach Overview of the Architecture, Features, Issues, Performance, Use of XML, Java, Oracle
Today’s Components • XML-based exchange transactions • Java software for business validation rules (SBC framework), XML manipulation (JAXB), database querying and business process control • Requirements definitions in Word docs and UML diagrams • Oracle information storage in SQL tables; Oracle 10g support for XML handling • Messaging Infrastructure – web services and ebXML • Multiple development, test, production containers and code-base releases
Today’s Architecture Messaging Layer – XML transaction delivery / response / errors XML persistence - Sun JAXB library functions Business Validations – Java code and SQL procedures (+XML switches) Framework Validations - (simple XML-driven element checks) SBC – shared business components for methods across all applications Content Persistence – update and storage to Oracle from Java
Validation Philosophy • Use Java and SBC to encode business rules and processing • Ensure that updates to database are with cleansed and valid information only from Java persisted objects • Create centralized shared facility with validation SBC and framework • Do simple management and control of rules with XML configuration files only • External documents in human readable form only – no direct correspondence to Java / XML encoding of business rules – in-ability to verify logical completeness of rules • Context and role handled internally within the Java code, not exposed at XML content layer • Limited support for automated testing facilities and tools
Issues • Process is development resources intensive • How do we reduce the scope and risk of error / time across the whole specify / code / test / deploy process? • Versioning between components and across layers • Currently we are on 1.1 of JAXB, but Sun is on V2.xx and they have dropped 1.1 support; JAXB singleton schema version only – and how to avoid “null pointer” issues? • How do we gracefully migrate to the next release of Oracle and its feature set? • How do we easily publish and share business rules and format structures with our external partners? • How do we leverage XML semantics and make components more re-usable? • How do we support versioning of XML transactions? • Automated testing tools support?
Agility – handling multi-versions • EDI is very weak at versioning and ability to support multi-formats • XML provides self-descriptive information structures • XPath provides ability to reference content by relative paths • Jaxen library provides XPath support for Java • XML by itself should be flexible and allow structure variants without breaking the underlying code implementation • XML Schema by itself provides very weak at logic and version support – therefore needs more robust external rules system • JAXB is driven from schema – so again is version-challenged • Ultimately versioning needs to be at XML element and attribute level, and be tied to partner, role and context
Impacts today – some examples • Cost – three man days – unknown configuration errors • I have exact same error for last three days. My investigation shows that there is NullPointerException in axis.jar. It's coming from gov.grants.apply.WebServices.AgencyIntegrationServices_V1_0.AgencyIntegrationSoapBindingStub in the getApplication method line 785 - java.lang.Object _resp = _call.invoke(new java.lang.Object[] {getApplicationRequest}); • Cost – five man days – executable definitions of requirements • Null pointer in SBC code. Studied the ExchangeServices sub spec and data mapping document to understand the requirements on cost_base/ indirect cost/ budget etc. There is a disconnect between what the document explains and the recent DBCC changes and the SBC code. The logic in SBC does not match what it says in the requirement or the DBCC changes. Investigating this area • Cost - ??? – Team coordination of error numbers – today just a flat Oracle table with sequential numbers – impact very confusing – no ability to track errors by use • Solution – use registry with categories to organize
Impacts –importance of role / context • “Catch-all” coding leads to paralysis – people do not know what the impact of changes are; code performance; example SQL: • SELECT to_char(com_dbms_appl_b_pkg.get_grant_num_func (coms_exch_live_searches.appl_id,'TYP-ACT-PHS-SNUM-YR-SUFX')), to_char(coms_exch_live_searches.PROJECT_TITLE), to_char(coms_exch_live_searches.org_name), to_char(NVL(commons_appl_statuses.descrip, 'ESubmission Errors')), to_char(TO_CHAR(coms_exch_live_searches.APPL_STATUS_DATE,'MM/DD/YYYY')), to_char(coms_exch_live_searches.appl_type_code), to_char(commons_appl_statuses.COMMONS_STATUS_GROUP_CODE), to_char(coms_exch_live_searches.accession_num), to_char(coms_exch_live_searches.appl_id), to_char(coms_exch_live_searches.INIT_ENCUMBRANCE_DATE), to_char(coms_exch_live_searches.fy), to_char(coms_exch_live_searches.council_meeting_date), to_char(TO_CHAR(coms_exch_live_searches.APPL_RECEIPT_DUE_DATE,'MM/DD/YYYY')), to_char(coms_exch_live_searches.snap_indicator_code), to_char(TO_CHAR(coms_exch_live_searches.PROJECT_PERIOD_END_DATE,'MM/DD/YYYY')), to_char(coms_exch_live_searches.EXTENSION_ELIGIBLE_CODE), to_char(coms_exch_live_searches.EXPANDED_AUTHORITIES_CODE), to_char(coms_exch_live_searches.eappl_type_code), to_char(coms_exch_live_searches.ao_person_id), to_char(coms_exch_live_searches.so_person_id), to_char(coms_exch_live_searches.eappl_status_code), to_char(COMMONS_APPL_STATUSES.APPL_STATUS_DESCRIP), to_char(coms_exch_live_searches.last_name||', '||coms_exch_live_searches.first_name||' '||coms_exch_live_searches.mi_name), to_char(coms_exch_live_searches.irg_percentile_num), to_char(coms_exch_live_searches.appl_status_code), to_char(TO_CHAR(coms_exch_live_searches.appl_period_end_date,'MM/DD/YYYY')), to_char(coms_exch_live_searches.priority_score_num), to_char(coms_exch_live_searches.transaction_id), to_char(coms_exch_live_searches.ticket_id), to_char(gm_closeouts_t.closeout_status_code) FROM gm_closeouts_t, commons_appl_statuses, coms_exch_live_searches WHERE 1 = 1 AND GM_CLOSEOUTS_T.APPL_ID (+)= COMS_EXCH_LIVE_SEARCHES.APPL_ID AND COMMONS_APPL_STATUSES.APPL_STATUS_CODE(+) = COMS_EXCH_LIVE_SEARCHES.APPL_STATUS_CODE AND coms_exch_live_searches.PERSON_ID = 2690675 • Will this query still work if we change some data item semantics?
Future Vision XML-driven framework validation services
Factors • Business requirements – • Enable external partners to quickly and easily integrate to NIH eRA • Provide shared view of business rules and processes • Accuracy of processing compared to published rules • Roadmap to SBC and local rule usage • Available XML tools and techniques • Re-using and extending today’s technology environment to get us to the new future state • SBC framework http://inside.era.nih.gov/framework/services.asp • J2EE + XML • Design process - UML, Spreadsheets, Word doc’s. • Solution Architecture
Available Tools and Techniques • XML tools – • Schema • XPath, DOM, SAX, Parser, Dynamic Java calls (to SBC) • Process Scripting (bpm) and Content format scripting (xslt) • Open source validation software components • Registry services • Best Practices experience – use of role, context and XML semantic-driven information processing • Oracle - DBMS_XMLGEN functions and objects • SQL to XML dump tools for test automation • XML production rule capabilities in common tools – Excel, Word, Rational UML, other visual tools
Components of Validation Services • Role and Context – knowing who, why and how is vital for accurate information processing • XML schema does not provide any means to implement this, only the ‘What’ • Context selection of content structures components • again XML schema provides all possible permutations – but the required permutation based on Role and Context • Business context rules • Validations, information content, code lists, semantics • Information Integrity and Process status checks • Lookups direct to database to crosscheck • Information mapping (DBCC) from XPath structure references to data model in Oracle with range and typing
Timeline and Adoption Path Opportunities, Feasibility and Risk Avoidance
Opportunities, Risks, Costs Opportunities, Feasibility and Risk Avoidance
Executive Summary • Incremental approach • Leverages existing investment • Uses technology that is available today • Significantly enhances business service value • Lowers entry barriers for external partners • Reduces operational costs for NIH eRA • Provides significant improvement in time-to-deploy for new systems both intra-agency and extra-agency