Monday, 30 September 2013

Using the Sling API to retrieve content from the Adobe Experience Manager Repository

Adobe Experience Manager contains a Java Content Repository (JCR) that stores nodes and properties. A node located in the JCR is considered a resource. You can use the JCR API to retrieve resources from the JCR. For information about using the JCR API, see Programmatically Accessing Adobe CQ Content using the JCR API.

However, you can also retrieve content from the JCR using Sling. In fact, a resource is a central part of Sling and it assumes everything in the JCR is a resource. You can use Sling to retrieve a resource from within an OSGi component using the Sling Java API or using a JSP. To use the Sling API from within an OSGi component, you use an org.apache.sling.api.resource.ResourceResolverFactory instance.

The Sling API is used within an OSGi bundle


When using Sling to query the JCR, you have access to helper methods that are not available when using the JCR API. For example, the adaptTo method  converts a resource into an appropriate object representing a certain aspect of this resource. For example to translate a Resource object to the corresponding Node object, you can simply do:

Node node = resource.adaptTo(Node.class);

 This development article guides you through how to build an AEM application that uses Sling to retrieve resources from the JCR. An OSGi bundle is created that locates a resource and retrieves a value. To read this development article, click:

http://helpx.adobe.com/experience-manager/using/using-sling-apis.html

Note: When you want to write content to the JCR, it is recommended that you use the JCR API. For information, see Persisting CQ data in the Java Content Repository.

Adobe Digital Marketing Community

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

About the Author

I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 16 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.

Linked Inhttp://www.linkedin.com/in/scottmacdonald2010
TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

Friday, 20 September 2013

Creating a custom Adobe Experience Manager PDF service

While helping answer forums for Adobe Experience Manager, an AEM user asked if there is an AEM API to work with PDF documents. See the forum thread: 

http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.html/forum__rrqk-is_there_anapidepl.html

While this is not an out-of-the-box feature, it does not mean that Adobe CQ cannot perform this use case. One of the most powerful features of AEM is the ability to develop custom services.

You can create a custom AEM service that  creates and modifies PDF documents. For example, consider a use case where a user submits data to Adobe CQ. A custom service creates a PDF document, writes the data to the newly created document, and saves the PDF document in the AEM Digital Asset Manager (DAM). 


A custom AEM service persists a newly created PDF document in the DAM


This development article walks you through the process of creating a custom AEM service that is able to perform this use case by using Apache PDF BOX API. For information about this API, see http://pdfbox.apache.org/.

To read this development article, click  http://helpx.adobe.com/experience-manager/using/creating-custom-experience-manager-pdf.html

Adobe Digital Marketing Community

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

About the Author

I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 16 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.

Linked Inhttp://www.linkedin.com/in/scottmacdonald2010
TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

LiveCycle ES SDK/Java Developer articles

In my previous role at Adobe, I was the Senior SDK Technical Content lead for LiveCycle ES. In this role, I developed a lot of Java, .NET, and Flex apps that interacted with LiveCycle. The LiveCycle ES platform is still a powerful enterprise platform.

I have dig up some of my older community articles for the LiveCycle ES that are useful:

1 - Creating enterprise database components.
2 - Displaying LiveCycle ES process data in Flex graphs.
3 - Using Java servlets to invoke LiveCycle ES3 processes.
4 - Creating form rendering ASP.NET applications.
5 - Invoking web services using custom components.

By the way, you can use Adobe Experience Manager and LiveCycle ES as well. See this community article:

Integrating LiveCycle into Adobe CQ applications

Adobe Digital Marketing Community

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

About the Author

I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 16 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.

Linked Inhttp://www.linkedin.com/in/scottmacdonald2010
TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

Thursday, 19 September 2013

Invoking Adobe Experience Manager Workflows using the AEM Java API

You can create a workflow for Adobe Experience Manager. A workflow automates Experience Manager activities and is a series of steps that are executed in a specific order. Each step performs a distinct activity such as activating a page or sending an email message. Workflows can interact with assets in the repository, user accounts, and Experience Manager services. Therefore, workflows can coordinate complicated activities that involve any aspect of Experience Manager.

The AEM workflow user interface
For more information about workflows, see http://dev.day.com/docs/en/cq/current/workflows/wf-overview.html#par_reference.

This article creates a simple workflow and then discusses how to invoke the workflow using the AEM Java API. To read this article, click http://helpx.adobe.com/experience-manager/using/invoking-experience-manager-workflows-using.html.

NOTE: You can create custom workflow steps for AEM. See http://scottsdigitalcommunity.blogspot.ca/2012/09/developing-cq-custom-workflow-steps.html.

Adobe Digital Marketing Community

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

About the Author

I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 16 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.

Linked Inhttp://www.linkedin.com/in/scottmacdonald2010
TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.


Monday, 16 September 2013

Integrating the custom carousel component with a CQ Dialog

This development article extends a component that was created by following an existing article on this blog: http://scottsdigitalcommunity.blogspot.ca/2013/09/creating-custom-carousel-component-for.html.

In this development article, the custom carousel component is integrated with a CQ Dialog and added to the CQ sidekick. A CQ author will be able to drag and drop the custom carousel component from the sidekick and then use a CQ dialog to define the image description values during design time.


A custom carousel component is integrated with a CQ dialog



To read this development article, click    http://helpx.adobe.com/experience-manager/using/integrating-custom-carousel-component-cq.html.

Adobe Digital Marketing Community

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

About the Author

I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 16 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.

Linked Inhttp://www.linkedin.com/in/scottmacdonald2010
TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.



Tuesday, 10 September 2013

Creating a Custom Carousel component for Adobe Experience Manager

You can create a custom carousel component for Adobe Experience Manager. A carousel component displays images that can be retrieved from the Adobe Digital Asset Manager (DAM). The CQ DAM is a digital asset management tool that is fully integrated with the CQ platform and enables your enterprise to share and distribute digital assets. Users across an organization can manage, store, and access images, videos, documents, audio clips, and rich media such as Flash files for use on the web, in print, and for digital distribution. For more information, see CQ Digital Asset Management.

Assume, for example, that you are developing an Adobe CQ visual carousel  component for a travel company interested in creating an online digital marketing campaign. The component lets visitors to the web site obtain an engaging experience by viewing different travel images within a rotating carousal component.

A custom AEM carousel component
To read this, click

 http://helpx.adobe.com/experience-manager/using/custom-carousel-components.html.

Adobe Digital Marketing Community

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

About the Author

I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 16 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.

Linked Inhttp://www.linkedin.com/in/scottmacdonald2010
TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

Friday, 6 September 2013

Injecting a DataSourcePool Service into an Adobe Experience Manager OSGi bundle

This development article discusses how to inject a DataSourcePool service into an OSGi component. By injecting a DataSourcePool, your OSGi bundle can connect to a relational database such as MySQL. You configure a DataSourcePool using Adobe Experience Manager.

A DataSourcePool configured in Adobe Experience Manger
For information about configuring a DataSourcePool, see http://dev.day.com/docs/en/cq/current/developing/jdbc.html.

Note: You can create an OSGi bundle that is able to connect to a relational database without using a DataSourcePool. In this situation, you have to write a Java class that uses the JDBC API to connect to the database. For information, see http://scottsdigitalcommunity.blogspot.ca/2013/08/querying-and-persisting-adobe-aem-data.html.

To read this development article, click  

http://helpx.adobe.com/experience-manager/using/datasourcepool.html.

To watch the video - click



Adobe Digital Marketing Community

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

About the Author

I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 16 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.

Linked Inhttp://www.linkedin.com/in/scottmacdonald2010
TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.