All Projects → PerficientDigital → AEM-DataLayer

PerficientDigital / AEM-DataLayer

Licence: Apache-2.0 License
Simple DataLayer API for Adobe Experience Manager

Programming Languages

java
68154 projects - #9 most used programming language
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to AEM-DataLayer

gradle-aem-multi
Example Multi-Module AEM application built by Gradle Build System
Stars: ✭ 31 (-6.06%)
Mutual labels:  aem, apache-sling
cookbook-cq
Chef cookbook for Adobe CQ (aka AEM)
Stars: ✭ 20 (-39.39%)
Mutual labels:  adobe, aem
Aem Project Archetype
Maven template to create best-practice websites on AEM.
Stars: ✭ 337 (+921.21%)
Mutual labels:  adobe, aem
Aem Links
Adobe Experience Manager links, cheat sheets and solutions to common problems.
Stars: ✭ 254 (+669.7%)
Mutual labels:  adobe, aem
commerce-cif-magento-graphql
Magento GraphQL data models and query builders for AEM
Stars: ✭ 20 (-39.39%)
Mutual labels:  adobe, aem
Aem Core Cif Components
A set of configurations and components to get you started with AEM Commerce development
Stars: ✭ 60 (+81.82%)
Mutual labels:  adobe, aem
Tools
Tools to support development, testing and deployment of Marketing Cloud technologies
Stars: ✭ 94 (+184.85%)
Mutual labels:  adobe, aem
aem-touch-ui-validation
AEM Touch UI Validation Library
Stars: ✭ 40 (+21.21%)
Mutual labels:  adobe, aem
aem-docker-getting-started
Getting started guide for development with Adobe Experience Manager and Docker.
Stars: ✭ 38 (+15.15%)
Mutual labels:  adobe, aem
commerce-cif-connector
AEM Commerce connector for Magento and GraphQL
Stars: ✭ 42 (+27.27%)
Mutual labels:  adobe, aem
Slice
Slice - a framework which simplifies Sling/AEM development by using dependency injection pattern and mapping Sling resources into Java objects
Stars: ✭ 64 (+93.94%)
Mutual labels:  aem, apache-sling
aem-spa-project-archetype
Maven Archetype for creating new AEM SPA projects
Stars: ✭ 64 (+93.94%)
Mutual labels:  adobe, aem
aem-cif-project-archetype
Maven template to create new CIF Project AEM projects that follow best practices
Stars: ✭ 20 (-39.39%)
Mutual labels:  adobe, aem
site-infrastructure-tests
Test framework that allows analysts/marketers to specify site infrastructure regression tests for dev
Stars: ✭ 23 (-30.3%)
Mutual labels:  adobe
aem-osgi-annotation-demo
Demonstrates OSGi Declarative Services Annotations along side Felix SCR Annotations.
Stars: ✭ 42 (+27.27%)
Mutual labels:  aem
gaia
Gaia is a geospatial analysis library jointly developed by Kitware and Epidemico.
Stars: ✭ 29 (-12.12%)
Mutual labels:  analytics
hassio-addons
DSMR Reader Datalogger and Metabase Home Assistant Add-ons
Stars: ✭ 29 (-12.12%)
Mutual labels:  analytics
viper
Real-time tracking and analytics using Node.js and Socket.IO
Stars: ✭ 12 (-63.64%)
Mutual labels:  analytics
SwiftyIllustrator
A tool for quickly converting Adobe Illustrator shapes into SwiftUI code.
Stars: ✭ 26 (-21.21%)
Mutual labels:  adobe
mojito
🧪 Source-controlled split testing stack for building, launching and analysing A/B tests.
Stars: ✭ 49 (+48.48%)
Mutual labels:  analytics

AEM DataLayer Build Status

This project is an implementation of the Customer Experience Digital Data Layer 1.0 specification produced by the W3C.

It provides a flexible, extensible model for implementers to create a Data Layer in Adobe Experience Manager by implementing clean, reusable Java code.

Modules

The main parts of the template are:

  • core: Java bundle containing all core functionality for the AEM DataLayer including the API and Sling Models for interacting with the AEM DataLayer
  • ui.apps: contains the cloud services configurations and testing mechanism for validating the Data Layer
  • weretail-reference: reference implementation based on the We.Retail Reference site from Adobe

Using this Project

The goal of this project is to create an easily extensible, flexible API for exposing CMS data to Digital Marketing tools. In order to use the AEM DataLayer on your project, you must create Sling Models to expose data to the DataLayer based on your needs.

Installing this Project

The AEM DataLayer is compatible with AEM versions 6.3 and 6.2. To install this project on AEM, download the latest release and install it into the AEM Package Manager.

Installing on AEM 6.2

The AEM DataLayer requires Sling Models API version 1.3.2 or more recent. In order to install AEM DataLayer on AEM 6.2, you must download and install the following bundles:

Implementing Your Data Layer

To get started, you may want to review the weretail-reference project to get a better idea of how to implement the AEM DataLayer for your project.

The implementation process is pretty simple, you simply create Sling Models for each component you want to use to populate your DataLayer. Each Sling Model should implement the interface ComponentDataElement and specify a resource type as shown below:

@Model(adaptables = Resource.class, resourceType = {
	"weretail/components/structure/page" }, adapters = ComponentDataElement.class)
public class DefaultPageDataElement implements ComponentDataElement {

As this is a Sling Model, you can inject any OSGi Service, Resource property or the Resource itself into your Model class.

The ComponentDataElement#updateDataLayer method will be called by the AEM DataLayer API when your Sling Model is adapted from a Resource in order to update the DataLayer.

Getting the Request

Your ComponentDataElement model can also be adapted from a SlingHttpSerlvetRequest. This will allow you to access any Request parameters or attributes. Simply specify the adaptable SlingHttpSerlvetRequest in your Sling Model definition.

@Model(adaptables = SlingHttpSerlvetRequest.class, resourceType = {
	"weretail/components/structure/page" }, adapters = ComponentDataElement.class)
public class DefaultPageDataElement implements ComponentDataElement {

And then use the @Self annotation to inject the SlingHttpSerlvetRequest as a private class variable.

Configuring the AEM DataLayer Cloud Configuration

Once you have installed the AEM DataLayer package, you can set up and configure it as such:

  1. Navigate to the CloudServices Console
  2. Scroll down to AEM DataLayer and add a DataLayer configuration:
  3. Click edit and configure all of the required settings under the General Settings and Page Settings tabs
  4. Navigate to your site root and edit the page
  5. Click Open Properties then the Cloud Services tab
  6. Add an AEM DataLayer configuration and then select your configuration

From here, your page should automatically include the DataLayer. You can use the test feature to validate that your custom DataLayer classes are being evaluated.

How to build

To build all the modules run in the project root directory the following command with Maven 3:

mvn clean install

If you have a running AEM instance you can build and package the whole project and deploy into AEM with

mvn clean install -PautoInstallPackage

Or to deploy it to a publish instance, run

mvn clean install -PautoInstallPackagePublish

Or to deploy only the bundle to the author, run

mvn clean install -PautoInstallBundle

Testing

There are three levels of testing contained in the project:

  • unit test in core: this show-cases classic unit testing of the code contained in the bundle. To test, execute:

    mvn clean test

  • server-side integration tests: this allows to run unit-like tests in the AEM-environment, ie on the AEM server. To test, execute:

    mvn clean integration-test -PintegrationTests

Releasing

The release process is as follows:

  1. Build the Code with: mvn clean install
  2. Update the version with: mvn versions:set -DnewVersion=[new-version]
  3. Commit the new version: git commit -a -m "Updating to release version [new-version] && git push"
  4. Tag the code: git tag [new-version] && git push origin [new-version]
  5. Deploy the code: mvn deploy
  6. Update to the new snapshot: mvn versions:set -DnewVersion=[new-snapshot]
  7. Commit the new snapshot: git commit -a -m "Updating to snapshot version [new-snapshot] && git push"
  8. Update release notes
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].