This new public API's purpose is to allow for the management and maintenance of Universe relational data connections programmatically. It's a feature oft requested in the past by developers, especially by those interested in integrating update of data connection metadata and parameters - especially DB logon credentials - into their Java applications.
First, a bit of background.
h2. Universes and Data ConnectionsThe semantic layer for SAP BusinessObjects BI reporting solutions, Web Intelligence and Crystal Reports, consists of two parts: the data connection, representing and encapsulating the metadata for connectivity to relational databases, and the Universe, representing an abstraction of the data schema in ways more intuitive and useful to users.
Since the days of BusinessObjects 6.x, the public SDK used to create, maintain and manage both data connections and Universes is the Universe Designer SDK .Since BusinessObjects XI Release 1, these two objects, the former SI_KIND=Metadata.DataConnection and the latter SI_KIND=Universe, had their own separate InfoObject types, and were managed by the CMS separately. Even then, the Universe Designer SDK was used to access and modify both types of objects.
Don't get me wrong, I enjoyed working with the Universe Designer SDK - it was simple to learn and code with. But often, I'd encounter limitations imposed on its use because of its COM-based nature: limits on scalability, limits on where I can deploy COM-based applications (especially when Enterprise was deployed on Unix servers), and especially limits on how I could integrate them into my Java apps.
Furthermore, with BI 4.0 introducing a new Universe, unx, that has its own client design tool, Information Design Tool, that shares relational database data connections with the 'classic Universe, unv, there was a compelling need to have a separate SDK strictly to manage just the data connecctions.
h2. Data Access Connection SDKThus the new DAC SDK - a public API for relational data connection modification and creation, fully integrated into the SAP BusinessObjects Enterprise Java SDK.
Documentation is available on-line, both the [Developer Guide | http://help.sap.com/businessobject/product_guides/boexir4/en/connsdk_java_dg_40_en.zip] and JavaDocs .You'll need to refer to the Developer Guide for a list of additional jar files required over those for the Enterprise SDK.
The DAC SDK works with the connection metadata that's not encapsulated as a property of IDataConnection InfoObject objects. The connections modifiable via the DAC has been given a new type, SI_KIND='CCIS.DataConnection' (an aside - I've seen people write code for previous versions that directly access the old Metadata.DataConnection to modify the connections using a non-public-API - that'll no longer work, and was never supported in the first place). The property holds the metadata as an XML.
Essentially, DAC methods allow you to retrieve this XML from the InfoObject, make modifications without breaking the XML validity, then commit the changes back. Plain and simple.
Typical workflow:
This simple sample uses the DAC SDK to update the database password for a Data Connection specified by its SI_CUID value. Here's the main code:
bq. java_dac_be14_change_connection_password.jsp<br /><%The bit that updates the password is this:
mutableConnection.putProperty("PASSWORD", "CREDENTIALS", "String", newConnectionPassword);
It updates the "PASSWORD" property of the "CREDENTIALS" category of value type "String" with the new value.
It's quite simple.
It's fairly common to have organizations update their database passwords regularly, and it's at times a chore to ensure all consumers of the database connection remain updated with the latest passwords. The DAC SDK greatly helps in this regard - it wouldn't take that much effort to create something schedulable - say a Java Program Object, that'll retrieve the new password from a secure source, and update all relevant IDataConnection InfoObject objects on Enterprise with the new values.
h2. ConclusionThe Data Access Connection SDK is a simple API, but with a lot of bang-for-the-buck development time-wise. It's simple to learn, simple to implement, and certainly something that will simplify your database administrative tasks.