CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

adobe/aem-6-5-lts

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.

Quality

79%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

api-reference.mdskills/aem-workflow/workflow-model-design/references/workflow-foundation/

Workflow API Reference — AEM 6.5 LTS

WorkflowProcess (SPI)

// com.adobe.granite.workflow.exec.WorkflowProcess
public interface WorkflowProcess {
    void execute(WorkItem item, WorkflowSession session, MetaDataMap args)
            throws WorkflowException;
}

Registration (DS R6 — preferred):

@Component(service=WorkflowProcess.class, property={"process.label=My Label"})
public class MyProcess implements WorkflowProcess { ... }

Registration (Felix SCR — still valid on 6.5):

@Component(metatype=false)
@Service(value=WorkflowProcess.class)
@Property(name="process.label", value="My Label")
public class MyProcess implements WorkflowProcess { ... }

ParticipantStepChooser (SPI)

// com.adobe.granite.workflow.exec.ParticipantStepChooser
public interface ParticipantStepChooser {
    String SERVICE_PROPERTY_LABEL = "chooser.label";
    String getParticipant(WorkItem workItem, WorkflowSession session,
                          MetaDataMap args) throws WorkflowException;
}

Registration: @Component(service=ParticipantStepChooser.class, property={"chooser.label=My Chooser"})

Return value: a valid JCR rep:principalName (user ID or group ID).

WorkflowSession (API)

Obtain via resourceResolver.adaptTo(WorkflowSession.class).

MethodPurpose
startWorkflow(model, data)Start a new workflow instance
getModel(id)Get deployed model by /var/workflow/models/<name> path
deployModel(model)Sync design-time model to runtime (/var/workflow/models/)
newWorkflowData(type, payload)Create WorkflowData for JCR_PATH or BLOB
getWorkflows(filter)Query instances by state
complete(workItem, route)Advance a participant step
terminate(workflow)Abort a running workflow
suspend(workflow) / resume(workflow)Pause/resume

WorkflowData

WorkflowData data = session.newWorkflowData("JCR_PATH", "/content/mypage");
data.getMetaDataMap().put("initiatorNote", "from batch");
Workflow instance = session.startWorkflow(model, data);

MetaDataMap

com.adobe.granite.workflow.metadata.MetaDataMap — typed property bag, persisted with the workflow instance.

MetaDataMap meta = item.getWorkflowData().getMetaDataMap();
String status = meta.get("status", "PENDING");  // with default
meta.put("status", "APPROVED");

WorkItem

MethodPurpose
getWorkflowData()Instance-level data (payload + shared metadata)
getMetaDataMap()Step-scoped metadata
getNode()Current WorkflowNode
getWorkflow()Workflow instance

WorkflowModel Graph

InterfaceMethodPurpose
WorkflowModelgetId()/var/workflow/models/<name> path
WorkflowModelgetNodes()All WorkflowNode objects
WorkflowNodegetType()START, END, PROCESS, PARTICIPANT, DYNAMIC_PARTICIPANT, OR_SPLIT, AND_SPLIT, AND_JOIN
WorkflowNodegetMetaData()Step configuration (PROCESS, PARTICIPANT, etc.)
WorkflowTransitiongetRule()ECMA/Groovy rule string for OR splits

skills

README.md

tile.json