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


COL is an external modeling environment for PROS Cameleon CPQ

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

Modeling a domain with COL

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

Textual comparison of two model versions

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

Use of a user-specified template for defining a domain.

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.