All AEM 6.5 LTS skills: Workflow model design, development, triggering, launchers, debugging, and triaging; Dispatcher config authoring, advisory, incident response, performance tuning, and security hardening; Replication agent configuration, content activation, API usage, and troubleshooting for AEM 6.5 LTS and AMS environments; Jackrabbit Oak query/index tuning (property, Lucene index definitions); and extracting/inventorying JCR queries (XPath, SQL2, QueryBuilder) across a codebase.
79%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Beta Skill: This skill is in beta and under active development. Results should be reviewed carefully before use in production. Report issues at https://github.com/adobe/skills/issues
Implement custom workflow components for AEM 6.5 LTS: WorkflowProcess, ParticipantStepChooser, OSGi registration, metadata handling, and error patterns.
autoInstallBundle) or Package Manager.Development Progress
- [ ] 1) Identify what the step does: process (auto) or participant (human) or dynamic participant
- [ ] 2) Create Java class implementing WorkflowProcess or ParticipantStepChooser
- [ ] 3) Register with @Component/@Service (Felix SCR) or @Component (DS R6) with service property
- [ ] 4) Read step arguments from MetaDataMap args
- [ ] 5) Access payload via item.getWorkflowData().getPayload().toString()
- [ ] 6) Read/write workflow instance metadata via item.getWorkflowData().getMetaDataMap()
- [ ] 7) Return normally to advance; throw WorkflowException to trigger retry
- [ ] 8) Deploy; verify process.label appears in Workflow Model Editor step picker@Component(
service = WorkflowProcess.class,
property = {
"process.label=My Custom Process Step",
"service.description=Short description"
}
)
public class MyCustomProcess implements WorkflowProcess {
@Reference
private ResourceResolverFactory resolverFactory;
@Override
public void execute(WorkItem item, WorkflowSession session, MetaDataMap args)
throws WorkflowException {
String payloadPath = item.getWorkflowData().getPayload().toString();
String myArg = args.get("myArgKey", "defaultValue");
item.getWorkflowData().getMetaDataMap().put("processedBy", "my-step");
// ... do work ...
}
}@Component(metatype = false)
@Service(value = WorkflowProcess.class)
@Property(name = "process.label", value = "My Custom Process Step")
public class MyCustomProcess implements WorkflowProcess {
@Reference
private SlingRepository repository;
@Override
public void execute(WorkItem item, WorkflowSession session, MetaDataMap args)
throws WorkflowException {
// same body as DS R6 example
}
}@Component(
service = ParticipantStepChooser.class,
property = {"chooser.label=Department Head Chooser"}
)
public class DepartmentHeadChooser implements ParticipantStepChooser {
@Override
public String getParticipant(WorkItem workItem, WorkflowSession session,
MetaDataMap args) throws WorkflowException {
String department = workItem.getWorkflowData()
.getMetaDataMap().get("department", "marketing");
return department + "-managers";
}
}loginAdministrative(). Always use a service user mapped via ServiceUserMapper.metatype=false unless exposing configuration to the OSGi console.WorkflowException for retryable errors; log and rethrow for unexpected errors..tessl-plugin
skills
aem-replication
aem-workflow
dispatcher
ensure-agents-md
references
tuning-oak-query-indexes