是否可以在Adobe AEM工作流中检测当前AEM Workbench Process在哪台服务器上运行?我们希望仅在工作流在非生产服务器上运行并且我们希望在生产服务器和非生产服务器上具有相同的工作流时才对文档添加水印。
答案 0 :(得分:1)
建议的方法是使用runmodes进行此服务器/环境级别隔离。
请参阅: https://docs.adobe.com/docs/en/aem/6-2/deploy/configuring/configure-runmodes.html
简而言之,您在启动时将runmode运行时参数传递给您的实例,并且API将运行模式公开给您的逻辑,该逻辑可以针对特定的runmoded进行更改。这就是AEM如何区分作者和出版商。您可以根据需要传递任意数量的runmodes。例如,一个实例可以有生产和作者或生产和发布模式。
答案 1 :(得分:0)
您可以使用org.apache.sling.settings.SlingSettingsService
可以在下面显示的JSP中打印运行模式的示例代码段,可以在OSGI JAVA逻辑中使用。
<%@page import="org.apache.sling.settings.SlingSettingsService%>
<%
pageContext.setAttribute("runModes", sling.getService(SlingSettingsService.class).getRunModes().toString());
%>
<%= pageContext.getAttribute("runModes") %>
上面的代码片段将JSP中的输出打印为[samplecontent, author, crx3tar, crx3]
,其中我的本地实例以带有samplecontent的作者模式运行。可以在/system/console/status-slingsettings的实例中找到。
答案 2 :(得分:0)
使用“ SlingSettingsService”。可以在您的流程步骤中引用它,如下所示:
@Component(service = WorkflowProcess.class)
public class YourWorkflow implements WorkflowProcess{
@Reference private SlingSettingsService slingSettings; ...
您可以使用以下方法检查您的环境:
@Override
public void execute(WorkItem workItem, WorkflowSession wfSession, MetaDataMap args) throws WorkflowException {
if(slingSettings.getRunModes().contains("non-production-run-mode-name")) {
//TODO: apply watermark
}
}