SlideShare a Scribd company logo
Porting a Custom
Transformer to the New
Transform Service
Alan Davis
Learn. Connect. Collaborate.
ACS 6.0 Transformers
ACS repo
Command
Transformer
Transformer
Proxy
Engine
Transformer
Command
101010
Learn. Connect. Collaborate.
ACS 6.0 Transformers
ACS repo
Command
Transformer
Transformer
Proxy
Engine
Transformer
Command
101010
Learn. Connect. Collaborate.
ACS 6.0 Transformers
ACS repo
Command
Transformer
Transformer
Proxy
Engine
Transformer
Command
101010
Learn. Connect. Collaborate.
ACS 6.1 Transformers
ACS repo
Command
Transformer
Transformer
Proxy
Rendition Service 2
(asynchronous)
Engine
Transformer
Command
Transform
Service
Router
101010
Learn. Connect. Collaborate.
ACS 6.1 Transformers
ACS repo
Command
Transformer
Transformer
Proxy
Rendition Service 2
(asynchronous)
Engine
Transformer
Command
Transform
Service
Router
101010
Learn. Connect. Collaborate.
The Proxy
AbstractContentTransformer2
transformInternal(…)
MyTransformer
transformInternal(…)
AbstractContentTransformer2
transformInternal(…)
MyTransformer
transformLocal(…)
transformRemote(…)
AbstractRemoteContentTransformer
remoteTransformerClient
transformInternal(…)
transformLocal(…)
transformRemote((…)
@Override
protected void transformRemote(
RemoteTransformerClient remoteTransformerClient,
ContentReader reader, ContentWriter writer,
TransformationOptions options,
String sourceMimetype, String targetMimetype,
String sourceExtension, String targetExtension,
String targetEncoding) throws Exception
{
long timeout = options.getTimeoutMs();
String language = getLanguage(options);
String dialect = getDialect(options);
remoteTransformerClient.request(reader, writer,
sourceMimetype, sourceExtension,
targetExtension, timeout, logger,
”language", language,
”dialect", dialect);
}
Learn. Connect. Collaborate.
The Proxy
AbstractContentTransformer2
transformInternal(…)
MyTransformer
transformInternal(…)
AbstractContentTransformer2
transformInternal(…)
MyTransformer
transformLocal(…)
transformRemote(…)
AbstractRemoteContentTransformer
remoteTransformerClient
transformInternal(…)
transformLocal(…)
transformRemote((…)
@Override
protected void transformRemote(
RemoteTransformerClient remoteTransformerClient,
ContentReader reader, ContentWriter writer,
TransformationOptions options,
String sourceMimetype, String targetMimetype,
String sourceExtension, String targetExtension,
String targetEncoding) throws Exception
{
long timeout = options.getTimeoutMs();
String language = getLanguage(options);
String dialect = getDialect(options);
remoteTransformerClient.request(reader, writer,
sourceMimetype, sourceExtension,
targetExtension, timeout, logger,
”language", language,
”dialect", dialect);
}
Learn. Connect. Collaborate.
Docker Image
The Transform Engine
Spring Boot App
Command
XxxController
transform(…)
processTransform(…)
alfresco-transformer-base
AbstractTransformerController
public void processTransform(
File sourceFile, File targetFile,
Map<String, String> transformOptions,
Long timeout)
{
// Code to build command line options
commandExecutor.run(options, sourceFile,
targetFile, timeout);
}
@PostMapping(value = "/transform", consumes =
MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<Resource> transform(
HttpServletRequest request,
@RequestParam("file")
MultipartFile sourceMultipartFile,
@RequestParam("targetExtension")
String targetExtension,
@RequestParam("language") String language,
@RequestParam("dialect") String dialect,
@RequestParam(value = "timeout",
required = false) Long timeout)
{
// Code to obtain source file
// Code to build command line options
commandExecutor.run(options, sourceFile,
targetFile, timeout);
// Code to return target file as an attachment
}
Learn. Connect. Collaborate.
Docker Image
The Transform Engine
Spring Boot App
Command
XxxController
transform(…)
processTransform(…)
alfresco-transformer-base
AbstractTransformerController
public void processTransform(
File sourceFile, File targetFile,
Map<String, String> transformOptions,
Long timeout)
{
// Code to build command line options
commandExecutor.run(options, sourceFile,
targetFile, timeout);
}
@PostMapping(value = "/transform", consumes =
MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<Resource> transform(
HttpServletRequest request,
@RequestParam("file")
MultipartFile sourceMultipartFile,
@RequestParam("targetExtension")
String targetExtension,
@RequestParam("language") String language,
@RequestParam("dialect") String dialect,
@RequestParam(value = "timeout",
required = false) Long timeout)
{
// Code to obtain source file
// Code to build command line options
commandExecutor.run(options, sourceFile,
targetFile, timeout);
// Code to return target file as an attachment
}
Learn. Connect. Collaborate.
Configuration
ACS repo
Transform
Service
transform-service-
config.json
Transform Service
Registry
??
…
{
"name": "pdfRenderer",
"transformOptions": [
{"value": {"name": "page"}},
{"value": {"name": "width"}},
{"value": {"name": "height"}},
{"value": {"name": "allowPdfEnlargement"}},
{"value": {"name": "maintainPdfAspectRatio"}}
],
"supportedSourceAndTargetList": [
{"sourceExt": "pdf", "targetExt": "png" }
]
},
…
Rendition Service 2
Proxy
Learn. Connect. Collaborate.
Configuration
ACS repo
Transform
Service
transform-service-
config.json
Transform Service
Registry
??
…
{
"name": "pdfRenderer",
"transformOptions": [
{"value": {"name": "page"}},
{"value": {"name": "width"}},
{"value": {"name": "height"}},
{"value": {"name": "allowPdfEnlargement"}},
{"value": {"name": "maintainPdfAspectRatio"}}
],
"supportedSourceAndTargetList": [
{"sourceExt": "pdf", "targetExt": "png" }
]
},
…
Rendition Service 2
Proxy
Learn. Connect. Collaborate.
Configuration
ACS repo
Transform
Service
transform.service.enabled=true
local.transform.service.enabled=true
alfresco-pdf-renderer.url=http://localhost:8090/
img.url=http://localhost:8091/
jodconverter.url=http://localhost:8092/
tika.url=http://localhost:8093/
transform-service-
config.json
alfresco-
global.properties
Transform Service
Registry
??
…
{
"name": "pdfRenderer",
"transformOptions": [
{"value": {"name": "page"}},
{"value": {"name": "width"}},
{"value": {"name": "height"}},
{"value": {"name": "allowPdfEnlargement"}},
{"value": {"name": "maintainPdfAspectRatio"}}
],
"supportedSourceAndTargetList": [
{"sourceExt": "pdf", "targetExt": "png" }
]
},
…
Rendition Service 2
Proxy
Learn. Connect. Collaborate.
Configuration
ACS repo
Transform
Service
transform.service.enabled=true
local.transform.service.enabled=true
alfresco-pdf-renderer.url=http://localhost:8090/
img.url=http://localhost:8091/
jodconverter.url=http://localhost:8092/
tika.url=http://localhost:8093/
transform-service-
config.json
alfresco-
global.properties
Transform Service
Registry
??
…
{
"name": "pdfRenderer",
"transformOptions": [
{"value": {"name": "page"}},
{"value": {"name": "width"}},
{"value": {"name": "height"}},
{"value": {"name": "allowPdfEnlargement"}},
{"value": {"name": "maintainPdfAspectRatio"}}
],
"supportedSourceAndTargetList": [
{"sourceExt": "pdf", "targetExt": "png" }
]
},
…
Rendition Service 2
Proxy
Learn. Connect. Collaborate.
When is the Transform Service called?
ACS repo
Transform
ServiceTransform Service
Registry
…
{
"name": "pdfRenderer",
"transformOptions": [
{"value": {"name": "page"}},
{"value": {"name": "width"}},
{"value": {"name": "height"}},
{"value": {"name": "allowPdfEnlargement"}},
{"value": {"name": "maintainPdfAspectRatio"}}
],
"supportedSourceAndTargetList": [
{"sourceExt": "pdf", "targetExt": "png" }
]
},
…
Rendition Service 2
Proxy
• Rendition Service 2 has been called:
– V1 REST API
– on content update
– original Rendition Service
• RenditionDefinition2 exist
• Transform Service supports the transform
Transformer
Learn. Connect. Collaborate.
When is the Transform Service called?
ACS repo
Transform
ServiceTransform Service
Registry
…
{
"name": "pdfRenderer",
"transformOptions": [
{"value": {"name": "page"}},
{"value": {"name": "width"}},
{"value": {"name": "height"}},
{"value": {"name": "allowPdfEnlargement"}},
{"value": {"name": "maintainPdfAspectRatio"}}
],
"supportedSourceAndTargetList": [
{"sourceExt": "pdf", "targetExt": "png" }
]
},
…
Rendition Service 2
Proxy
• Rendition Service 2 has been called:
– V1 REST API
– on content update
– original Rendition Service
• RenditionDefinition2 exist
• Transform Service supports the transform
Transformer
Learn. Connect. Collaborate.
Simplification of Transform Options
Transformation
Options
<bean id="renditionDefinition2DocLib" class="org.alfresco.repo.rendition2.RenditionDefinition2I
<constructor-arg name="renditionName" value="doclib"/>
<constructor-arg name="targetMimetype" value="image/png"/>
<constructor-arg name="transformOptions">
<map>
<entry key="resizeWidth" value="100"/>
<entry key="resizeHeight" value="100"/>
<entry key="allowEnlargement" value="false" />
<entry key="maintainAspectRatio" value="true"/>
<entry key="thumbnail" value="true"/>
<entry key="timeout" value="${system.thumbnail.definition.default.timeoutMs}" />
</map>
</constructor-arg>
<constructor-arg name="registry" ref="renditionDefinitionRegistry2"/>
</bean>
Transform Options
key value
key value
key value
Learn. Connect. Collaborate.
Simplification of Transform Options
Transformation
Options
<bean id="renditionDefinition2DocLib" class="org.alfresco.repo.rendition2.RenditionDefinition2I
<constructor-arg name="renditionName" value="doclib"/>
<constructor-arg name="targetMimetype" value="image/png"/>
<constructor-arg name="transformOptions">
<map>
<entry key="resizeWidth" value="100"/>
<entry key="resizeHeight" value="100"/>
<entry key="allowEnlargement" value="false" />
<entry key="maintainAspectRatio" value="true"/>
<entry key="thumbnail" value="true"/>
<entry key="timeout" value="${system.thumbnail.definition.default.timeoutMs}" />
</map>
</constructor-arg>
<constructor-arg name="registry" ref="renditionDefinitionRegistry2"/>
</bean>
Transform Options
key value
key value
key value
Learn. Connect. Collaborate.
Future No promises - It might not happen
• Public access to
– alfresco-transformer-base
– sample transformers
• Local Router
– for use by the community
– help develop new Engines
• Remaining transformers
• New transforms metadata extraction
document analysis
AI
translation
image to text
text to voice
Learn. Connect. Collaborate.
Future No promises - It might not happen
• Public access to
– alfresco-transformer-base
– sample transformers
• Local Router
– for use by the community
– help develop new Engines
• Remaining transformers
• New transforms metadata extraction
document analysis
AI
translation
image to text
text to voice
Learn. Connect. Collaborate.
Future No promises - It might not happen
• Public access to
– alfresco-transformer-base
– sample transformers
• Local Router
– for use by the community
– help develop new Engines
• Remaining transformers
• New transforms metadata extraction
document analysis
AI
translation
image to text
text to voice
Porting a Custom
Transformer to the New
Transform Service
Thank you!

More Related Content

KEY
Message Queueing - by an MQ noob
KEY
Message queueing
PDF
Matteo Collina | Take your HTTP server to Ludicrous Speed | Codmeotion Madrid...
PDF
Writing Redis in Python with asyncio
PDF
node.js practical guide to serverside javascript
PDF
Dependency Injection with Dagger 2 presentation
PPTX
A Groovy Kind of Java (San Francisco Java User Group)
PDF
Serve Meals, Not Ingredients (ChefConf 2015)
Message Queueing - by an MQ noob
Message queueing
Matteo Collina | Take your HTTP server to Ludicrous Speed | Codmeotion Madrid...
Writing Redis in Python with asyncio
node.js practical guide to serverside javascript
Dependency Injection with Dagger 2 presentation
A Groovy Kind of Java (San Francisco Java User Group)
Serve Meals, Not Ingredients (ChefConf 2015)

Similar to Alfresco 2019 DevCon lightning talk alan davis (20)

PDF
ScalaDays Amsterdam - Don't block yourself
PDF
stackconf 2024 | Insights into Managed Service Provision A STACKIT Retrospect...
PDF
Cassandra 2.1 boot camp, Overview
PDF
Dev309 from asgard to zuul - netflix oss-final
PDF
Server-Side Push: Comet, Web Sockets come of age (OSCON 2013)
PPTX
Streamline Hadoop DevOps with Apache Ambari
PPTX
Streamline Hadoop DevOps with Apache Ambari
PPTX
2014 Taverna tutorial REST services
PDF
Asynchronous Architectures for Implementing Scalable Cloud Services - Evan Co...
PDF
Developing Cacheable PHP Applications - PHP SP 2024
PPTX
How to perform debounce in react
PDF
Designing and Implementing a Real-time Data Lake with Dynamically Changing Sc...
PDF
PostgreSQL High-Availability and Geographic Locality using consul
PDF
Server Side Swift with Swag
ODP
Meet Up - Spark Stream Processing + Kafka
PPTX
Streamline Hadoop DevOps with Apache Ambari
PDF
Apache Con NA 2013 - Cassandra Internals
PDF
Time for Functions
PDF
Streaming Way to Webscale: How We Scale Bitly via Streaming
PDF
Scala modules
ScalaDays Amsterdam - Don't block yourself
stackconf 2024 | Insights into Managed Service Provision A STACKIT Retrospect...
Cassandra 2.1 boot camp, Overview
Dev309 from asgard to zuul - netflix oss-final
Server-Side Push: Comet, Web Sockets come of age (OSCON 2013)
Streamline Hadoop DevOps with Apache Ambari
Streamline Hadoop DevOps with Apache Ambari
2014 Taverna tutorial REST services
Asynchronous Architectures for Implementing Scalable Cloud Services - Evan Co...
Developing Cacheable PHP Applications - PHP SP 2024
How to perform debounce in react
Designing and Implementing a Real-time Data Lake with Dynamically Changing Sc...
PostgreSQL High-Availability and Geographic Locality using consul
Server Side Swift with Swag
Meet Up - Spark Stream Processing + Kafka
Streamline Hadoop DevOps with Apache Ambari
Apache Con NA 2013 - Cassandra Internals
Time for Functions
Streaming Way to Webscale: How We Scale Bitly via Streaming
Scala modules
Ad

Recently uploaded (20)

PPTX
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PPTX
Welding lecture in detail for understanding
PPTX
bas. eng. economics group 4 presentation 1.pptx
PPTX
web development for engineering and engineering
PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PDF
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
PDF
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PPTX
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PPT
Project quality management in manufacturing
PPTX
MCN 401 KTU-2019-PPE KITS-MODULE 2.pptx
PPTX
Geodesy 1.pptx...............................................
PDF
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
PPTX
OOP with Java - Java Introduction (Basics)
PDF
Digital Logic Computer Design lecture notes
PPTX
CYBER-CRIMES AND SECURITY A guide to understanding
PPTX
Lecture Notes Electrical Wiring System Components
PPTX
Internet of Things (IOT) - A guide to understanding
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
Welding lecture in detail for understanding
bas. eng. economics group 4 presentation 1.pptx
web development for engineering and engineering
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
Embodied AI: Ushering in the Next Era of Intelligent Systems
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Project quality management in manufacturing
MCN 401 KTU-2019-PPE KITS-MODULE 2.pptx
Geodesy 1.pptx...............................................
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
OOP with Java - Java Introduction (Basics)
Digital Logic Computer Design lecture notes
CYBER-CRIMES AND SECURITY A guide to understanding
Lecture Notes Electrical Wiring System Components
Internet of Things (IOT) - A guide to understanding
Ad

Alfresco 2019 DevCon lightning talk alan davis

  • 1. Porting a Custom Transformer to the New Transform Service Alan Davis
  • 2. Learn. Connect. Collaborate. ACS 6.0 Transformers ACS repo Command Transformer Transformer Proxy Engine Transformer Command 101010
  • 3. Learn. Connect. Collaborate. ACS 6.0 Transformers ACS repo Command Transformer Transformer Proxy Engine Transformer Command 101010
  • 4. Learn. Connect. Collaborate. ACS 6.0 Transformers ACS repo Command Transformer Transformer Proxy Engine Transformer Command 101010
  • 5. Learn. Connect. Collaborate. ACS 6.1 Transformers ACS repo Command Transformer Transformer Proxy Rendition Service 2 (asynchronous) Engine Transformer Command Transform Service Router 101010
  • 6. Learn. Connect. Collaborate. ACS 6.1 Transformers ACS repo Command Transformer Transformer Proxy Rendition Service 2 (asynchronous) Engine Transformer Command Transform Service Router 101010
  • 7. Learn. Connect. Collaborate. The Proxy AbstractContentTransformer2 transformInternal(…) MyTransformer transformInternal(…) AbstractContentTransformer2 transformInternal(…) MyTransformer transformLocal(…) transformRemote(…) AbstractRemoteContentTransformer remoteTransformerClient transformInternal(…) transformLocal(…) transformRemote((…) @Override protected void transformRemote( RemoteTransformerClient remoteTransformerClient, ContentReader reader, ContentWriter writer, TransformationOptions options, String sourceMimetype, String targetMimetype, String sourceExtension, String targetExtension, String targetEncoding) throws Exception { long timeout = options.getTimeoutMs(); String language = getLanguage(options); String dialect = getDialect(options); remoteTransformerClient.request(reader, writer, sourceMimetype, sourceExtension, targetExtension, timeout, logger, ”language", language, ”dialect", dialect); }
  • 8. Learn. Connect. Collaborate. The Proxy AbstractContentTransformer2 transformInternal(…) MyTransformer transformInternal(…) AbstractContentTransformer2 transformInternal(…) MyTransformer transformLocal(…) transformRemote(…) AbstractRemoteContentTransformer remoteTransformerClient transformInternal(…) transformLocal(…) transformRemote((…) @Override protected void transformRemote( RemoteTransformerClient remoteTransformerClient, ContentReader reader, ContentWriter writer, TransformationOptions options, String sourceMimetype, String targetMimetype, String sourceExtension, String targetExtension, String targetEncoding) throws Exception { long timeout = options.getTimeoutMs(); String language = getLanguage(options); String dialect = getDialect(options); remoteTransformerClient.request(reader, writer, sourceMimetype, sourceExtension, targetExtension, timeout, logger, ”language", language, ”dialect", dialect); }
  • 9. Learn. Connect. Collaborate. Docker Image The Transform Engine Spring Boot App Command XxxController transform(…) processTransform(…) alfresco-transformer-base AbstractTransformerController public void processTransform( File sourceFile, File targetFile, Map<String, String> transformOptions, Long timeout) { // Code to build command line options commandExecutor.run(options, sourceFile, targetFile, timeout); } @PostMapping(value = "/transform", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ResponseEntity<Resource> transform( HttpServletRequest request, @RequestParam("file") MultipartFile sourceMultipartFile, @RequestParam("targetExtension") String targetExtension, @RequestParam("language") String language, @RequestParam("dialect") String dialect, @RequestParam(value = "timeout", required = false) Long timeout) { // Code to obtain source file // Code to build command line options commandExecutor.run(options, sourceFile, targetFile, timeout); // Code to return target file as an attachment }
  • 10. Learn. Connect. Collaborate. Docker Image The Transform Engine Spring Boot App Command XxxController transform(…) processTransform(…) alfresco-transformer-base AbstractTransformerController public void processTransform( File sourceFile, File targetFile, Map<String, String> transformOptions, Long timeout) { // Code to build command line options commandExecutor.run(options, sourceFile, targetFile, timeout); } @PostMapping(value = "/transform", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ResponseEntity<Resource> transform( HttpServletRequest request, @RequestParam("file") MultipartFile sourceMultipartFile, @RequestParam("targetExtension") String targetExtension, @RequestParam("language") String language, @RequestParam("dialect") String dialect, @RequestParam(value = "timeout", required = false) Long timeout) { // Code to obtain source file // Code to build command line options commandExecutor.run(options, sourceFile, targetFile, timeout); // Code to return target file as an attachment }
  • 11. Learn. Connect. Collaborate. Configuration ACS repo Transform Service transform-service- config.json Transform Service Registry ?? … { "name": "pdfRenderer", "transformOptions": [ {"value": {"name": "page"}}, {"value": {"name": "width"}}, {"value": {"name": "height"}}, {"value": {"name": "allowPdfEnlargement"}}, {"value": {"name": "maintainPdfAspectRatio"}} ], "supportedSourceAndTargetList": [ {"sourceExt": "pdf", "targetExt": "png" } ] }, … Rendition Service 2 Proxy
  • 12. Learn. Connect. Collaborate. Configuration ACS repo Transform Service transform-service- config.json Transform Service Registry ?? … { "name": "pdfRenderer", "transformOptions": [ {"value": {"name": "page"}}, {"value": {"name": "width"}}, {"value": {"name": "height"}}, {"value": {"name": "allowPdfEnlargement"}}, {"value": {"name": "maintainPdfAspectRatio"}} ], "supportedSourceAndTargetList": [ {"sourceExt": "pdf", "targetExt": "png" } ] }, … Rendition Service 2 Proxy
  • 13. Learn. Connect. Collaborate. Configuration ACS repo Transform Service transform.service.enabled=true local.transform.service.enabled=true alfresco-pdf-renderer.url=http://localhost:8090/ img.url=http://localhost:8091/ jodconverter.url=http://localhost:8092/ tika.url=http://localhost:8093/ transform-service- config.json alfresco- global.properties Transform Service Registry ?? … { "name": "pdfRenderer", "transformOptions": [ {"value": {"name": "page"}}, {"value": {"name": "width"}}, {"value": {"name": "height"}}, {"value": {"name": "allowPdfEnlargement"}}, {"value": {"name": "maintainPdfAspectRatio"}} ], "supportedSourceAndTargetList": [ {"sourceExt": "pdf", "targetExt": "png" } ] }, … Rendition Service 2 Proxy
  • 14. Learn. Connect. Collaborate. Configuration ACS repo Transform Service transform.service.enabled=true local.transform.service.enabled=true alfresco-pdf-renderer.url=http://localhost:8090/ img.url=http://localhost:8091/ jodconverter.url=http://localhost:8092/ tika.url=http://localhost:8093/ transform-service- config.json alfresco- global.properties Transform Service Registry ?? … { "name": "pdfRenderer", "transformOptions": [ {"value": {"name": "page"}}, {"value": {"name": "width"}}, {"value": {"name": "height"}}, {"value": {"name": "allowPdfEnlargement"}}, {"value": {"name": "maintainPdfAspectRatio"}} ], "supportedSourceAndTargetList": [ {"sourceExt": "pdf", "targetExt": "png" } ] }, … Rendition Service 2 Proxy
  • 15. Learn. Connect. Collaborate. When is the Transform Service called? ACS repo Transform ServiceTransform Service Registry … { "name": "pdfRenderer", "transformOptions": [ {"value": {"name": "page"}}, {"value": {"name": "width"}}, {"value": {"name": "height"}}, {"value": {"name": "allowPdfEnlargement"}}, {"value": {"name": "maintainPdfAspectRatio"}} ], "supportedSourceAndTargetList": [ {"sourceExt": "pdf", "targetExt": "png" } ] }, … Rendition Service 2 Proxy • Rendition Service 2 has been called: – V1 REST API – on content update – original Rendition Service • RenditionDefinition2 exist • Transform Service supports the transform Transformer
  • 16. Learn. Connect. Collaborate. When is the Transform Service called? ACS repo Transform ServiceTransform Service Registry … { "name": "pdfRenderer", "transformOptions": [ {"value": {"name": "page"}}, {"value": {"name": "width"}}, {"value": {"name": "height"}}, {"value": {"name": "allowPdfEnlargement"}}, {"value": {"name": "maintainPdfAspectRatio"}} ], "supportedSourceAndTargetList": [ {"sourceExt": "pdf", "targetExt": "png" } ] }, … Rendition Service 2 Proxy • Rendition Service 2 has been called: – V1 REST API – on content update – original Rendition Service • RenditionDefinition2 exist • Transform Service supports the transform Transformer
  • 17. Learn. Connect. Collaborate. Simplification of Transform Options Transformation Options <bean id="renditionDefinition2DocLib" class="org.alfresco.repo.rendition2.RenditionDefinition2I <constructor-arg name="renditionName" value="doclib"/> <constructor-arg name="targetMimetype" value="image/png"/> <constructor-arg name="transformOptions"> <map> <entry key="resizeWidth" value="100"/> <entry key="resizeHeight" value="100"/> <entry key="allowEnlargement" value="false" /> <entry key="maintainAspectRatio" value="true"/> <entry key="thumbnail" value="true"/> <entry key="timeout" value="${system.thumbnail.definition.default.timeoutMs}" /> </map> </constructor-arg> <constructor-arg name="registry" ref="renditionDefinitionRegistry2"/> </bean> Transform Options key value key value key value
  • 18. Learn. Connect. Collaborate. Simplification of Transform Options Transformation Options <bean id="renditionDefinition2DocLib" class="org.alfresco.repo.rendition2.RenditionDefinition2I <constructor-arg name="renditionName" value="doclib"/> <constructor-arg name="targetMimetype" value="image/png"/> <constructor-arg name="transformOptions"> <map> <entry key="resizeWidth" value="100"/> <entry key="resizeHeight" value="100"/> <entry key="allowEnlargement" value="false" /> <entry key="maintainAspectRatio" value="true"/> <entry key="thumbnail" value="true"/> <entry key="timeout" value="${system.thumbnail.definition.default.timeoutMs}" /> </map> </constructor-arg> <constructor-arg name="registry" ref="renditionDefinitionRegistry2"/> </bean> Transform Options key value key value key value
  • 19. Learn. Connect. Collaborate. Future No promises - It might not happen • Public access to – alfresco-transformer-base – sample transformers • Local Router – for use by the community – help develop new Engines • Remaining transformers • New transforms metadata extraction document analysis AI translation image to text text to voice
  • 20. Learn. Connect. Collaborate. Future No promises - It might not happen • Public access to – alfresco-transformer-base – sample transformers • Local Router – for use by the community – help develop new Engines • Remaining transformers • New transforms metadata extraction document analysis AI translation image to text text to voice
  • 21. Learn. Connect. Collaborate. Future No promises - It might not happen • Public access to – alfresco-transformer-base – sample transformers • Local Router – for use by the community – help develop new Engines • Remaining transformers • New transforms metadata extraction document analysis AI translation image to text text to voice
  • 22. Porting a Custom Transformer to the New Transform Service Thank you!