hi, i try to understand the concept of calling workflow by java, i made a simple class as below, but below nodeService.addChild i do not understand, and i cant find related document about it. appreciate for any advice.the workflow is a simple workflow with 1 parameter as a name, it will say hello to this name in the debug log thankyou.
public class TestCallWorkflowByJava extends ActionExecuterAbstractBase {
public static final String NAME = "test-workflow";
public static final String PARAM_NAME = "hello-name";
private NodeService nodeService;
private WorkflowService workflowService;
@Override
protected void addParameterDefinitions(List<ParameterDefinition> paramList) {
// Add definitions for action parameters
paramList.add(new ParameterDefinitionImpl(
PARAM_NAME,
DataTypeDefinition.TEXT,
true,
getParamDisplayLabel(PARAM_NAME)));
}
@Override
protected void executeImpl(Action action, NodeRef actionedUponNodeRef) {
if (this.nodeService.exists(actionedUponNodeRef) == true) {
String helloQName = (String) action.getParameterValue(PARAM_NAME);
NodeRef workflowPackage = this.workflowService.createPackage(null);
nodeService.addChild(workflowPackage, ?, ?, ?); // <– i dunno know what should be add to these 3 question marks.
Map<QName, Serializable> workflowProps = new HashMap<QName, Serializable>(16);
workflowProps.put(WorkflowModel.ASSOC_PACKAGE, workflowPackage);
QName PROP_QNAME_HELLO_NAME = QName.createQName(PeWorkflowModel.NAMESPACE_PE_CONTENT_MODEL, PeWorkflowModel.PROP_HELLO_NAME);
workflowProps.put(PROP_QNAME_HELLO_NAME, helloQName);
WorkflowDefinition workflowDefinition = this.workflowService.getDefinitionByName("activiti$helloWorld");
this.workflowService.startWorkflow(workflowDefinition.getId(), workflowProps);
}
}
// Setter
public void setNodeService(NodeService nodeService) {
this.nodeService = nodeService;
}
public void setWorkflowService(WorkflowService workflowService) {
this.workflowService = workflowService;
}
}