Is there any option where we can lock the page in workflow from workflow process step with initiator or author user.
Solved! Go to Solution.
Views
Replies
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.
Views
Likes
Replies
Views
Likes
Replies