Expand my Community achievements bar.

Dive into Adobe Summit 2024! Explore curated list of AEM sessions & labs, register, connect with experts, ask questions, engage, and share insights. Don't miss the excitement.

How to invoke any servlet at publish instance in workflow step ?

Avatar

Community Advisor

I want to invoke the custom servlet to perform some action in publish server through custom workflow step. Anyone has idea how to achieve this scenario ?

5 Replies

Avatar

Level 10

Yes - but why not implement a service (as opposed to a Servlet) then you can use @Reference annotation from within your custom step to invoke the Java logic.

Avatar

Community Advisor

as per the acceptance criteria i have to invoke servlet from custom workflow step. Currently i am using CloseableHttpClient closeableHttpClient to invoke servlet.

Avatar

Level 10

Based on your project's design and requirements whatever you choose to use (either servlet or service or just a component), the underlying logic would primarily work in same manner -  Get hold of server's runmode and process your custom code.

To get the run mode in server side code -

Slice-CQ/WcmModeModel.java at master · Cognifide/Slice-CQ · GitHub

or use

final WCMMode mode = WCMMode.fromRequest(request);

if (null == mode || WCMMode.DISABLED.equals(mode)) { // do something }

*you would find WCMMode in uber-jar

Create your workflow, register it and use WCMMode to excute it only on publish server. Once everything is done, configure this workflow step in your custom workflow.

Example -

Adobe Experience Manager Help | Invoking Adobe Experience Manager Workflows using the AEM Java API

Hope that helps.

Avatar

Level 10

If you requirement is to invoke a Servlet as opposed to an AEM Service, then write Java code from your custom step that can perform a GET operation on a servlet.

How do I do a HTTP GET in Java? - Stack Overflow