Martin Bergljung, Alfresco Technical Author, introduced the new Alfresco SDK 5.0. This interesting talk generated quite a few questions, some we didn't have time to answer on the day. However, here are all the questions and subsequent answers.
Any plans to provide non-java SDKs? Python, C#, C++, and Swift come to mind immediately.
The Java client for the ACS REST API is impleented using the OpenAPI YAML (autogenerated). The same principle can be used to generate the REST API clients for any languages. Regarding the Event API it requires effort to develop/use it in a different language than Java, but it is doable.
Is SDK 5 not available in Maven Central? If not is it planned to be?
It is not yet, but it will be there as well.
For several reasons (security, performance), it may make sense to provide a way to disable the behaviours, and make them disabled by default. Is there a way, at this point, to disable the behaviours that execute the custom code?
Nothing really changed on ACS 7 about this topic. If it was possible on previous versions, it is possible also in ACS 7. And it is valid also the other way around: If it was not possible on previous versions, it is not possible neither in ACS 7.
Is there / will there be a ACS (REST API) <-> Java REST API client compatibility matrix?
The Java client for the ACS REST API is autogenerated starting from the OpenAPI YAML. A compatibility matrix will be defined, but it is based on the ACS v1 REST API.
Could you please elaborate how with SDK 5 we can have easier upgrades if I want to extend OOTB WebScript say Download API?
SDK 5 does not support the webscript use case. It is in the roadmap, but not developed yet.
Is there still "transaction" when the out-of-process consists of multiple Alfresco REST API calls?
Hi there. On SDK5, is there any BOM dependency, in order to avoid the SDK?
The SDK 5 spring boot starters. The SDK parent is there to bring in a version of Spring boot app parent that has been tested.
Does the events framework support RM disposition events? For example, a record transitioned from a cutoff disposition to a destroy disposition. Will this state change raise an event?
We used to handle it using Policies and Behaviour. Does it mean they are going to be obsolete?
Nope, the eventing mechanism is an addition to the existing ACS features and nothing is deprecated (yet).
If you have an ACS 7.0 cluster, and ActiveMQ is running on each node in the cluster, will SDK 5 still be able to listen to events on all the ActiveMQ brokers in the cluster?
Not with this version of the SDK. It would be good to understand more about the use case because maybe there is a sustainable workaround.
I see no reason why permission related events should be Enterprise-only. What is the reason for this decision and how fast can that be corrected?
This is the first iteration of the new mechanism with a first major version of the SDK. Alfresco would like to hear feedback and improve in the next iterations. This is very much a topic where Alfresco would like to hear from the field about a feedback.
SDK 5 is a great job and as far as I understand it is only usable through Spring Boot? Is this true? And can it be used without Spring Boot?
Yes, it can be used with a Java/non-Java frameworks. The suggested approach is the one described in the documentation, but nothing prevent developers to use a different approach/framework/language.
1. Do you recommend out-of-process extension as a candidate for microservices and
2) SDK for APS coming any time soon
3) should we in future separate webscripts out of core into the out-of-process extensions
1) Yes, it is naturally designed for it.
2) See the answer above.
3) This use case is not covered yet by the Event SDK, but it is something that Alfresco wants to provide in the future.
Is there any plan to support/introduce out-of-process sdk in different languages like python?
Please see answer above.
Is it possible to stop generating any out of the box events or generate new type of events that are not supported out of the box?
This is something that Alfresco plan to allow though a different layer where a developer "subscribe" to one or more events instead of "all" the events. Stay tuned, more info will be provided probably as part of ACS 7.1.
We have customized web scripts deployed in Alfresco6.1 , If we upgrade to 7, the Out-of-Process extensions SDK5.x is compatible with customized web scripts?
You mention SDK 5 is Alfresco 7 specific. Does that mean that the REST-API is also changed? Could I use the SDK 5 to only wrap the REST-API and target a Alfresco 6.2 EE environment?
The ACS REST API v1 is almost the same between ACS 6.2 and ACS 7.0. Minor changes (and enhacements) have been added to ACS 7.0. Please note that this is not a supported use case.
In principle you can use the SDK 5 to interact with the common services avaialble in ACS 6,2, but no eventing mechanism.
What about authentication options next to basic auth / oauth2? Let's say user creates a node and you want to create a new node for the user. This will be a different user if you use the basic auth. How do you make sure that created node is the same as the current logged in user? How do you solve this?
If the ACS REST allow this, you can do it. The benefit of having an "out-of-process" extension mechanism is that you can do everything that the REST API allows the developer to do.
Is it only enterprise version feature or community versions are also supported?
SDK 5 + Eventing + REST API are all supported for Community AND Enterprise Editions. In this version there a few things available for Enteprise Edition only (permission).
Content model injection be supported at all or there are any plans to support it in future ? I see sdk5 is totally for repo layer and not for share.
It is planned to be supported in the future, accordingly with the feedback and priorities that it wil be done.