Abstract
Triggering workflow from Java and automate the process to create translation project using workflow.
Code snippet
import com.day.cq.workflow.model.WorkflowModel;
import com.day.cq.workflow.WorkflowService;
@Reference
private WorkflowService workflowService;
WorkflowSession wfSession = workflowService.getWorkflowSession(session);
// We can have any workflow model here - For creating language copy I am using create_language_copy workflow.
String workflowName = "/var/workflow/models/wcm-translation/create_language_copy";
// Get the workflow model
WorkflowModel wfModel = wfSession.getModel(workflowName);
String languageEnMasterPath = "master page path";
// Get the workflow data
// Workflow Data - Provide the master language page path from where the language copy to be created
WorkflowData wfData = wfSession.newWorkflowData("JCR_PATH", languageEnMasterPath);
// Add meta data values
final Map<String, Object> workflowMetadata = new HashMap<>();
workflowMetadata.put("model", "/etc/workflow/models/wcm-translation/create_language_copy/jcr:content/model");
// If parent pages to be auto created when not present - false to not create
workflowMetadata.put("createNonEmptyAncestors", true);
// Pass true if child pages to be created
workflowMetadata.put("deep", false);
workflowMetadata.put("projectFolderLanguageRefCount", "Count of total language masters available");
// Pass comma separated languages list like en,fr,es etc. For only 1 language pass workflowMetadata.put("language", "fr")
workflowMetadata.put("languageList", "comma separated language list");
//Pass project type - add_structure_only will create only structure no translation will happen
workflowMetadata.put("projectType", "add_structure_only");
workflowMetadata.put("projectTitle", "");
// Run the Workflow.
wfSession.startWorkflow(wfModel, wfData, workflowMetadata);
Read Full Blog
Q&A
Please use this thread to ask the related questions.
Kautuk Sahni