CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

adobe/aem-cloud-service

All AEM as a Cloud Service skills: component development, Workflow model design, development, triggering, launchers, debugging, and triaging, Dispatcher config authoring, advisory, incident response, performance tuning, and security hardening, Rapid Development Environment (RDE) deployment, log inspection, snapshots, and troubleshooting via `aio aem rde`, Jackrabbit Oak query/index tuning (property, Lucene index definitions), and extracting/inventorying JCR queries (XPath, SQL2, QueryBuilder) across a codebase.

Quality

85%

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-triggering/references/workflow-foundation/

Workflow API Reference — AEM Cloud Service

WorkflowProcess (SPI)

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

Registration: @Component(service=WorkflowProcess.class, property={"process.label=My Label"})

The engine calls execute() on a Sling Job thread. Return normally to advance; throw WorkflowException to trigger retry.

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 must be 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
startWorkflow(model, data, metaData)Start with initial metadata
getModel(id)Get a deployed model by its /var/workflow/models/<name> path
getModels()List all deployed models
deployModel(model)Publish design-time model to runtime (/var/workflow/models/)
newWorkflowData(type, payload)Create a WorkflowData for JCR_PATH or BLOB
getWorkflows(filter)Query instances by state
getActiveWorkItems(filter)Get active work items for a user
complete(workItem, route)Advance a participant step
terminate(workflow)Abort a running workflow
suspend(workflow)Suspend a running workflow
resume(workflow)Resume a suspended workflow

WorkflowData (Runtime data carrier)

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

Payload types:

  • "JCR_PATH" — a JCR repository path
  • "BLOB" — binary data

MetaDataMap

com.adobe.granite.workflow.metadata.MetaDataMap — a typed property bag.

// Read with default
String status = map.get("approvalStatus", "PENDING");
Long count = map.get("retryCount", Long.class);

// Write
map.put("approver", "john.doe");
map.put("timestamp", new Date());

SimpleMetaDataMap is the standard implementation for testing.

WorkflowModel Graph

InterfaceMethodPurpose
WorkflowModelgetId()/var/workflow/models/<name> path
WorkflowModelgetNodes()All WorkflowNode objects
WorkflowModelgetTransitions()All WorkflowTransition objects
WorkflowNodegetType()START, END, PROCESS, PARTICIPANT, DYNAMIC_PARTICIPANT, OR_SPLIT, AND_SPLIT, AND_JOIN, EXTERNAL_PROCESS
WorkflowNodegetMetaData()MetaDataMap of step args (e.g. PROCESS, PARTICIPANT)
WorkflowTransitiongetRule()ECMA/Groovy rule string (for OR splits)

WorkItem

MethodPurpose
getWorkflowData()Get WorkflowData (payload + instance metadata)
getMetaDataMap()Step-scoped metadata (not shared across steps)
getNode()The WorkflowNode this work item is at
getWorkflow()The Workflow instance
getId()Unique work item ID

skills

README.md

tile.json