2016-07-05 2 views
0

Как написать AEM - Пользовательский рабочий процесс с проверкой содержимого автора?AEM - Пользовательский рабочий процесс с проверкой содержимого автора?

например: Я хочу проверить содержание HTML автора во время активации страницы. Я хочу проверить все гиперссылки в авторском контенте, основанные на конкретной ссылке, не работают рабочий процесс или передают рабочий процесс для активации.

ответ

1

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()); 
       } 
      } 
     } 
    } 
} 
+0

Благодарности nateyolles для приятного объяснения. – Sandeep

+0

Спасибо nateyolles за хорошее объяснение. Пожалуйста, игнорируйте мой глупый вопрос, я новичок в AEM. Как я могу отлаживать код службы на локальном компьютере? – Sandeep

+0

В этой статье приведены пошаговые инструкции: https://helpx.adobe.com/experience-manager/kb/CQ5HowToSetupRemoteDebuggingWithEclipse.html. Если у вас возникнут дополнительные вопросы, было бы лучше начать новый вопрос в StackOverflow, поскольку этот разговор не относится к исходному вопросу. – nateyolles

Смежные вопросы