私たちのプロジェクトでは、親ページでロールアウトをクリックするたびに 1 つのワークフローがトリガーされ、承認者がワークフローを承認すると、ライブ コピー (ロケール) が自動的またはプログラムによって更新されるという要件があります。
これを実現するために、以下のコードを使用しています (コードに [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 で壊れています。
オンプレミス環境では同じ機能が正常に機能していますが、クラウドでは壊れています。
ここで私の質問は、SlingRequestProcessor が AEM クラウドでサポートされていることですか? コードがステップの下に来て processRequest() を実行しようとすると、デバッグモードでチェックしたため、何も起こりません。
processRequest() メソッドを使用してプログラムでページをロールアウトできません。他のオプションはありますか?