510 likes | 605 Views
Automating Test and Validation Services for NIEM Exchanges Workshop. Presenters: David RR Webber Information Architect Oracle Public Sector. Patrick Fendt Principal Technologist Oracle Public Sector.
E N D
Automating Test and ValidationServices for NIEM ExchangesWorkshop Presenters: David RR Webber Information Architect Oracle Public Sector Patrick Fendt Principal Technologist Oracle Public Sector
The following is not intended to outline Oracle general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
Introduction • A key need in working with NIEM IEPDs, is developing examples and matching templates including rules, context, and roles for correctly managing information exchange content between partners. The W3C Schema by themselves are not sufficient. • Learn how to use open source tooling, XPath rules, and the OASIS CAM templates standard to create automated testing tools. • The automated validation engine can also be used in production environments to manage live information exchanges. • Attendees will receive copies of the latest validation engine tools and examples for use in the workshop
Agenda • Part 1 • The XML Validation Framework • XPath Rules Techniques • Code lists and SQL lookups • Rules use cases • Part 2 • Example CAM templates • CAMV validation demonstration • Results handling techniques • Summary • Q & A
XML Validation Framework Architecture and Deployment
CAMV Validation Engine • Standalone XML validator using XPath rules • Context aware and declarative rules approach • Integrated with CAM editor menus for instant testing • External code list and SQL table lookup support • Callable via Spring framework or Java API • Configurable error levels – error, warning • Java error results object returned • Embedded validation results attributes in XML results
CAMV CAM Editor XSLT CAM Editor / CAMV Environment XML Test Instance Reports XML Validation Result CAM Editor CAM template
CAMV XSLT CAMV / ANT Script Environment CAM template Reports CAMV Control Script XML XML Test Instances ANT 2 XML Validation Results 1
CAMV Test Control Script XML <camvTestSuite> <testCase> <Example-Test-v19-3> <cxxfile>Test-Template-v19.cxx</cxxfile> <xmlfile>Test-Instance-v19-3.xml</xmlfile> <output>Test-Results-v19-3-out.xml</output> <debug>true</debug> <inlineErrors>true</inlineErrors> <parameters> <abc>Param1</abc> <cde>Param2</cde> </parameters> </Example-Test-v19-3> </testCase> </camvTestSuite> Test case name Validation Template Test XML instance Results output
Linux GTK ANT Configuration • Linux distributions (e.g. Ubuntu) has ANT pre-installed in /usr/share/ant/lib • Download Ant-contrib from • http://ant-contrib.sourceforge.net/ • Copy ant-contrib jar file to /lib directory inside ANT installation
Mac OS ANT Configuration • Mac OS X 1.7+ “Lion” comes pre-installed - use command : ant –version and it will self-configure • Mac OS X 1.6 and earlier – need to install “Xcode” development software first • Download Ant-contrib from • http://ant-contrib.sourceforge.net/ • Copy ant-contrib jar file to /lib directory inside ANT installation
ANT – Windows configuration • Download ANT from • http://ant.apache.org • Download Ant-contrib from • http://ant-contrib.sourceforge.net/ • Copy ant-contrib jar file to /lib directory inside ANT installation • Set the ANT_HOME environment variable to the directory where you installed ANT • Add %ANT_HOME%/bin folder to executable path
Running CAMV with ANT • Go to CAMV location on Sourceforge • http://www.cameditor.org/#CAMV_Testing • Download CAMV release JAR and Test example ZIP • Unpack test example from ZIP and put CAMV jar into folder • Go to the command line (run cmd) • Switch to folder where CAMV test suite is located • ANT –f camv-test.xml runAll • Output is in folder called camvTest\results
XPath Rules Techniques Quick Syntax Primer Controlling Scope, Context, Evaluation Dynamic Structure Components Useful XPath Resources
XPath Syntax Primer • XPath is a simple assertion language where expressions reference components hierarchically within an XML instance structure – e.g. • /animals/canines/domestic/dogs/poodle[1] • /animals/canines/domestic/* • CAMV uses the XPath v2.0 Java library • In CAM templates XPath is used extensively to provide rules and content details for XML structure components
CAM templates and XPath expressions • Within a CAM template XPath expressions are found in the <as:BusinessUseContext> section of the template.
Rules Use Cases Typical Business Needs Quick Examples
Standard Pattern for Business Rules • Claim – An English statement of a business rule that conveys its meaning.Example: A Chapter MUST have a Title. • Test – A formal statement of a business rule that can be parsed and processed by machine.Example: <Assert test="count(para) >=1"> • Diagnostic – An English statement that identifies and explains what happened or was found when a Test fails.Example: Chapter "X" does not have a Title.
Controlling Scope and Context Condition controls if and when the content rule action applies Condition can control structure as well; optional, mandatory, exclude Condition can reference different component(s) for contextual rule actions
Some more examples Business Rule: Items with color attributes don't need a tray number—the color is sufficient for picking the item: <as:constraint condition="exists(//Item/@color)" action="makeOptional(//Item/TrayNumber)" /> Business Rule: If order weight exceeds 25 kg, purchase order must specify a freight carrier: <as:constraint condition="//Item/@weight > 25" action="makeMandatory(//Item/FreightHandler)"> Using XPath axis referencing (when things are not adjacent in hierarchy): <as:constraint condition="exists(ancestor::Item/@color)" action="makeOptional(//Item/TrayNumber)" /> * Excerpted from Michael Sorens DEVX CAM article examples
Useful XPath Resources • Michael Sorens article on using CAM from DEVX.com • http://www.devx.com/xml/Article/41150 • Martin Roberts – tutorial on writing CAM rules • http://merryflame.co.uk/jcam/site/tutorials/CAMTemplateBasics.htm • XPath tutorial resources • Search on XPath tutorial • Books available • Tools – XPath expression constructors
Code Lists and SQL Lookups Introduction to CAM code lists Advantages Tools and Hints
Code lists • CAM lookup() function allows referencing to external XML lists of values • Can replace use of restrictValues() static lists • Coming soon - CAM lookup() function can reference SQL table for dynamic value checking • Where to get code lists? • Import XSD enumeration schema into CAM lookup lists • Convert UBL Genericode into CAM lookup lists • Dump from database into lookup list XML format
CAM Code list XML format Code list name Code value Textual value
Combining Rules and Code lists • Real power of code lists and CAM – ability to select code list values based on XPath rule criteria to handle different partner configurations, versioning and cross-table validations • e.g. Ford / Mustang | Chevy / Corvette • Message version id = 1.6 – use code list XYZ-1-6
Code lists examples • Load lookup list XML into CAM editor • Assign lookup() rule to XML component • Coming soon - for SQL lookups – need to define connectivity to database and the SQL query to perform
Code Lists Summary • Lookups can be to external XML file instances • Simple XML format for optimized performance and readability • Dynamic runtime control via XPath rules to select lists to be applied • Lookup can reference SQL statement for database content checking
Part 2 Example CAM templates CAMV validation demonstration Results handling techniques Summary
Example CAM Templates Examples Reviewed Quick walk through of important details
Experimental SAR Examples • Two test example templates and XML instances: • Baseline SAR with just structure and content usage rules, schema parlance “cardinality, facets and enumerations” • Baseline SAR advanced – logical business rules added to check consistency of information and structure components • Each test set contains examples that pass and those that fail depending on the template validation applied * SAR – Suspicious Activity Report NIEM exchange
CAM Templates Overview • Consists of 4 functional sections: • Header declares properties and parameters for the CAM process to reference • AssemblyStructure captures the business information exchange structures • BusinessUseContextprovides the rules to apply during validation • Extensionpoints to the annotations and external lookup tables
Experimental SAR Overview • Areas of Interest: • Drugs • Fraud • Gangs • Internet • Pornography • Property • Community • Weapons/Chemicals • Prescriptions • Travel/Immigration • Terrorism * SAR – Suspicious Activity Report
CAMV Validation Demonstration Illustrative examples – pass, fail, warnings Default structure handling Data type and Content checking Cross-field validation rules
Example Advanced Rules Business Rule: Providing warning if PurgeDate is earlier than PurgeReviewDate <as:constraintcondition="//sbl:PrivacyDetails/sbl:PrivacyPurgeDate < //sbl:PrivacyDetails/sbl:PrivacyPurgeReviewDate"action="printMessage(//sbl:PrivacyDetails/sbl:PrivacyPurgeReviewDate,Warning: Review date not before purge date)"><as:annotation/></as:constraint> Business Rule: Location must contain an address or a highway or coordinate set <as:constraintcondition="not(./nc:LocationAddress) and(not(./nc:LocationHighway)) and(not(./nc:LocationTwoDimensionalGeographicCoordinate))"action="printMessage(//j:TargetLocation/sbl:Location,Empty Location information)"><as:annotation><as:documentation type="documentation">Example of advanced rule</as:documentation></as:annotation></as:constraint>
Default Structure Handling By default all structure components are required and string content Content Masks Structure control
ANT script configuration Directory Control file
Results Handling Techniques XSLT script post-processing XML Diff considerations Regression Testing with CAMV Middleware Integration
Default XSLT rendering of results HTML output Finds CAM validation results attributes Formats and outputs error details
Post-Processing Tips and Tricks • XSLT post-processing not only for HTML reporting • Create response error messaging directly from CAMV output • Create receipt notification directly from CAMV output • Can use simple DIFF to compare generic HTML report output to detect regression test changes • Rule based checking better than strict result content testing • Java API and Spring supports direct integration of CAMV
Summary Review Next Steps Future enhancements Resources and Links
Review and Value Proposition • Testing and verification of NIEM exchange XML examples • SQL database lookups and flexible code lists handling • Business rule checking • Post-processing options and reporting with XSLT scripts • Regression testing with batch processing • Flexible deployment of XML validation framework • Integration via Spring API to middleware
What are we working on? • Improvements • “CAM for web services” – currently exchange-centric • Enhancing ANT capabilities and soapUI integration • New features • Dictionary integration with Domain Update Tool • Evaluation tools for dictionaries and components • Enhancing XML example generation with synthetic data
CAMV Summary • Open source, open public standards based, cross-platform deployment written using Java • Uses Java APIs, Spring API, JDOM, etc. • Validation features: • XPath V2.0 support • Looks ups • 20 built-in functions • Reporting • Embedded CAMERROR, CAMWARN tags • Spring API • Optional sysout log