在我们的项目中,有一个要求,当我们单击父页面上的推出时,它将触发一个工作流程,一旦批准者批准工作流程,它将自动或以编程方式更新 Live Copy(区域设置)。
为此,我们使用以下代码(在代码中添加 [1]、[2]、[3]、[4])
@Override
public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap args) throws WorkflowException {
try {
ResourceResolverTemplate.execute(DAM_SERVICE, resolver -> {
if (workItem.getWorkflowData().getMetaDataMap().get("rollout_status").toString().equals("approved")) {
WorkflowData workflowData = workItem.getWorkflowData();
Map<String, Object> params = new HashMap<>();
for (Entry<String, Object> entry : workflowData.getMetaDataMap().entrySet()) {
if (entry.getKey().contains("-")) {
// replacing '-' with ':' for properties having colon eg msm:targetPath,
// msm:async.
params.put(entry.getKey().replaceFirst("-", ":"), entry.getValue());
} else {
params.put(entry.getKey(), entry.getValue());
}
}
[1]HttpServletRequest req = requestResponseFactory.createRequest("POST", "/bin/wcmcommand", params);
[2]ByteArrayOutputStream out = new ByteArrayOutputStream();
[3]HttpServletResponse response = requestResponseFactory.createResponse(out);
[4]requestProcessor.processRequest(req, response, resolver);
//rollout
}
});
} catch (Exception e) {
log.error("Dentsply rollout process step exception: {}", e.getMessage());
}
}
我能够获得 req[1] 和 response[3] 但在最后一步 [4] requestprocessor.processRequest 它正在中断。
相同的功能在我们的本地环境中运行良好,但在云中却出现了问题。
所以我在这里问的是 AEM 云中的 SlingRequestProcessor 支持吗?因为一旦代码进入下面的步骤并尝试执行 processRequest() ,我就在调试模式下进行了检查,没有任何反应。
我无法使用 processRequest() 方法以编程方式推出页面,我们还有其他选择吗?