I was evaluating AEM 6.3 for content/experience as a service (CAAS) approach but am confused. Hope the experts here could help me.
AEM brought concept of Content fragments to reuse assets and I believe is being sought as a backbone for CAAS but I found the functionality really limited. Not only I am unable to define my own structured content (content types) but there is not an easy way to expose the same as a service mainly in JSON format.
On the other hand, AEM also has something called Content Services which helps define model and then export the data as well but it more part of AEM Mobile. It does have limitations like supporting complex models, extending existing CAAS service but looks better than Content Fragment to me from CAAS feature point of view. The only plus point with Content Fragment than this is to be able to define Variations.
Third option is leveraging Resource provider for a url which starts with /api to expose the data in JSON format for example http://localhost:4502/api/assets.json. It has limitations on both management as well as exposure side.
As you see there are somehow 3 options available but all of them have their own limitations and most importantly not connected with each other. I would like to know Adobe's POV to support CAAS, which one from above should be used to be forward compatible with Adobe next release. Also is there any possibility for CAAS service to be integrated with Content Fragment?
Appreciate the response here.
Here are thoughts of intrernal Adobe ppl --
> well but it more part of AEM Mobile
Its part of core
> It does have limitations like supporting complex models, extending existing CAAS service
You can build complex content structures by nesting entities of varying models or by using custom data types
Ie Create an shopping centre entity then create serveral store entities object shopping centre etc.
Model like pages can be constrained to where they can be placed (parent/child enforcement) to help maintain the data integrity of a complex structure
You can extend ContentServices via;
-creating your own data types for use in models
-creating your own renderers to override, augment, decorate, transform, aggregate JSON output as needed (variation of such renderings can be assembled as output configs to allow mixed use content delivery).
Alternatively you can provide your own sling renderers outright and render any entity as you see fit bypassing ContentServices for delivery.
This is very useful. Thanks for sharing these details.
Sounds like Adobe is then committed to evolving CaaS and Content Services to enable the notion of a true API-first CMS model, exposing every underlying Sling resource type as a "service", together with transformation, aggregation and other services as well ?
A few key questions though based on what you provided above :
1. How much of this capability - especially things like custom data types, custom entity models, transformation and aggregation services - is available today in AEM 6.3 ? The AEM 6.3 documentation page for CaaS suggests that a number of these "extensibility" aspects are not available with this release, and will only come in AEM 6.3 SP1 ? What is available today, and what will come available in SP1 ? If all of this is really available today itself with AEM 6.3, can you point us to relevant documentation, code samples, etc. ?
2. There is still not as much clarity between how the two new resource types of "content fragment" and "experience fragment" deeply link into / connect with CaaS and Content Services. If we treat these two as Sling Resource Types, will they plug in seamlessly into Content Services / CaaS, or will this require the definition of custom / extended Entity Models in CaaS - to expose those two as services ?
3. Is the intent to build all of these services and the API layer within / inside AEM ? Is the intent to make AEM an API Engine ? Or is this where Adobe I/O fits in ? What is the role of Adobe I/O here ? Will the APIs, services, transformation and aggregation logic be better deployed within Adobe I/O and its API gateway, or within AEM ? Basically, should we start thinking about AEM as the API Engine in this scenario, or will Adobe I/O be the API engine on top of AEM ?
We need to modify JSON output from ContentServices. Were can we find documentation on how to override, decorate and transform JSON output? It is extremely difficult to find any technical documentation on content services at all.
Thanks for sharing these details. From your last response, seems CAAS (or Content Services) will be more mature in coming days and will be used to construct complex content types (for example management of article, event etc. by marketer). If that is the case, how will Content Fragment fit into this or will this be deprecated?
Here is an article on Content Fragments - Adobe Experience Manager Help | Working with Adobe Experience Manager Content Fragments
As you can see in this artilce - you can define:
Fragments themselves have a name/title value, like every AEM asset, and contain the following structural elements:Paragraphs
I am trying to see if AEM ppl have thoughts on this.