CAM - Content Assembly Mechanism - toolkit
The CAM editor is the leading open source toolkit for building and deploying information exchanges and Open Data APIs using XML or JSON with SQL. The CAM toolkit provides an intuitive approach using a WYSIWYG visual structure editor to dramatically simplify the process of developing and managing XML business information exchanges and schema. This gives developers control, insights and analysis that are needed for consistent, interoperable and reliable exchanges.
The CAM toolkit also automates the tasks of generating supporting artifacts such as business documentation, Pencil forms mockups, SQL table layouts, SAIL user interface forms, cross-reference spreadsheets, models, XML Schema, JAXB data bindings and test XML instances generation including SQL data extracts.
The OASIS CAM is a public open standard. The CAM editor can import, analyze and refactor existing exchange XML Schema for better compatibility and use in middleware, including generating XML Schema. Schema generated can be in simple generic syntax or choose from model compliant styles consistent with enterprise integration patterns.
The full XML exchange structure, rules and documentation details are stored in the OASIS CAM standard XML template format. These OASIS CAM standard XML validation templates can include use of content models, code lists, direct SQL table lookups, SQL table data mappings, and business logic expressed as XPath rules with warnings and error flagging that together provide a comprehensive XML exchange handling framework.
The new Open-XDX open data capabilities use code-free techniques in combination with CAM templates and visual drag and drop to rapidly design your XML exchange with SQL DBMappings. From there Open-XDX will automatically generate all the SQL for you, read the database data, generate and populate the valid XML output, and filter with parameters. You can build either Query/Response or Publish/Subscribe services from existing SQL data stores to XML literally in minutes.
Compatible with the NIEM approach for information exchange integration with extensible profiles for NIEM, OASIS and more. Also supports Compliance and Interoperability Testing environment development (CITE) with use of Test Suites and the CAMV validation engine.
The CAM toolkit supports the use of Canonical Model dictionary components with visual Drag and Drop designing. Also provides a set of tools for harvesting and generating canonical dictionaries from existing XML Schema libraries, SQL data stores or enterprise data modelling tools. The CAM approach enables core component message assembly from canonical dictionary collections.
The standalone CAMV validation engine, written in Java, implements an XML and JSON validation framework using the OASIS CAM specification as the foundation. Also designed for integration with Service-Oriented Architecture (SOA), the CAMV XML validation framework supports use with other message based integration patterns such as Enterprise Application Integration (EAI), LEXS (Logical Entity Exchange System) and ebXML messaging systems.
Join what more than 500+ users are downloading each week. stats
Uses of CAM
Example uses for the CAM toolkit include (showcase site with live examples VerifyXML.org):
An 8 minute tutorial video NEW is available that introduces a selection of these functional concepts in building a XML exchange.
Learn how the IEEE/P1622, OASIS and NIST work on XML for supporting UOCAVA voting leveraged the CAM tools.
Also see our NEW Sourceforge project podcast for insights and background to our project.
The current release of the CAM toolkit provides the following functionality:
Also - you can see the mind map of the full menu structure of the CAM editor toolkit here:
See below for information on the CAMV test engine and test suites.
Starting with the CAM v3.0 release there are now a host of features for using JSON with the CAM editor. There is a JSON template type and wizard to allow creating templates from JSON. Then the CAMV validation engine now supports JSON input and handling and validation. The Open-XDX tools also combine with StAXON Java tools for JSON to allow generating JSON content for Open Data APIs.
We have documented applicable JSON notes throughout the resource topics here and there is a quick video demonstration for using JSON with the CAM editor.
Open Data APIs and Open-XDX
Starting with the CAM v2.3 release we have introduced significant new functionality for working with SQL data stores. We have created resources to help you understand and use these features.
These include short videos on YouTube:
Then for a more detailed understanding of Open-XDX there is the Quick Guide available.
And also a short slideshow of details about Open-XDX technology here.
We have created a sampler pack – Patient Details Reporting with a complete set of working components. This pack contains the SQL, CAM templates and Open-XDX mappings shown in the Quick 5 Minute demonstration – and contains a README file that instructs you on replicating the demonstration on your own system.
We will be adding more example packs in the near future - check here for the latest ones now including PMIX and ULEXS examples.
More samplers packs are available on VerifyXML.org also.
JDBC with CAM Editor and Open-XDX Hints and Tips
For SQL Server ensure that the version of the JDBC driver used matches the version needed by the release of SQL Server. We have verified this works for CAM Editor on both Windows 7 and Windows XP clients.
The install and setup guide can be found in the JDBC resources folder
Note: you do need to specify integratedSecurity=true in your JDBC connection URL e.g.
And also another option is to provide the user credential in the JDBC URL like:
For more details see: http://msdn.microsoft.com/en-us/library/ms378428.aspx
When a large number of tables are present in the SQL Server database then in order to improve the overall performance create a proxy user account that will have just read only access to those limited number of tables required for the data mapping. This is advisable from both a security stance, and limiting the number of tables will be easier to work with and provide better performance and response times.
For IBM DB2 download the appropriate driver from this site: http://www-01.ibm.com/support/docview.wss?rs=4020&uid=swg27016878
The connection format for DB2 follows this syntax example:
It is also important to ensure the DB2 database is correctly configured to permit JDBC data accessing.
Instructions are available here: http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.apdv.java.doc%2Fsrc%2Ftpc%2Fimjcc_cjvjcdig.html
Known DB2 JDBC issues page: http://www-01.ibm.com/support/docview.wss?uid=swg21358484
Loading SQL data from text CSV sources
As part of the Open-XDX initiative we have developed an XSLT utility that can take a CSV file from a SQL Server table or Excel spreadsheet and converts that into valid CREATE TABLE and INSERT VALUES SQL statements. The utility is available from our Miscellaneous file downloads location. More information about the Text to SQL migration utility can be found in the associated Blog posting.
Using Open-XDX with JSON
These resources allow you to see how we are using the StAXON tools in combination with Open-XDX to support JSON handling.
Master Data Management
Master Data Management (MDM) support allows creation of data models, data store tables, dictionaries and middleware binds.
For a full description see the introductory MDM manual available from our project files repository.
Hibernate JPA Bindings
Generating Hibernate JPA is now supported from the Export to XSD menu options. The generate assumes that the root element in the CAM template is the database name, and then the child element(s) under that are for each table and then columns - e.g.
Customers CustomerID CustomerName Orders OrderID OrderDate
and so on. Tables can be nested for Parent / Child relations and the KeyRef annotation used to denote foreign keys.
In addition the structures @ref attribute can be used to denote specific tooling (default if blank is hibernate.jpa) - so for example for Appian BPM tool use specify Appian.jpa in the ref attribute.
The tutorial video is here on YouTube.
MySQL DDL Export
Similarly to the Hibernate binding above, CAM templates can now be mapped to MySQL DDL tables, Oracle database or Microsoft SQL Server tables. The root element should be your database schema name, and then the elements under that are the SQL tables. Annotations can be added for DBMapping and KeyRef direct mapping. Also using 'Added' or 'Changed' annotations tells the export process to create ALTER statements in addition to CREATE TABLE statements. The Export menu option for Models has the drop down option for MySQL DDL generation, and if enabled, Oracle and SQL Server.
To further support this process there is a new option on the Tools / Renamer menu for SQL DBMapping. This will create upper case / underscore SQL database table and column names as annotations matching the element names of the CAM template elements. The names in the annotations then override the export process to the MySQL DDL.
The tutorial video is here on YouTube.
Starting with the 3.2.2 release of CAM Editor we are now supporting generation of user interface forms and reports. Two formats are available when unlocked (see License for more details).
The first is the Pencil Mockup forms format for prototyping forms and reports layouts. Pencil is an open source cross-platform tool. Once the mockup conforms to the needed look and feel, then the matching fully functioning forms and reports can be built automatically for Appian SAIL format.
NIEM IEPD Capabilities
Additional specific capabilities for NIEM IEPDs (National Information Exchange Model - Information Exchange Package Description) include the following:
An 8 minute tutorial video is available that introduces a selection of these NIEM functional concepts in building a XML exchange using NIEM core components.
There is also a complete set of NIEM training videos available on YouTube.
For more about NIEM - see this NIEM Slideshare.net collection of presentation slides.
Canonical dictionary collections ship with the main CAM download package.
You can also find additional dictionary packs from the Sourceforge files repository (NIEM, LEXS and EU Core)
There are three sets of dictionaries that CAM uses:
You can also use the dictionary tools menu items locally to create your own dictionaries. And you can view the dictionaries as models and diagrams. There are these 20 minutes of video quick tutorials on using dictionaries available from Youtube.
A Quick Guide is available with instructions for exporting an ERwin data model and loading it as a CAM domain dictionary. Alternatively use the SQL database visual designer tool to drag and drop tables into NIEM compatible XML component sets, then generate dictionary of components. In NIEM parlance this is an EIEM - Enterprise Information Exchange Model - dictionary. These instructions are available here from the Sourceforge project site.
Have your dictionary of components in Excel spreadsheets and need to convert those into CAM dictionaries? If so then download this Excel example package and view the README file of instructions on how to do that. NOTE: if you are mapping your own spreadsheet to our Excel-Export.xsd you MUST have the columns in the same sequence left to right as the elements in the XML, otherwise you get the crazy baffling error message from Excel: 'The XML maps in this workbook are not exportable'.
Note: Requires version of Excel with XML Data mapping and export feature to XML support. To check - from the main Excel toolbar File menu option - pick Save As, and then scroll through the options list to the one for "XML Data". If you do not see it, then it is not available. For example the Mac 2011 Home and Student edition does not have this.
Interactive Dictionary Documentation The editor creates the interactive report, and this functions as intended in the browser (see StratML example here). However with later browser versions we have observed that the Tiddywiki <div> configuration details in the header are not saved correctly if you use the browser "Save Page" option for later use [you will see a Tiddlywiki error message on reopening the page]. The work around is to instead make a copy of the original temporary file that the CAM editor created. The file:// reference in the browser points to ~/workspace/CAMEditor/temp_output.html in the CAM editor install folder. Navigate to that folder and manually copy the temp_output.html will provide a reusable version.
The CAM editor can make models of the XML exchange structure in 3 different formats:
Here is a sample for the Freemind mind map:
(click on screenshot to zoom)
Also - to see generated samples of the NIEM Core v2.1 dictionary models click here.
CAM Tutorials and Videos
Tutorial resources are available, along with sample templates.
The templates created with CAM editor can be viewed in any XML capable viewer or editor
Details of the OASIS Content Assembly Mechanism standard (CAM) are available:
In addition to the base license there are Special Features for Pencil, Forms and SQL generation now available that require an unlock key file.
Please see this unlock page for more details on enabling these features.
See this license terms page for the specific OSL text details.
Project News and Media Items
The CAMed executable is available on Windows, Ubuntu, Oracle Enterprise LINUX, and MacOS X in 32bit and 64bit deployments.
The XML Validation Framework uses the CAMV engine to provide services for automation of XML content checking.
Also development of Compliance and Interoperability Testing environments and test suites.
The CAMV XML validation framework supports Test, Evaluation, And Measurement (TEAM) XML test suite development.
In addition CAMV now provides JSON source validation and processing support. This converts input JSON to XML output and then applies the normal validation and handling services.
We have the online testbed environment available from VerifyXML.org
The CAM project is a participant in the EU GITB (Global eBusiness Interoperability Test Bed) project
The following sections provide resources on how to configure and use the CAMV environment.
For the latest CAMV engine package use the download button provided here.
Test suite resources are available for use with the Apache ANT test automation tool.
Review the quick guide that is now available to help with setting up CAMV test suites
The components needed to setup and use this test suite are linked to in the table list here.
Configuration, installing and running instructions are included in the readme.txt with each test suite download package. The test suites are designed to work across all platforms supported by the CAM editor.
A quick guide is also available on the CAM editor XML Test Examples generation wizard that details what each option does.
Online Testbed Site
For online interactive testing we have the VerifyXML.org website available. This also illustrates how CAMV maybe deployed as a service.
See the online testbed environment page for more details at VerifyXML.org.
CAMV and Schematron Comparison
We often are asked to contrast these XML validation tools. It is all about suited to purpose. CAMV is optimized for business information exchanges - so it has a number of features that give it the edge there - and is designed to be business analyst friendly - with a visual editor UI. Schematron is a general purpose XML tool - and involves programming and knowledge of XML and XSD - as such that is a different paradigm.
Specific CAMV features that are differentiators:
These illustrate the focus on providing a business information exchange toolset. Historically it should be noted that the CAM template approach and specification owes much to the work on both Examplatron and Schematron and has incorporated concepts from both.
The JAXB (Java Architecture for XML Binding) provides a comprehensive toolset for generating the necessary Java components for XML structure handling.
For information on using the CAM Editor with JAXB see this "how to" illustrated JAXB guide for details.
Examples of Java code to enable JAX-WS webservices for both Open-XDX and CAMV are available. Also a quick guide video tutorial illustrates using these with Weblogic server.
In this section we provide a selection of resources that are starter kits for particular applications and environments.
Step by Step guides are provided along with applicable example screen shots and illustrative code fragments.
The files provided here are intended to be samples and illustrations as a start point to accelerate use of the tools and techniques available for the particular solution area.
These are not intended to be a complete working solution but to serve to educate and inform and reduce the time needed to understand how to use the tools and techniques shown.
The first in this series is a NIEM/LEXS Web Services Starter Kit for Java based implementations using the JAX-WS infrastructure with LEXS 3.1.4 Search/Retrieve exchange messages.
NIEM/LEXS Starter Kit
Use the button here to jump to the download folder and select the applicable examples.
The available documentation resources include:
All applicable code files are available from the Code Samples folder along with a JDeveloper compatible package of the example.
This quick guide provides details of configuring your system to display in your desired language text.
In Microsoft Windows the Control Panel "Region and Language" setting allows you to pick the language format for your entire machine operations.
For Windows there is also a toolbar applet that then allows you to control and manage the keyboard entry and setup hot keys to switch with.
This language configuration quick guide shows you how to enable this.
For Ubuntu here is an article from HowtoGeek that walks through the steps needed to configure your desktop.
Currently CAM Editor is available with French, Spanish, Russian, Italian, Norwegian, Chinese and Japanese support.
XML Character Encodings
By default XML content is in UTF-8 encoding. However this can cause issues such as with Microsoft Windows generated content from a Web application, an Excel spreadsheet or Microsoft Word which all use Windows-1252 character encoding.
Particularly when running the CAMV validation engine you may see an error message from the Xerces XML parser complaining about invalid UTF-8 byte sequences. If this happens then try editing the XML instance you are using as input and either add or change the XML prolog line to say this:
and then retry. Of course if you know you are using a different character encoding substitute that for the Windows-1252 value here.
If this still does not work - if you have a LINUX or MacOS system you can try this grep command to highlight the non-UTF-8 characters in your XML input:
grep --color='auto' -P -n "[\x80-\xFF]" file.xml
Also if you need an XSLT pre-processor to simply clone the XML input and switch the XML encoding on an incoming XML file then you can try this XSLT here.
For further notes on XML and encodings - this OpenTag article is instructive
Deployment / Sharing
Check this Quick Guide for details on sharing and deploying your CAM project and associated files and file types.
The various scenarios include:
The quick guide gives details of all the various dependencies.
Help Resources and FAQ
Tools are available to provide a selection of XSD schema documentation reports. These report formats are customizable and can be stored as HTML documents also.
The report formats that can be generated automatically included:
These options are accessed from the View menu in the editor, or under the Tools menu
The documentation available is built-in under the Help menu of the CAM editor. In addition there are
See the history behind the CAM standards work and CAM editor development, including JCAM engine and now the CAMV engine work.
Authors and Contributors
Several people have substantially contributed to the development of CAM, including the following.
Special thanks to our language translators
Many other people have contributed in the forums and postings.
We need help with the "Help". The CAM editor "Help" facility is woefully out of date; screenshots, features and more need to be revamped. If this is something you enjoy doing we would very much appreciate your assistance with creating a new improved help solution.
The CAM team uses:
Technical details for the project include:
Note - JCAM engine has been deprecated by the new CAMV engine.
Need to find out the status of bug fixes, or log a bug fix or change request, then visit the project tracker for more details.
For developer resources including latest changes, download links and more - go to the developer support area.
Project Source Code
Here is the repository tree of the SourceForge the GIT source code repository.
To access the GIT code via GIT client you will need a SourceForge account and connect via the Bugs repository.
To view our latest project code commits please see this page here.
Here are links to external articles and publications
A selection of podcasts available
These resources are available via the Sourceforge project pages:
Other sites that relate to the CAM editor work include: