Building Blocks

Building blocks are the core parts of a solution. They are fully customizable, re-usable, and extensible modules that define capabilities of a solution. Building blocks allow you to leverage services hosted by CRX. They also expose reusable APIs and Flex based UX components that developers can leverage to customize the solution.

The Correspondence Management Solution contains three building blocks:

  • Asset Composer building block

  • Data Dictionary building block

  • Expression Manager building block

Building blocks are solution-specific product capabilities with technical documentation, specific to each building block, that explains how they can be used for production applications.

Building Block structure

The Correspondence Management building blocks are delivered as a CRX package which you can unzip to any installation directory. All of CRX packages fit into one one the following categories:

  • Platform packages: Packages that contribute to the complete Adobe LiveCycle Platform.

  • Building Block packages: Packages that contribute to the full range of Building Blocks that Partners use to help build custom solutions.

  • Solution Template packages: Packages for demonstration components of a target solution. This package relies on building blocks already deployed on the LiveCycle server

  • Solution Single Install packages: Includes a Solution Template and a set of building blocks all merged into one CRX package.

Asset Composer building block

The Asset Composer building block is part of the Correspondence Management Solution, available with Adobe LiveCycle Enterprise Suite 4 (ES4). The Asset Composer building block provides core capabilities to create and manage assets like text, images, list modules, and conditional modules. It also supports defining and rendering a correspondence.

Asset Composer building block components

The Asset Composer building block is deployed as a LiveCycle package with OSGI bundles. The building block’s services are registered as OSGI services.

Persistence services

The Persistence Services component provides the Object Model and APIs for the individual assets (Category, Data Module, Layout, Fragment Layout, Letter, Document, and Portfolio) that interact with the LiveCycle Content server-side APIs. The services facilitate CRUD-like operations and other utility APIs, such as publish, to retrieve the list of dependencies on an asset, and download the content for an asset.

Render Service

The Render Service is a server-side component that renders a Letter or Portfolio/Package, based on a given letter/portfolio template and instance data. It also provides post processing capabilities on these templates, through integration with external web services.

Web Modules

This component consists of web layer-related artifacts such as servlets and other related services.

This component includes the following services:

  • Submit: This servlet submits XML data and the rendered PDF to the selected post-process service for a Letter or Portfolio template. Before submitting, it calls the LetterRenderService to render the letter with the given XML data submitted by the Create Correspondence application. The servlet then calls the ServiceInvoker APIs to finally submit the PDF and XML data to the post-process.

  • FlexConfigurationService: This utility service permits client applications to access the properties configured specific to the host web application such as web context and servlet mappings.

  • ExternalDataUtil: This service permits connection to various data sources, by registering the appropriate URL handlers. There is support for standard Java protocols and the crx:// protocol for accessing content from the CRX repository.

Create Correspondence

The Create Correspondence application is made up of several Flex components within the Asset Composer building block. This application is componentized into Presentation Model, Domain Model, Resource bundles, and Style SWCs, so you can extend them to create a customized experience.

Asset Composer Scenarios

Data Dictionary building block

The Data Dictionary building block is based on the Adobe application modeling technology, which allows for an independent representation of metadata and back-end integration. Metadata, in the solution context, represents descriptions of the data structures and their associated attributes. Therefore, a data dictionary is a catalog of domain-specific objects and their associated definitions. The Data Dictionary building block allows business users to use models at a solution level. They can also create a domain-specific data dictionaries or enhance the artifacts without requiring back-end data integration. For example, an insurance domain data dictionary can contain data dictionary elements (DDEs) such as person, age, eligibility, loan amount, and so on. Data dictionary models can be developed and seamlessly exported into an extended application model, for import into production systems.

Data Dictionary building block components

The Data Dictionary building block consists of clients and services that connect to the back-end system.

Data Dictionary building block clients

The Data Dictionary clients include:

  • Data Dictionary Java clients (adobe-dct-client.jar). The Java clients include server-side value objects, service APIs, and exception classes required for any custom code for the building block.

  • Data Dictionary Flex client (adobe-dct-flex-services.swc): The Flex client includes various ActionScript Value Objects, Data Dictionary service Flex APIs, events, and fault handling.

  • Data Dictionary building block user interface components. The Data Dictionary building block user interface components (Data Dictionary Editor, Data Elements Panel) use the Data Dictionary Services for interacting with the back-end repository.

    • Data Dictionary Editor: The Administrator user interface for creating and modifying a data dictionary, its properties, and elements. In the Definition view and Properties view, you can associate the value of various properties with the data dictionary elements. You can associate metadata with a data dictionary and each of its elements by adding extended properties.

    • Data Elements Panel. The user interface for creating DDE and place holder variables which are displayed in table and tree formats. You also perform live searches on the Display Name for a DDE.

Data Dictionary building block services

The Data Dictionary building block services are exposed as spring beans. Following is the list of beans that are provided in Data Dictionary building block:

  • DataDictionaryRegistryService: This service provides Create, Update, and Delete operations for the Data Dictionary building block.

  • DataDictionaryUtilService: This service provides data dictionary utility functions.

  • Expression Evaluation Service: This service is as a reusable component that uses standard EL syntax and libraries for expression evaluation. The component has server-side APIs for expression evaluation on the server and a client-side counterpart for evaluation of expressions on the client.

Back-end integration layer

The server-side component of the Platform Content exposes operations/APIs to interact with the underlying repository that stores the assets. The services component for the Asset Composer building block encapsulates APIs for the individual assets that interact with the Platform Content server-side APIs. The server-side component of the Platform Content facilitates operations and other utility APIs, such as list of dependencies on an asset and downloading the content bytes for an asset.

Developing with the Data Dictionary building block

Developing a solution that uses a data dictionary typically involves the use of the following tools:

  1. Data Dictionary Editor. The user interface that allows creation and maintenance of the data dictionary that is shipped with this building block.

  2. Java Development Tools:

    • IDE for creating Java/Spring projects

    • ANT build tools

  3. LiveCycle Tools:

    • Adobe® Flash® Builder™

Data Dictionary Samples

You can customize your data dictionary to your requirements. The Data Dictionary Building Block Technical Guide contains the following samples:

For more information, see the Understanding the Data Dictionary building block assets.

Expression Manager building block

The Expression Manager building block provides the ability to evaluate expressions on the server side and the client side. Client-side expression evaluation is achieved using the Expression Manager client library that interprets the expression at runtime without a server roundtrip.

By default, Expression Manager uses standard Expression Language (EL) syntax and libraries, but it also provides the ability to connect to any other rule base.

Expression Manager building block components

An expression evaluation service requires an instance of Variable Resolver to retrieve values of variables. Typically an expression requires a Function Mapper to retrieve function definitions from the library. When connecting to a Data Dictionary the DDE Variable resolver is required.

  • Variable Resolver: used to retrieve the value of variables used in expressions by expression evaluation library.

  • Function Mapper: used to provide definitions of custom functions used in expressions.

  • DDE Variable Resolver: used to resolve Data Dictionary Element values.

The Expression Manager building block can be divided into two modules: server-side expression evaluation and client-side expression evaluation.

Server-side expression evaluation

The server-side expression evaluation module provides the capability to evaluate expressions on the server side. The Expression Evaluator service is the core of the server-side expression evaluation module. It provides APIs for expression evaluation and validation. Expressions can be evaluated in single or batch mode. This component acts as a wrapper to the expression evaluation library (JSP EL). The actual expression evaluation task is delegated to the expression library.

Client-side expression evaluation in using Flex

The client-side expression evaluation module provides the capability to evaluate expressions in a Flex client application, without a server roundtrip. The Flex Expression Manager can interpret and evaluate JSP-EL compliant-expressions. The IExpressionManager interface is the entry point into client-side expression evaluation. Consuming applications are expected to pass a JSP-EL compliant expression. The client-side expression manager requires a variable resolver and a function mapper to resolve variable references and function calls inside expressions.

// Ethnio survey code removed