


Is there any option where we can lock the page in workflow from workflow process step with initiator or author user.
Views
Replies
Sign in to like this content
Total Likes
Hi @sai2teja
Passing same code from @DEBAL_DAS
Page lock workflow process step -
/** * */ package com.aem.demo.core.workflows; import java.util.Objects; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; import org.osgi.framework.Constants; import org.osgi.service.component.annotations.Component; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.adobe.granite.workflow.WorkflowException; import com.adobe.granite.workflow.WorkflowSession; import com.adobe.granite.workflow.exec.WorkItem; import com.adobe.granite.workflow.exec.WorkflowProcess; import com.adobe.granite.workflow.metadata.MetaDataMap; import com.day.cq.wcm.api.Page; import com.day.cq.wcm.api.WCMException; /** * @author debal This workflow step is responsible to lock AEM page. */ @Component(property = { Constants.SERVICE_DESCRIPTION + "=This workflow step is responsible to lock AEM page", Constants.SERVICE_VENDOR + "=AEM Demo Debal", "process.label" + "=Page lock process" }) public class PageLockWorkflowStep implements WorkflowProcess { private final Logger logger = LoggerFactory.getLogger(PageLockWorkflowStep.class); @Override public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap metaDataMap) throws WorkflowException { String payloadPath = workItem.getWorkflowData().getPayload().toString(); ResourceResolver resourceResolver = workflowSession.adaptTo(ResourceResolver.class); Resource resource = resourceResolver.getResource(payloadPath); if (Objects.nonNull(resource) && resource.isResourceType("cq:Page")) { Page page = resource.adaptTo(Page.class); try { page.lock(); } catch (WCMException e) { logger.error("Unable to lock the given Page", e.getMessage()); } } else { logger.info("**** Resource isn't a page**** {} "); } } }
Similar question here: https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/lock-and-unlock-publish-pa...
Regards,
Santosh
Hi @sai2teja
Passing same code from @DEBAL_DAS
Page lock workflow process step -
/** * */ package com.aem.demo.core.workflows; import java.util.Objects; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; import org.osgi.framework.Constants; import org.osgi.service.component.annotations.Component; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.adobe.granite.workflow.WorkflowException; import com.adobe.granite.workflow.WorkflowSession; import com.adobe.granite.workflow.exec.WorkItem; import com.adobe.granite.workflow.exec.WorkflowProcess; import com.adobe.granite.workflow.metadata.MetaDataMap; import com.day.cq.wcm.api.Page; import com.day.cq.wcm.api.WCMException; /** * @author debal This workflow step is responsible to lock AEM page. */ @Component(property = { Constants.SERVICE_DESCRIPTION + "=This workflow step is responsible to lock AEM page", Constants.SERVICE_VENDOR + "=AEM Demo Debal", "process.label" + "=Page lock process" }) public class PageLockWorkflowStep implements WorkflowProcess { private final Logger logger = LoggerFactory.getLogger(PageLockWorkflowStep.class); @Override public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap metaDataMap) throws WorkflowException { String payloadPath = workItem.getWorkflowData().getPayload().toString(); ResourceResolver resourceResolver = workflowSession.adaptTo(ResourceResolver.class); Resource resource = resourceResolver.getResource(payloadPath); if (Objects.nonNull(resource) && resource.isResourceType("cq:Page")) { Page page = resource.adaptTo(Page.class); try { page.lock(); } catch (WCMException e) { logger.error("Unable to lock the given Page", e.getMessage()); } } else { logger.info("**** Resource isn't a page**** {} "); } } }
Similar question here: https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/lock-and-unlock-publish-pa...
Regards,
Santosh
Hi @sai2teja ,
There is OOTB process to lock payload. You can't lock for specific user. You you want payload/page to be looked for specific user, You have to implement custom functionality.
OOTB process - Lock Payload Process
Hey Sunil,
I tried in the below mentioned 3 ways:
1 - By impersonating with author user I tried to lock the page with author it didn't worked.
2 - By getting author user session, I tried to lock the page it didn't worked as well.
3 - I tried updating the lockowner property value to author, but no luck.