Here is the sample workflow model which is responsible to read workflow initiator(process step) and selecting that initiator as participant using dynamic participant step -
Sample process step -
package com.aem.demo.core.workflows;
import org.osgi.framework.Constants;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.adobe.granite.workflow.WorkflowException;
import com.adobe.granite.workflow.WorkflowSession;
import com.adobe.granite.workflow.exec.WorkItem;
import com.adobe.granite.workflow.exec.WorkflowData;
import com.adobe.granite.workflow.exec.WorkflowProcess;
import com.adobe.granite.workflow.metadata.MetaDataMap;
@component(property = { Constants.SERVICE_DESCRIPTION + "=This workflow step is responsible to put initiator details",
Constants.SERVICE_VENDOR + "=AEM Demo Debal", "process.label" + "=Initiator details" })
public class GetInitiatorInfoStep implements WorkflowProcess {
private final Logger logger = LoggerFactory.getLogger(GetInitiatorInfoStep.class);
@Override
public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap metaDataMap)
throws WorkflowException {
WorkflowData workflowData = workItem.getWorkflowData();
workflowData.getMetaDataMap().put("initiator", workItem.getWorkflow().getInitiator());
}
}
Dynamic Participant Step
package com.aem.demo.core.workflows;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.adobe.granite.workflow.WorkflowException;
import com.adobe.granite.workflow.WorkflowSession;
import com.adobe.granite.workflow.exec.ParticipantStepChooser;
import com.adobe.granite.workflow.exec.WorkItem;
import com.adobe.granite.workflow.metadata.MetaDataMap;
@component(service = ParticipantStepChooser.class, immediate = true, property = {"chooser.label" + "=Initiator details info" })
public class InitiatorDetailsStep implements ParticipantStepChooser {
private final Logger logger = LoggerFactory.getLogger(InitiatorDetailsStep.class);
@Override
public String getParticipant(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap metaDataMap)
throws WorkflowException {
String participant = "";
MetaDataMap map = workItem.getWorkflow().getWorkflowData().getMetaDataMap();
String reviewer = (String) map.get("initiator");
logger.info("*** Reviewer ***", reviewer);
if (!reviewer.isEmpty()) {
participant = reviewer;
} else {
participant = "reviewers";
}
return participant;
}
}
After staring the workflow on page , I have captured below details -
Impersonating as Debal -
Task is assigned to Debal Das(Initiator) and inbox notification has come -
Initiator name at workflow instance node -
Similar data were captured for Iris Mccoy -
Please refer following links- https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/workflows-get-initiator-in...
https://stackoverflow.com/questions/37341741/how-to-send-an-approval-or-rejection-email-to-workflow-...