Skip navigation
All Places > Alfresco Content Services (ECM) > Blog > Authors ohej

Alfresco Content Services (ECM)

7 Posts authored by: ohej Employee

It is an exciting time here at Alfresco. We are working on a lot of improvements to the product, especially the way developers integrate and extend our products. In this brave new world of containers, micro services, message queues, cloud connectors and REST APIs we are laying out the foundation of the developer experience of the future.

While the future looks more like what we call "out of process extensions", we recognise that it's a process that we are going through, and we do not have all the answers yet and there is still a need to make in-process extensions to the platform.

 

There are several ways to build extensions to Alfresco Content Services, but a popular approach has been using the "Alfresco SDK". Updates to the SDK to accommodate for the changes in ACS 6.X have been delayed - until now.

 

I'm happy to announce that we have released the first beta of the SDK, and we're hoping to get some feedback before the final release!

 

This beta release targets ACS 6.0 Community and Enterprise. We are actively working on support for 6.1, but this is not included in this first beta release.

The ACS SDK 4.0 brings some changes, so I wanted to write a blog post to give some details on some of the decisions and reasons behind.

 

Embracing containers and Docker

Previously the SDK relied on starting an embedded H2 database and using the Apache Tomcat Maven Plugin.

The first issue we hit was due to changes in the database layer of ACS. This meant that we cannot leverage H2 anymore and to work around this, an external database is required for running ACS.

The second issue we hit was the Tomcat plugin. Essentially it is stuck on Tomcat 7.X, which starts to give a lot of issues with Java 9 and 11. The plugin has not been updated in years, and while we could technically manage something to work for ACS 6.0 Community edition, some upstream dependencies in ACS 6.0 and 6.1 Enterprise impacted it. By leveraging Docker to spin up the repository we make a more future proof solution.

Alfresco Search Services is already an executable on its own, and since we provide containers for it already and we're embracing Docker in the SDK, it was a no-brainer to spin up search too. Same goes for Transform Services (Enterprise only).

By embracing this approach we have reduced a lot of the "magic" that happens inside the SDK. We have been able to remove hundreds of lines to deal with unpacking Solr, H2 DB Scripts and Tomcat configuration. This means the SDK is more maintainable moving forward.

 

Project structure

If you've previously used SDK 3.0 you should feel right at home. We provide roughly the same project structure, except instead of packaging the WAR file with modules applied to it, we now have a docker module that builds a custom Docker image for ACS with your module applied.

We still feature the same three archetypes: All-in-one, Platform JAR and Share JAR.

In addition, we had to put more logic into the run.sh / run.bat files, to accommodate for Docker.

Previously, you could use the Alfresco Maven Plugin to start the repository using "mvn install alfresco:run". In SDK 4.0 you will need to either manually start Docker Compose, or use the run utilities to do it for you. You can read more about it here.

 

Getting Started

We have a new getting started guide on GitHub. Please note this is still work in progress, feedback and contributions are welcome!

Here is the short version:
You need Java 8 or 11 along with Maven and Docker for Desktop.
- If you are on Windows 7 you will need the Docker Toolbox because Docker for Desktop is not supported for Windows 7. Docker Toolbox will work just fine.

Fire up a terminal and generate your project:

mvn archetype:generate -Dfilter=org.alfresco:


You can now select the archetype you wish, then make sure you select the version "4.0.0-beta-1":

Choose archetype:
1: remote -> org.alfresco.maven.archetype:activiti-jar-archetype (Sample project with full support for lifecycle and rapid development of Activiti JARs)
2: remote -> org.alfresco.maven.archetype:alfresco-allinone-archetype (Sample multi-module project for All-in-One development on the Alfresco platform. Includes modules for Platform/Repository JAR and Share JAR)
3: remote -> org.alfresco.maven.archetype:alfresco-amp-archetype (Sample project with full support for lifecycle and rapid development of Repository AMPs (Alfresco Module Packages))
4: remote -> org.alfresco.maven.archetype:alfresco-platform-jar-archetype (Sample project with full support for lifecycle and rapid development of Platform/Repository JARs and AMPs (Alfresco Module Packages))
5: remote -> org.alfresco.maven.archetype:alfresco-share-jar-archetype (Share project with full support for lifecycle and rapid development of JARs and AMPs (Alfresco Module
        Packages))
6: remote -> org.alfresco.maven.archetype:share-amp-archetype (Share project with full support for lifecycle and rapid development of AMPs (Alfresco Module
        Packages))
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 2
Choose org.alfresco.maven.archetype:alfresco-allinone-archetype version:
1: 2.0.0-beta-1
2: 2.0.0-beta-2
3: 2.0.0-beta-3
4: 2.0.0-beta-4
5: 2.0.0
6: 2.1.0
7: 2.1.1
8: 2.2.0
9: 3.0.0
10: 3.0.1
11: 4.0.0-beta-1
12: 4.0.0-SNAPSHOT
Choose a number: 12: 11

 

Fill out the groupId, artifactId and so on. Once your project is generated you can simply execute

./run.sh build_start

If you're on Windows simply use run.bat.

We have done tests on macOS, Linux, Windows 7 and Windows 10 and so far the results have been positive.

As mentioned above we are targeting ACS 6.0 for this first beta release.

 

We plan to release the final SDK 4.0 version around the same time as ACS 6.1, which of course means we will include full support for both 6.0 and 6.1 in the final release.

 

Stay tuned for more updates on this topic - we are iterating rapidly and hope the next beta will include support for ACS 6.1 as well as a number of enhancements, documentation and more. 

 

We welcome all kinds of feedback, feel free to open issues on GitHub or ask questions below.

For any contributions, please raise pull requests against the “sdk-4.0” branch on GitHub.

 

UPDATE Jan 28: Github links updated, some links were pointing to some feature branches which have now been merged. 

I super excited to welcome Francesco Corti to the Alfresco team as our new Product Evangelist!

 

Many of you probably know Francesco from his participation in the Alfresco Community, Order of The Bee and his excellent work on AAAR.

 

Francesco is no stranger to Alfresco, he started working with Alfresco 3.4 both on Enterprise and Community edition. Has almost 20 years of experience in developing software, designing architecture and building solutions in ECM, BPM and Business Intelligence.

 

In December last year I picked up the role of Product Manager for Developer Platform, but I haven’t been able to fully transition into this role since we needed a new evangelist to take over my old role. I’m excited to finally have Francesco on the team, and I look very much forward to working with him.

 

Francesco joins us at an exciting time, as we have a lot of upcoming projects such as SDK 3.0 and Application Development Framework. Francesco will drive the evangelism strategy to ensure we maximize the impact and adoption.

 

Francesco and Kristen will work together on growing our community, host events (Tech Talk Live, Office Hours etc), create content and nourish our existing community.

 

Welcome to Alfresco, Francesco!

ohej

Alfresco SDK 3 beta 1 available

Posted by ohej Employee Aug 23, 2016

We are pleased to announce the first beta of Alfresco SDK 3.0!


This release has been in the works for a long time, and addresses a lot of the issues and limitations we currently experience with the latest SDK releases.

By releasing this first beta we wish to get feedback on the overall structure, setup, compatibility and hot reloading.

Please raise issues on Github or reach out to us directly.

We welcome all feedback.

What's new
 

    • JAR first approach, standardised JAR project structure
    • All runner logic is centralized in the Alfresco Maven Plugin (no runner projects)
    • Flexible configuration: Enable Repository? Enable Share? Enable Solr? Enable H2? Enable Tomcat? All configurable via the plugin
    • No forced parent pom
    • Low impact on your project
    • AMP as an optional assembly
    • Install 3rd party addons (and control the order they are applied
    • All-in-one, Repository and Share archetypes
    • Hot reloading via JRebel
    • Support for all releases from 5.0 to 5.2.a - across community and enterprise
    • Support for 4.2 (currently Share module requires you to add two dependencies by hand)
    • Standalone Repository archetype supports Solr4


What's yet to come

       
    • Testing - we want to provide the best possible TDD experience
    • Integration with Alfresco SPK


How to get it

 

Martin Bergljung has written up an in-depth user guide that will walk you through all the jucy details, you can find it here.

 

If you just want to get it up and running here and now, here's the steps you need:

 

EDIT: We have just released SDK 3.0.0-beta-3 to address this issue. The instructions below have been changed to reflect beta-2.

 

EDIT: Maven Central deletes staging repositories, we have deployed 3.0.0-beta-4 on our own Maven Repository to avoid the repositories going away after a week.

 

The Alfresco SDK 3.0.0-beta-4 has been released to our Maven Repository.

 

To generate a project use this command:

mvn archetype:generate -DarchetypeCatalog=https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml -Dfilter=org.alfresco.maven.archetype:

Make sure you copy the full command, otherwise it will be a long list of archetypes.

 

Select the archetype you want, enter the properties and execute run.sh (for Linux/Mac) or run.bat (for Windows).

 

Thoughts, comments or other feedback? Let us know on Github, comments below, email, IRC etc.

We've been discussing REST APIs at Alfresco for a while now. If you haven't already seen Gavin Cornwell's Tech Talk Live session 'The Future of REST APIs'  I highly recommend you check it out now.

It's hard to sum up Gavin's presentation, but the gist is that we are working on a new set of REST APIs that all follow a common set of guidelines. They are consistent, well tested, versioned which makes them extremely easy to consume. We call these 'the v1 REST APIs', however this concept is not new. We introduced the foundation for these APIs back in 4.2 along with our Cloud offering. The idea back then was to fill the missing features of CMIS so a combination of these APIs + CMIS would give you everything you need. These APIs have been documented in our official docs, however they were a bit hard to navigate and hard to consume.

This raises the question of how do we do API documentation in an efficient way. OpenAPI Specification (formerly known as Swagger) seems to do the trick in terms of describing our APIs. The cherry on the top is Swagger UI - a cool project that generates interactive documentation from an OpenAPI Specification - that even allows you to test out the APIs directly from the API Explorer.

We've put a lot of work into documenting our existing API's, which is what we're releasing today. The new 'v1 APIs' are now marked up with OpenAPI Specification (you can find the source here). We do realise that these API's don't look like much - but as mentioned above, the scope of the existing APIs was to fill the gap.

As we're adopting an 'API First' approach, we're also moving to a 'contract first' approach. This means that before we start coding any APIs we mock them up in OpenAPI Specifications, then have a review. Once the review is complete and we have ensured it conforms to our standards and guidelines we will start the work. We hope to see proposals for new APIs following this approach in the future.

We've made much progress on additional APIs, and we're continuing to invest heavily in stable, rich and powerful REST APIs this year. We already have a great set of APIs that cover file and folder operations, trashcan, renditions, live search, ticket authentication and site creation. We're adding new APIs every week and we're hoping to release a great set of APIs to community edition over the next couple of months.

We are working on a 'bleeding edge' version of the REST API Explorer - this will be a snapshot of the latest development. We hope this will be a great tool for our developer ecosystem to test the API's and provide feedback. We don't currently have a fixed date for the 'bleeding edge' version, but we will make sure to make some noise when it's ready. In case you can’t wait, you can clone the REST API Explorer source on GitHub and check out the “develop” branch. Run “mvn tomcat7:run-war” to get it up and running, however you will not be able to interact with the APIs.

You can find the online version of the REST API Explorer here: https://api-explorer.alfresco.com. It also comes bundled with the Alfresco SDK 2.2, be sure to check it out!

To report a bug please open an issue in the ALF project over at http://issues.alfresco.com, please set the “REST API” component if possible.

ohej

Introducing Alfresco SDK 2.2

Posted by ohej Employee Mar 4, 2016

I'm happy to announce that we have just released Alfresco SDK 2.2.

This release brings support for 5.1 as well as a number of bug fixes, you can see the full list here.

There are a few notable changes in SDK 2.2:

    • SDK 2.2 is only compatible with Alfresco 5.1, no support for Alfresco 5.0

 

    • Spring loaded has been disabled by default, as it will currently prevent the repository from starting up

 


Be sure to check out the latest documentation to get up and running.

We will follow up early next week with more in-depth information about the changes above, stay tuned!

As always, we welcome your feedback! Raise an issue on GitHub or catch us on #Alfresco on FreeNode.

ohej

Changes in the Developer Platform

Posted by ohej Employee Oct 19, 2015

Since our last major Alfresco One release we've been working hard to improve and shift gears on the developer platform. Over the coming months, Gab and I will be travelling around to the different Alfresco Days where we will be presenting on this topic. You can view our slides here.

You may have heard of Release Agility and Share Separation, which is just one of the things we've invested in since.

With Alfresco One 5.1 on its way, we wanted to share some of changes in the Alfresco Platform and explain how they affect you.

Share Separation

We covered this in-depth a while back, but the overall goal here is to split Share from the Repository. This way we can be more agile and release Share separately from the Repository and we provide compatibility between the different versions. This way you can upgrade the repository and leave Share as it is, or the other way around, which ultimately makes upgrading easier and more flexible

Upgrade Task Force

To make updates easier we're working on a tool called 'Update Assistant'. This tool will streamline and automate the process of installing hotfixes and service packs. It takes your customizations into account and only touches on the resources that has actually been changed for the update.

This tool will help you keep up to date on the latest service packs and hotfixes with ease. The tool will be available early next year and will support service packs and hotfixes for both the 5.0 and 5.1 code base.

Supported Extension Points

Alfresco is designed with customization in mind, but we have never defined a clear set of supported extension points, and we have not been doing a good job at hardening those extension points and APIs.

In the beginning of the year we did a big round of research where we talked to our customers and partners about various pain points relating to upgrades. One of the biggest issues we identified was customizations breaking between Alfresco releases.

With Alfresco One 5.1 and the Developer Platform project we aim to solve this by defining a clear set of supported Platform and Share Extensions.

Each extension point will be fully documented in the documentation. Eventually as we iterate through the list we will add both complete code samples, a test suite and a tutorial. You can already see some of the work in the docs. The testsuite will be running as part of the build, which helps us ensure we do not break customizations.

The list of extension points are not set in stone, and we will keep adding extension points as we find and validate them with our customers, partners and community. If you feel an extension point is missing we want to know about it! Leave a comment in JIRA, here on the blog or reach out to us by email.

The key take away from the idea of supported extension points: If you are customizing Alfresco and you keep your customizations within the supported extension points, your customizations are safe and should not break between upgrades within a major version.

Module support

Beginning from 5.1, we introduce a new way of loading modules. This means that there will be a new 'modules' folder in the installation directory. Here you can place your modules, and they will be loaded from here. No need to use MMT to install, simply drop your AMP or JAR in here - yes, we will officially support JARs as a packaging format beginning from 5.1.

We are working on Alfresco SDK 3.0 which will feature JAR support, while still supporting AMPs.

You can still continue using MMT to install AMPs, but the recommended way of installing modules will be to place them in the modules folder.

Developer Documentation revamp

We are in the process of completely revamping the developer section of the official docs. We have a completely new 'Developer Guide', 'Architecture Guide' and a 'Reference Guide'. We are taking a use case/task driven based approach, which means that the extension points will be the basis for most of the developer guide, along with tutorials and samples which lives on GitHub.

We will continue to update and publish more in-depth blog posts about these topics as we get closer to the release. We look forward to your feedback!

ohej

Alfresco SDK 2.1.1 released

Posted by ohej Employee Oct 19, 2015

I'm pleased to announce that we have just released Alfresco SDK 2.1.1.

This is a minor release, so we have fixed a number of bugs, you can see the full list here.

The biggest change for this release is that we reverted back to Java 7 for the SDK. This means that you are no longer forced to use Java 8 while using the SDK, but the SDK will support both using Java 7 and 8.

Please note that this release does not fully support Alfresco 5.1 just yet. We have started work on the next iteration of the SDK, we hope to have it ready in the coming months.

As always, we welcome your feedback! Raise an issue on GitHub or catch us on #Alfresco on FreeNode.

I also want to thank our community for their contributions, various bug reports and pull requests. We really appreciate your work and feedback, thanks!

Filter Blog

By date: By tag: