如何编写具有作者内容验证功能的AEM-自定义工作流程?
例如:我想在进行页面激活时验证作者HTML内容。我想检查作者内容中的所有超链接,基于特定的链接未能通过工作流程或通过工作流程进行激活。
该AEM工作流程文档是对这个问题非常有帮助。您将需要创建实现该WorkflowProcess
接口的服务。完成后,您可以在http:// localhost:4502 / workflow上创建新的工作流,或者可以在http:// localhost:4502 / cf#/ etc / workflow / models / request_for_activation.html上更新默认的激活工作流。。放入一个新的Process Step
,将设置Advance Handler
为true,然后将Process
其设置为您的服务。别忘了Save
按一下按钮。
在您的服务中,您可以访问会话,从而可以访问资源解析器以及已激活资源的路径。这就是获取资源并针对其属性运行自定义代码所需的全部。如果自定义验证返回false,则可以使用终止工作流程wfsession.terminateWorkflow(item.getWorkflow())
,否则工作流程将继续,因为您将其设置为自动前进。
这是工作流程过程步骤的粗略概述:
@Component
@Service
@Properties({
@Property(name = Constants.SERVICE_DESCRIPTION, value = "Workflow step description"),
@Property(name = Constants.SERVICE_VENDOR, value = "Company Name"),
@Property(name = "process.label", value = "Process Label will show in the workflow dropdown") })
public class MyCustomStep implements WorkflowProcess {
public void execute(WorkItem item, WorkflowSession wfsession, MetaDataMap args) throws WorkflowException {
ResourceResolver resolver = wfsession.adaptTo(ResourceResolver.class);
if (resolver != null) {
// Get the payload: the activated resource
String path = item.getWorkflowData().getPayload().toString();
Resource resource = resolver.getResource(path);
if (resource != null) {
ValueMap properties = resource.adaptTo(ValueMap.class);
String propertyToCheck = properties.get("myPropertyName", String.class);
if (!customValidationMethod(propertyToCheck)) {
// Terminate workflow
wfsession.terminateWorkflow(item.getWorkflow());
}
}
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句