COL – Textual Product Modeling for PROS Cameleon CPQ
While a graphical modeling interface allows to manipulate the objects of
a product model directly, it is often more efficient to work with
product models in textual form written in a
domain-specific language. Textual modeling is
particularly helpful for complex products or for modeling a range of
similar products.
To support text-based modeling for users of
PROS Cameleon CPQ we
have developed
- the language COL (short for "Cameleon Object Language") for
representing product models as text,
- an Eclipse-based IDE for editing models in this language,
- and of course conversions between COL and Cameleon's import/export
XML format so that you can easily interchange COL models with PROS Cameleon
CPQ.
Architecture

For a modeler, the IDE complements the Cameleon CPQ Designer, the
standard modeling tool provided by PROS Cameleon CPQ. The textual
representation and the IDE are useful in situations where a purely
graphical user interface or Excel-based model editing becomes labourious
to use.
In addition to the benefits of textual modeling described below, the IDE
for COL works in local memory and on local files rather than on a
server-side model repository. This way the IDE avoids delays for
client-server round trips and can even be used in offline mode.
Basic Language Features

While it is possible to directly edit Cameleon's import/export XML
format, this is quite cumbersome and error-prone. Therefore this is a
viable approach only for simple modifications. COL avoids the
syntactic overhead, which makes in-depth manipulation of models
feasible.
Furthermore COL allows to organize a model according to its logical
structure. That is, closely related objects can be declared nearby
each other, independently of their (technical) object types. When used
thoroughly, this feature also makes models easier to understand and to
manipulate.
General Benefits of Textual Editing

Certain operations on text files are provided by Eclipse and other IDEs
off-the-shelf and do not even require the IDE to have any understanding
of the COL language:
- The IDE supports full-text search over the entire set of product
models or over specific parts of it. The search is not restricted to
a particular object type (such as business values, configuration
rules, pricing rules, etc.). Regular expressions can be used for
powerful matching.
- Many changes across multiple model objects can easily be executed as
search-and-replace operations. For example, you might want to
replace a technical term by a more appropriate one in all your
products.
- To understand the difference between the models of two similar
products or between two versions of the model for one product, textual
comparison of models is supported. When models have diverged, the
comparison tool also helps to merge them back into a unified
representation.
- This also allows to use mainstream version-control systems like Git or Subversion for
managing model versions. Different modelers can even perform their
own local changes on the model and let the version control-system
merge these changes later.
- Inconsistent models can be represented easily. This is
particularly helpful for representing intermediate states during
larger changes to the model.
- Comments can be added to each aspect of a model. Parts of a model
can even be disabled easily by marking them as comments. Task
tags such as "TODO" or "FIXME" can be used to mark places in the
code where more work is required.
Finally, and perhaps most importantly, a textual representation makes it
much easier to communicate about models. You can easily add (parts
of) a model to an e-mail or a presentation slide. And if you wish, you
can even print it out.
COL-specific IDE Features

Based on its "understanding" of COL and of Cameleon models, the IDE
provides additional utilities for modelers:
- Syntax highlighting makes models easier to read.
- Navigation from places referencing an object to the object's
definition, or in the opposite direction.
- Renaming objects simultaneously in the object definition and in
all the places where the object is referenced.
- Model validations, even customer-specific ones, such as a check
for naming conventions.
- Tooltips displaying information about a referenced object
conveniently without the need to navigate to it.
- Suggestions for completing partial input ("content assist")
- Suggestions for "quick fixes" correcting typical simple mistakes.
- Templates for quickly setting up frequently used patterns.
- Outline views to provide an overview of the model.
- Folding of text blocks allows to temporarily hide details that are
currently not relevant.
COL as a Building Block

COL is not only useful for manual editing, but it is also used as a
target language for the compilation from a
customer-specific high-level modeling language.
Furthermore a textual model representation is very helpful for
migrating models from some other configuration engine to Cameleon CPQ or
from Cameleon CPQ to another engine. A translator can use textual models as
its input and output. Typically large parts of a model can easily be
translated automatically from one engine to another but for certain
details an automatic translation is impossible or simply not worth the
effort. In these cases the translator can emit comments with
untranslated parts of the input model, providing a convenient starting
point for a manual completion of the translation.
We have also implemented a number of tasks for the build tool Apache
Ant, making it easy to apply certain operations automatically in batch
jobs. These tasks have been implemented to support the testing of
generated models.
- Translating models from COL to XML.
- Uploading models in XML format to Cameleon.
- Concatenating models in XML format.
- Finding the differences between two models in XML format.
Finally notice that VClipse is a
domain-specific language similar to COL, but intended for use with the
SAP Variant Configurator instead of Cameleon CPQ.
Our Offer

webXcerpt provides professional services related to COL. Here are
some examples of what we can do for you:
- We provide training and support on using COL and the IDE as well
as for COL-related development (e.g., integration with your other
systems).
- We implement extensions to COL and the IDE, adding features such
as validation rules for your use cases, import and export formats, or
model visualization.
- If you provide a complementary tool, we can help you to integrate
it with COL.
- We help you to migrate models to or from PROS Cameleon CPQ
semi-automatically.
- We implement languages and IDEs for high-level modeling, allowing
you to describe your products in a language close to your business and
not cluttered with technical details.
Please contact us to discuss what we can do for
you or just for a demonstration of COL.