What is Demandware (for developers)

Demandware is an enterprise ready SAAS (Software as a service) e-commerce platform which utilises a revenue share model. This means that the platform can be used by businesses in exchange for a share of the revenue generated via the platform. In return for that Demandware takes care of the hosting, server infrastructure and core application framework. They also deliver an admin interface to manage shop products, orders and content as well as a fully functional storefront. And of course mobile apps aren't missing in that feature set. All of these components can be customised to great extend.

The technology behind Demandware

Demandware's core framework is build in Java and uses a very efficient (partial) caching system based on Akamai technologies. The core framework is closed to third parties and is exposed via the Demandware script and REST API's as well as Demandware's own Pipelet system. This means that developers will need to use the API to develop additional functionality and cannot directly use Java. Same goes for the database which is not accessible directly, instead you'd use the API.

Customising Demandware

Customisation of the Storefront and Business Manager can be done by uploading "cartridges" which contain a combination of Pipelines, Templates, Scripts, XML and property files. Demandware has created an Eclipse plugin to manage the code and to upload the cartridges to the server.

Pipelines

Demandware pipelines are XML based files used to create the application and user flow. The (eclipse based) Demandware UX development studio transforms this XML into a visual representation of this flow as can be seen in the following example.

Demandware Pipeline

If you would compare Demandware to MVC then this would be the Controller. And yes, you can drag and drop nodes and by doing so change how the flow works. While this might feel awkward for a developer in the beginning, it's actually quite powerful. It allows for very fast creation of new pages with both simple and complex logic. submit.

Pipelets

Demandware pipelets are re-usable scripts that can be used to achieve a certain goal. For instance to clear a Form of it's data or to search for store objects (see above screenshot). The Pipelines example above shows them as blue rectangles.

Pipelets have input and output parameters which are explained in the online Demandware documentation. You cannot directly look into the code as you would with normal custom made scripts and you cannot customise or extend them.

Demandware Pipelet configuration

Some examples of what Pipelets can do are:

  • Find one or more products
  • Log in a user
  • Create a new order
  • Bind form data to a custom data object.
  • Call a custom Demandware script (see below)

Demandware script

Demandware Script allows developers to add custom logic that needs to be executed within Pipelines or Templates. Demandware Script is based on ECMAScript 3 with added (optional) type specification from the ECMAScript 4 proposal. On top of that the Mozilla's Javascript 1.7 extensions can be used in Demandware script. To complete the set Demandware has added its own API to allow developers to work with Products, Orders, Shipping methods, sending email and much more. You can see Demandware Script as server side Javascript on steroids :-)

Demandware Pipelet configuration

Templates

The presentation layer is built using templates. Templates are mostly plain HTML with an added templating language. The added parts are defined as (X)HTML tags to make them easy to use and indent. As with most templating languages they add the ability to add statements to set variables, control HTML output, add loops and more. Next to that it is possible to include other template as well as defining a decorator template. Demandware Scripts can be included both inline as well as via a file reference.

Demandware Pipelet configuration

UX studio

To manage all this Demandware has created an Eclipse plugin. The UX studio plugin uses the concept of cartridges to store Pipelines, Templates, Scripts, CSS, JS and more which are assigned and uploaded to the Demandware server of your choice. It also allows for debugging of Pipelines and Demandware script.

Watch this space

As you can see Demandware has got much to offer. Infinitely more than can be described in one blog article. The next couple of weeks I will be adding more in-dept articles about how to use Demandware as a developer.

So do come back for more ;-)

Questions?

Drop me a line on Twitter or Google+.