AEM Workflow documentation очень полезно по этой теме. Вам нужно будет создать службу, которая реализует интерфейс WorkflowProcess
. Как только это будет сделано, вы можете создать новый рабочий процесс на http://localhost:4502/workflow или вы можете обновить рабочий процесс активации по умолчанию по адресу http://localhost:4502/cf#/etc/workflow/models/request_for_activation.html. Снимите новый Process Step
, установите Advance Handler
в true и Process
к вашим услугам. Не забудьте нажать кнопку Save
.
В вашем сервисе у вас есть доступ к сеансу и, следовательно, к ресурсному резольверу, а также к пути к активированному ресурсу. Это все, что вам нужно, чтобы получить ресурс и запустить свой собственный код против его свойств. Если ваша пользовательская проверка возвращается к ошибке, вы можете завершить рабочий процесс, используя 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());
}
}
}
}
}
Благодарности nateyolles для приятного объяснения. – Sandeep
Спасибо nateyolles за хорошее объяснение. Пожалуйста, игнорируйте мой глупый вопрос, я новичок в AEM. Как я могу отлаживать код службы на локальном компьютере? – Sandeep
В этой статье приведены пошаговые инструкции: https://helpx.adobe.com/experience-manager/kb/CQ5HowToSetupRemoteDebuggingWithEclipse.html. Если у вас возникнут дополнительные вопросы, было бы лучше начать новый вопрос в StackOverflow, поскольку этот разговор не относится к исходному вопросу. – nateyolles