Thursday, 9 March 2017

Managing multiple instances of the same Adobe Experience Manager OSGi service

When developing custom services for Adobe Experience Manager, you can define a service that can be configured using the Felix Configuration screen.


You define configuration fields that show up in the Felix configuration screen by using a @Property annotations. For example: 

@Property(description="adress to whom email is sent",value=DEFAULT_ADDRESS)
    private static final String ADDRESS = "mailservice.address";
    private String address;

You can configure your AEM service to use different configuration values. For example, you can configure 1 to many different instances of the same service. 

Assume you want to develop a custom email service that contain the following configuration values. 
  • the email address to which an email is sent
  • the email address from which the email is sent
You can configure the custom email service so that each service instance has a different value for these configuration settings. You can enter an AEM configuration value into an AEM configuration dialog, as shown here. 


In this configuration dialog, the to and from email addresses are configurable. You can configure additional configuration settings for the same service.  

When you use the custom Service within AEM, you can create a reference to the exact configuration service that you want to reference. To do this, you use the @Reference annotation and additional metadata such as: 


 @Reference(target = "(mailservice.label=InternetA)")
     MailService mailServiceA; 
     
     @Reference(target = "(mailservice.label=InternetB)")
     MailService mailServiceB;      


In the above dialog, there is a additional field named emailservice.label. You can reference the value in this field with the target value when using the @Reference annotation. 

This development article guides you through how to create an OSGi service where there are multiple configured services and how to use the  @Reference(target = "(mailservice.label=InternetA)") annotation properly.  


Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.


TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

TwitterFollow me on Twitter @smac2020  





Wednesday, 8 March 2017

Using Granite DataSource objects to populate Experience Manager 6.2 Touch UI Select objects

You can create an Adobe Experience Manager (AEM) 6.2 Touch UI component that contains a drop-down control that can be used within the AEM Touch UI view. An AEM author selects drop-down values during design time. For example, an author can select a USA state value from an AEM component that displays address information. A drop-down control is populated by using a com.adobe.granite.ui.components.ds.DataSource object. For information, see DataSource.

Once you create a DataSource object, its data can be used to dynamically populate a drop-down control, as shown in this illustration.


This development article steps you through how to build an AEM 6.2 HTL component by using an AEM Maven Archetype 10 project. Then it discusses how to populate a drop-down field in the component's dialog using a DataSource object.



Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.


TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

TwitterFollow me on Twitter @smac2020  

Tuesday, 7 March 2017

Integrating Adobe Experience Manager 6.2 with Activation - Dynamic Tag Management

You can integrate Adobe Experience Manager 6.2 (AEM) with Adobe Marketing Cloud Activation Core Services (formerly named Dynamic Tag Management). Activation is an Adobe Marketing Cloud Core Service that allows a digital marketer to manage Adobe and third-party tags used for tracking or other analytic purposes. It is done through client-side scripting that injects tag related code throughout the pages of the site.

You define rules in the Activation web client, as shown in this illustration.



The previous illustration shows an Activation rule named TestOnLoadChrome. This rule is basically an event handler that is fired when a web page page is opened. The condition is defined so that this rule fires only when the browser is Chrome. The logic that is defined is simply JavaScript that creates a pop-up message.

alert("Hello Chrome - this is a DM rule");

Once you define and approve Activation rules using the Activation web client, you can embed these rules into AEM web pages. When this rule is embedded into an AEM web page, this rule is fired when an AEM web page is opened in Chrome, as shown in this illustration.



To watch the video, click:





Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.


TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

TwitterFollow me on Twitter @smac2020  

Friday, 3 March 2017

Programmatically manipulating Touch UI Fields

When developing Adobe Experience Manager custom components, you can programmatically interact with fields located in a Touch UI component dialog using an API. That is, you can control the behaviour of a field (such as a checkbox) using application logic. For example assume that you have a checkbox located within a component dialog and you want to have the ability to check a condition and then either check or uncheck the checkbox. Using JavaScript application logic, you can dynamically check the box so that the checkbox appears checked when an AEM author opens the dialog box, as shown in this illustration.


In the previous illustration notice the checkbox is set in the dialog. This dialog is set by using code, as discussed in this community article.

This development article steps you through how to build an AEM 6.2 HTL component by using an AEM Maven Archetype 10 project. Then it discusses how to dynamically check the checkbox using JavaScript application logic that involves creating a JS script in an AEM Clientlib and then coding. See the reference documentation here: https://docs.adobe.com/docs/en/aem/6-2/develop/ref/coral-ui/components/Coral.Checkbox.html#


Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.


TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

TwitterFollow me on Twitter @smac2020  


Friday, 17 February 2017

Spring Editons of Ask the AEM Community Experts

Hello AEM Community. I wanted to let you know that we have lined up some very awesome sessions of Ask the AEM Community Experts for you:


  • In March we will focus on AEM and Analytics and how to work with these two products in AEM 6.2.
  • In April - we will do Responsive Layout with Lokesh. 
  • In May, we will focus on how to work with the Coral API when doing AEM development. 

This is your chance to attend and ask the community experts questions related to these subjects and see the use cases in action.

To sign up for the March session, click: 

https://communities.adobe.com/content/usergenerated/content/cush/en/communities/aem_technologistsdevelopersarchitects/events/_jcr_content/par/calendar/ask_the_aem_communit_8.form.html/content/cush/en/communities/aem_technologistsdevelopersarchitects/events/upcoming-event-detail?logged_in=true.



Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.


TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

TwitterFollow me on Twitter @smac2020  



Wednesday, 15 February 2017

Creating a custom Experience Manager sling:resourceType for Touch UI

You can create a custom sling resource type that can be used in an Adobe Experience Manager (AEM) Touch UI component by using a JQuery plug-in. That is, if you want to define a field in a Touch UI component dialog that is not available with the available Granite API, you can define your own custom type. This is similiar to how you can define a custom xtype when working in the Classic UI. For information, see Creating your first Adobe Experience Manager custom xtype.

As an AEM developer working in the Touch UI, it is important to understand how to create a custom sling resource type to be able to define custom fields.  In the AEM community, there has been requests on how to develop a full color spectrum field for a Touch UI component dialog, as shown in this illustration.


To successfully get this color picker in an AEM Touch UI dialog, specify a path that references the JQuery plugin as a value of the sling:resourceType property in CRXDE Lite, as shown here.  




Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.


TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

TwitterFollow me on Twitter @smac2020  



Tuesday, 7 February 2017

Creating an AEM HTL component that queries the JCR

You can create an Adobe Experience Manager (AEM) HTL (used to be known as Sightly) component that queries data located in the AEM Java Content Repository (JCR). To query data, you use an HTL Java class that extends the WCMUsePojo API and the javax.jcr.query.Query instance that belongs to the JCR Query API. This API supports both searching and querying operations. For example, assume that your AEM application tracks your organization’s customers. You can develop an AEM HTL component that is able to query the JCR to obtain a customer result set in which a digital marketer is interested.



Assume that you have customer data in the AEM JCR. 



Using an HTL component that extends WCMUsePojo, you can retrieve the JCR data and display it.



This development walks you through how to create an AEM HTL component that queries a result set from the JCR. To read this development article, click https://helpx.adobe.com/experience-manager/using/htl_jcr.html

Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.


TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

TwitterFollow me on Twitter @smac2020